AJAX-части плагинов в Cotonti Siena. Принципы и примеры

Filed under: Cotonti Siena CMF

AJAX-части плагинов в Cotonti Siena

 

техническое руководство (фактическое описание, основано по-большей части из старой документации разработчиков Cotonti.)

 

1. Общий принцип работы AJAX-частей

В архитектуре Cotonti Siena AJAX-обработчики реализуются через части плагина (plugin parts), которые используют hook ajax.

Фактические свойства таких частей:

  • выполняются как самостоятельный обработчик запроса

  • вызываются через plug.php

  • используются для AJAX-запросов

  • не выполняют стандартный вывод страницы (шаблон сайта)

Документация Cotonti указывает:

  • AJAX-часть плагина должна использовать hook ajax

  • она вызывается через параметр r в plug.php

  • стандартный вывод страницы не используется


2. URL вызова AJAX-части

AJAX-обработчик вызывается через:

 
plug.php?r=plugin_code
 

где:

 
plugin_code
 

— код плагина.

При таком вызове Cotonti:

  1. определяет код плагина

  2. ищет plugin parts

  3. выполняет часть с hook ajax

Документация подтверждает, что при вызове могут подключаться файлы:

 
plugins/plugin_code/plugin_code.php
plugins/plugin_code/plugin_code.ajax.php
 

или другой файл плагина, объявленный как AJAX-часть.


3. Расположение файлов

AJAX-части находятся в каталоге плагина:

 
plugins/
   your_plugin/
      your_plugin.ajax.php
 

или:

 
plugins/
   your_plugin/
      any_name.php
 

Имя файла не фиксировано.

Единственное требование — наличие hook ajax.


4. Заголовок AJAX-части

Каждая часть плагина содержит служебный блок расширения.

Пример:

 
<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=ajax
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');
 

Факты:

  • Hooks=ajax регистрирует файл как AJAX-часть

  • defined('COT_CODE') используется для защиты от прямого запуска файла


5. Поведение header.php и footer.php

В режиме AJAX Cotonti изменяет процесс вывода страницы.

Фактическое поведение:

  • header.php и footer.php не выводятся

  • но могут подключаться системой для внутренней инициализации

Это сделано для сохранения совместимости с кодом системы.

Таким образом:

компонентповедение
header.phpможет подключаться
footer.phpможет подключаться
вывод HTML страницыотсутствует

6. Определение AJAX-режима

Cotonti автоматически определяет AJAX-запрос.

В системе устанавливается константа:

 
COT_AJAX
 

Если запрос выполнен через AJAX:

 
COT_AJAX = TRUE
 

Если обычный HTTP-запрос:

 
COT_AJAX = FALSE
 

Это значение доступно во всех частях системы.

Пример использования:

 
if (COT_AJAX)
{
    // код для AJAX
}
else
{
    // обычный режим
}
 

7. Обработка параметров запроса

В Cotonti принято использовать функцию:

 
cot_import()
 

Она выполняет:

  • чтение параметров

  • фильтрацию

  • приведение типов

Пример:

 
$id = cot_import('id', 'G', 'INT');
$name = cot_import('name', 'P', 'TXT');
 

Параметры:

параметрзначение
GGET
PPOST
INTцелое число
TXTстрока

8. Формат ответа AJAX-части

Cotonti не ограничивает формат ответа.

Разработчик может вернуть:

  • JSON

  • HTML

  • текст

  • XML

Документация указывает, что система не содержит специальных API для JSON/XML, так как PHP уже предоставляет необходимые функции.


Пример JSON-ответа

 
header('Content-Type: application/json');

echo json_encode($data);
 

Пример HTML-ответа

 
echo "<div>Result</div>";
 

9. Пример реальной AJAX-части плагина

Пример обработчика:

 
<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=ajax
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

$code = cot_import('code', 'G', 'ALP');

$options = $db->query(
    "SELECT DISTINCT auth_option FROM $db_auth WHERE auth_code = ?",
    array($code)
)->fetchAll(PDO::FETCH_COLUMN);

header('Content-Type: application/json');
echo json_encode($options);
 

Фактические операции:

  1. чтение параметра code

  2. SQL-запрос

  3. формирование массива

  4. возврат JSON

Такой пример используется в официальном руководстве разработки плагинов.


10. Вызов AJAX-части через JavaScript

AJAX-часть может вызываться через jQuery или обычный JavaScript.

Пример:

 
$.get('plug.php?r=my_plugin', { id: 123, name: 'Peter' },
  function(data){
    alert("Data Loaded: " + data);
  });
 

Это пример из документации Cotonti.


11. Параметр безопасности x

При отправке данных необходимо передавать параметр защиты:

 
x
 

Он содержит значение функции:

 
sed_sourcekey()
 

Этот параметр используется:

методтребование
POSTобязательно
GETиногда

Пример POST:

 
$.post('plug.php?r=my_plugin',
{
  a: 'send',
  name: 'Peter',
  x: 'SOURCEKEY'
});
 

Документация описывает этот параметр как anti-XSS защиту.


12. AJAX-helpers в Cotonti

Cotonti содержит клиентские вспомогательные инструменты.

Главная функция:

 
ajaxSend()
 

Она:

  • собирает данные формы

  • выполняет AJAX-запрос

  • поддерживает GET и POST

Пример:

 
ajaxSend({
  url: 'plug.php?r=my_plugin',
  method: 'POST',
  formId: 'myformid'
})
 

Функция описана в разделе AJAX helpers.


13. Автоматическая AJAX-навигация

Cotonti поддерживает автоматическую AJAX-навигацию интерфейса.

Условия:

  • включён jQuery

  • включён AJAX в настройках системы

После этого:

 
class="ajax"
 

на ссылке или форме активирует AJAX-загрузку.

Пример:

 
<a href="page.php?al=test" class="ajax">Load page</a>
 
 

Результат загружается в контейнер:

 
<div id="ajaxBlock">
 

Это стандартный контейнер AJAX-вывода.


14. AJAX-режим в модулях

В Cotonti Siena AJAX поддерживается не только в плагинах.

Начиная с версии:

 
0.9.0
 

AJAX-режим может использоваться:

  • в плагинах

  • в модулях

Система автоматически устанавливает COT_AJAX для асинхронных запросов.


15. Фактические выводы

Актуальные свойства AJAX-частей в Cotonti Siena:

  1. AJAX-обработчик реализуется как plugin part с hook ajax.

  2. Вызывается через plug.php?r=plugin_code.

  3. Файл может иметь любое имя, если объявлен с Hooks=ajax.

  4. Стандартный вывод страницы не выполняется.

  5. Система определяет AJAX-режим через константу COT_AJAX.

  6. Ответ может быть любого формата (JSON, HTML, текст).

  7. Для получения данных используется cot_import().

  8. Для защиты форм используется параметр x (sourcekey).

  9. На клиентской стороне доступна вспомогательная функция ajaxSend().

  10. AJAX-режим может использоваться в плагинах и модулях системы.

Все перечисленные пункты собраны из по-большей части старой документации разработчиков Cotonti.

3 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-07-21 00:03

  • Page published: 2026-03-10 08:45
  • Last update: 2026-03-10 08:45

Similar pages

AJAX-части в плагинах Cotonti Siena
1 AJAX-части в плагинах Cotonti SienaВведение в AJAX-части плагиновВ Cotonti Siena AJAX-части плагинов представляют собой
Cotonti Siena CMF • 2026-03-10 08:30 webitproff
Список плагинов для Cotonti Siena
2 Каталог плагинов Cotonti Siena, для расширения функционала своего сайта до маркетплейса, фриланс-биржи,
User Blog • 2020-07-17 05:15 webitproff
Dialog System v2.6.1 module Cotonti - чаты пользователей на AJAX
3 Модуль общения пользователей сайта через AJAX в виде диалогов, в режиме онлайн, без обновления страницы,  для сайтов на
User Blog • 2020-07-17 05:15 webitproff
Вывод дат в шаблонах Cotonti (Форматы и примеры в тегах)
4 Вывод дат в шаблонах CotontiНастройка формата отображения: локально и глобальноВ системе Cotonti все даты внутри базы
Примеры использования тегов для вывода дат разных форматов в шаблонах
5 Примеры использования стандартных форматов в шаблонахНиже приведены примеры шаблонных тегов для каждого