<<<1...5...10...16171819202122>>>
Принимаем вопросы от населения
Kabak |
|
---|---|
Здравствуйте. Нужна ваша помощь по AJAX в Cotonti У меня в header.tpl есть запрос : <a href="index.php?ask_q=ask_question" class="btn btn-ask btn-block" class="ajax" rel="get-ajaxKabak"><i class="fa fa-question-circle fa-lg"></i> {PHP.L.Ask}</a> И нужно чтобы в index.tpl заполнился вот такой DIV : <div id="ajaxKabak"> {ASK_QUESTION} </div> в php файле плагина вот такой код : $ask_q = cot_import('ask_q','G','TXT'); if ( COT_AJAX ) if ( $ask_q == 'ask_question'){ $t->assign(array( 'ASK_QUESTION' => cot_question('page', $pag['page_id'], 'question'), )); } $t->parse('QUESTION'); но он не отрисовывает ничего , если я ставлю проверку if ( COT_AJAX ) Как только я её ремлю, то блок {ASK_QUESTION} заполняется. Что я не так делаю с AJAX ? |
Dr2005alex |
|
---|---|
$ask_q = cot_import('ask_q','G','TXT'); if ( $ask_q == 'ask_question'){ if ( COT_AJAX ) { cot_sendheaders(); // для нормальной кодировки echo cot_question('page', $pag['page_id'], 'question'); exit; } else{ $t->assign(array( 'ASK_QUESTION' => cot_question('page', $pag['page_id'], 'question'), )); } } $t->parse('QUESTION'); или $ask_q = cot_import('ask_q','G','TXT'); if ( $ask_q == 'ask_question'){ $t->assign(array( 'ASK_QUESTION' => cot_question('page', $pag['page_id'], 'question'), )); } $t->parse('QUESTION'); if ( COT_AJAX ){ cot_sendheaders(); echo $t->text('QUESTION'); exit; }
WebKaa.ru - Cotonti Relax
|
Kabak |
|
---|---|
Спасибо Но получается что AJAX у меня не работает ( AJAX включён ) . Переменная
Моджет я тэги в шаблоне ни так определяю или ещё что ? |
Dayver |
|
---|---|
Добавьте в свою ссылку параметр _ajax=1 <a href="index.php?ask_q=ask_question&_ajax=1" class="btn btn-ask btn-block" class="ajax" rel="get-ajaxKabak"><i class="fa fa-question-circle fa-lg"></i> {PHP.L.Ask}</a> Что бы проверка аяксовости запроса https://github.com/Cotonti/Cotonti/blob/master/system/common.php#L201 наверняка сработала Pavlo Tkachenko aka Dayver
|
Kabak |
|
---|---|
<div id="ajaxKabak"> {ASK_QUESTION} </div> Что я делаю не так ? |
Dr2005alex |
|
---|---|
может поможет понять http://www.cotonti.com/docs/devel/ajax_helpers http://mycotonti.ru/docs/devel/AJAX-Helpers-v-Cotonti А вообще нужно видеть весь код и желательно в отдельной теме.
WebKaa.ru - Cotonti Relax
|
Kabak |
|
---|---|
Ещё вопрос. А CKEditor с ajax работатет ? Потому что как только включаю <?php /* ==================== [BEGIN_COT_EXT] Hooks=index.tags Tags=index.tpl:{ASK_QUESTION} [END_COT_EXT] ==================== */ defined('COT_CODE') or die('Wrong URL'); require_once cot_incfile('question', 'plug'); require_once cot_langfile('question', 'plug'); $question_text = cot_import('questiontext','P','HTM'); $question_owner = cot_import('owner','G','INT'); $ask_q = cot_import('ask_q','G','TXT'); //if ( COT_AJAX ) if ( $ask_q == 'ask_question'){ $t->assign(array( 'QUESTION' => cot_question('page', $pag['page_id'], 'question'), )); } $t->parse('QUESTION'); question.functions.php <?php defined('COT_CODE') or die('Wrong URL'); global $R, $L; require_once cot_incfile('page', 'module'); require_once cot_incfile('forms'); require_once cot_langfile('question'); function cot_question($ext_name, $code, $cat = '') { global $id, $db, $db_users, $cfg, $usr, $L, $sys, $R, $env, $structure; $can_question = 1; $t = new XTemplate(cot_tplfile('question', 'plug')); $editor = ($cfg['plugin']['question']['question_markup']) ? 'input_textarea_medieditor' : ''; $t->assign(array( 'QUESTION_FORM_SEND' => cot_url('plug', "e=comments&a=send&area=$ext_name&cat=$cat&item=$code"), 'QUESTION_FORM_AUTHOR' => 'save author id somehow!!!', 'QUESTION_FORM_TEXT' => $can_question ? cot_textarea('questiontext', $questiontext, 7, 120, '', $editor) : '', )); $t->parse('QUESTION'); return $t->text('QUESTION'); } question.tpl <!-- BEGIN: QUESTION --> <div class="p20"> <strong class="dbl mb15">{PHP.L.Your_question}</strong> <form id="answer" name="answer" action="{QUESTION_FORM_POST}" method="post" class="ajax post-ajaxBlock"> <div>{QUESTION_FORM_TEXT}</div> <button class="btn btn-success mt10" type="submit">{PHP.L.Ask_Question}</button> </form> </div> <!-- END: QUESTION --> header.tpl с кнопкой по нажатию на которую должен заполниться тэг {QUESTION} в index.tpl <a href="index.php?ask_q=ask_question" class="btn btn-ask btn-block askclosed"><i class="fa fa-question-circle fa-lg"></i> {PHP.L.Ask}</a> index.tpl Блок в который выводится окно CKEditor <div id="ajaxBlock"> {QUESTION} </div> Что не так я делаю ? |
Dayver |
|
---|---|
В .index.tags.php строка с parse() лишняя. И где в ссылке в аттрибуте class значение ajax?
Добавлено 6 минут спустя: Ну а _ajax=1 не место в ссылках по которым переход возможен. Этот параметр предназначен только для ссылок которые должны открываться только аяксом.Pavlo Tkachenko aka Dayver
|
|
Отредактировано: Dayver (25.03.2015 18:20, 10 лет назад) |
Kabak |
|
---|---|
Да, переделал <a href="index.php?ask_q=ask_question" class="btn btn-ask btn-block askclosed ajax"> $t->parse('QUESTION'); в .index.tags.php убрал - работает. Теперь выводит как положено в рамках сайта, а не на чистом листе, но окно CKEditor превращается в простой edit text фрейм. |
Dr2005alex |
|
---|---|
CKeditor c ajax не дружит. В моем плагине rcomm есть пример танцев с бубном с этим редактором. (если читаешь код). Приходилось создавать скрытый input и в него по событию отправки формы через ajax копировать данные из редактора. Ну а на стороне сервера принимать данные со скрытого инпута. Только так удалось обойти проблему НЕ отправки данных редактора через ajax. Там свои заморочки. WebKaa.ru - Cotonti Relax
|
Dayver |
|
---|---|
Странно у меня проблем никаких нет с этим виз.редактором и аяксом - себе делал редактирование страницы вызовом по аяксу, правда редактор в инлайн режиме
Pavlo Tkachenko aka Dayver
|
Kabak |
|
---|---|
инлайн режиме - это как ? А как можно без jquery и прочего, с использованием только ajax средств Cotonti, вывести форму CKEditor ? Без ajax форма CKEditor работает в моём коде. ( хотел нагрузку на сервер уменьшить ) |
Dayver |
|
---|---|
#40750 Kabak:это вот так http://ckeditor.com/demo#inline , а чем вам джикверя мешает? Pavlo Tkachenko aka Dayver
|
Kabak |
|
---|---|
Тем, что это всё получается - каша понятная только разработчику плагина. Часть плагина там, часть там. Мне не нравится такие решения. |
Kort |
|
---|---|
Примерное тело плагина: <?php /* ==================== [BEGIN_COT_EXT] Hooks=ajax [END_COT_EXT] ==================== */ /** * Test plugin * @package Test */ defined('COT_CODE') or die('Wrong URL'); require_once cot_incfile('forms'); $action = cot_import('a','P','TXT'); $t = new XTemplate(cot_tplfile('test', 'plug')); if ($action == 'asked') { $t->parse('MAIN.RESULT'); } else { $t->assign(array( 'ASK_FORM_ACTION' => cot_url('plug','r=test&a=asked'), 'ASK_FORM_QUESTION' => cot_textarea('question', $question, 10, 120, 'id="question"', 'input_textarea_minieditor'), )); $t->parse('MAIN.AJAXFORM'); } Примерное тело шаблона: <!-- BEGIN: MAIN --> <script src="plugins/ckeditor/lib/ckeditor.js" type="text/javascript"></script> <script>CKEDITOR.replace('question', {toolbar: 'Medium'});</script> <div class="p20"> <!-- BEGIN: AJAXFORM --> <form id="ask_form" action="{ASK_FORM_ACTION}" method="post" class="ajax post-ajax-ask"> <div class="mb10">{ASK_FORM_QUESTION}</div> <button type="submit" class="submit btn btn-success">{PHP.L.Submit}</button> </form> <!-- END: AJAXFORM --> <!-- BEGIN: RESULT --> This is result <!-- END: RESULT --> </div> <!-- END: MAIN --> У Булата была похожая проблема )) SED.by - создание сайтов, разработка плагинов и тем для Котонти
|