Создание макроса для сайта
В большинстве случаев, если на сайт требуется добавить новый функционал, не обязательно писать новый модуль. Достаточно к уже существующему модулю добавить новый макрос. Макрос можно вызвать как из шаблона, так и из любого обработчика системы. Макросы могут быть созданы у любого модуля системы.
Создание макроса
С точки зрения системы, макрос – это метод класса с определенным названием, файл которого расположен в папке модуля. Файл называется «macros.php». Класс, содержащийся в нем, имеет следующую структуру:
// Название класса состоит из названия модуля (в данном случае "core") и слова "Macros". class coreMacros { // Пример макроса, вызывается в шаблоне строчкой %core.macros1()% public function macros1() { return 1; } // Пример макроса с параметрами, вызывается в шаблоне строчкой %core.macros2(412, 343)% public function macros2($param1, $param2) { return 2; } }
Название класса состоит из названия модуля (в данном случае "core") и слова "Macros". Каждый публичный метод данного класса является макросом и доступен для вызова из шаблона оформления. У макроса может быть любое количество параметров. В теле макроса могут использоваться любые системные классы в соответствии с их назначением. Макрос должен возвращать результат своего выполнения в виде строки. Вы так же можете использовать конструктор класса, если хотите для всех макросов задать действие по умолчанию.
Таким образом, что бы добавить новый макрос, достаточно добавить в соответствующий класс новый метод.
Вызов макроса через Ajax
Функционал макроса можно вызвать с помощью Ajax-запроса, обратившись через специальный URL. Формат URL`a следующий:
/ajax/имя_модуля/имя_макроса/параметр1/параметр2/…/параметрN
В качестве ответа сервера придет контент сгенерированный макросом.
При обращении через URL, действует ряд ограничений на передаваемые параметры. Так они могут содержать только символы латинского алфавита, цифры, и знаки «_» и «-». В ближайшее время появится интерфейс для вызова нужных макросов с помощью POST запроса.
Примеры с использованием JQuery:
Получить общий список новостей с 10 по 15 в оформлении шаблона news_list.
$.get("/ajax/structure/objList/news/news_list/5/0/10", function(data) { alert(data); });
Получить путь к странице по ID.
$.get("/ajax/structure/getObjURL/765", function(data) { alert(data); });