<<<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 - создание сайтов, разработка плагинов и тем для Котонти
|