Создание макроса для сайта


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

Создание макроса

С точки зрения системы, макрос – это метод класса с определенным названием, файл которого расположен в папке модуля. Файл называется «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);	
});