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-09-07 15:27

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • 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
Dialog System v2.6.1 module Cotonti - чаты пользователей на AJAX
2 Модуль общения пользователей сайта через AJAX в виде диалогов, в режиме онлайн, без обновления страницы,  для сайтов на
User Blog • 2020-07-17 05:15 webitproff
Список плагинов для Cotonti Siena
3 Каталог плагинов Cotonti Siena, для расширения функционала своего сайта до маркетплейса, фриланс-биржи,
User Blog • 2020-07-17 05:15 webitproff
Вывод дат в шаблонах Cotonti (Форматы и примеры в тегах)
4 Вывод дат в шаблонах CotontiНастройка формата отображения: локально и глобальноВ системе Cotonti все даты внутри базы
Примеры: Вывод даты создания статьи в Cotonti: все способы
5 Все основные модификации вывода даты создания статьи (PAGE_CREATED) В этой статье рассмотрены все основные способы