Aktar CMS » Документация » Свои модули

Пишем свои модули под Aktar CMS

Aktar разрабатывался скорее как самостоятельная программа, нежели набор встраиваемых модулей. Поэтому общее пространство имен он использует, как ему заблагорассудится. Чтобы исключить конфликт имен, воспользуйтесь классом checkout
Поместите его перед вызовом вашего кода, примерно так:
^use[checkout.p]
^checkout:file[/путь/к/вашему/файлу]
Результат выполнения кода выведет с небольшими неточностями те переменные, которые устанавливаются в вашем коде, но уже присутствуют в MAIN, и те операторы из вашего файла, которые уже есть в MAIN к моменту запуска checkout. Локальные переменные методов проверяются так же, как глобальные, и если вы точно уверены в их локальности, можете не обращать внимания на их упоминание.

Важно, чтобы проверяемый файл подключался ПОСЛЕ вызова checkout.

Полезно пользоваться системными переменными и операторами, описания которых есть в руководстве.

Существует несколько способов встраивания кода в систему.

1. Стандартными для Парсера средствами. Однако, в www/login это имеет смысл только в качестве патча, отсылаемого в репозиторий.

2. В качестве подпрограммы, которая выполняется внутри MAIN. Для этого:
1. Создайте файл подпрограмма.p в www/modules
2. Внутри него обязательно определите три оператора:
@подпрограмма_settings[set], возвращающий таблицу с настройками (см. любую другую подпрограмму для примера)
@подпрограмма_info[set], который может дать дополнительную информацию в узел
@подпрограмма[set] – собственно, вызов вашего модуля. Рекомендуется сразу после него описать класс и вызывать только методы этого класса.
Подпрограммы – это обычно крупные модули, используемые как единственные в своем разделе, например магазин, лента новостей, фотогалерея.

3. Через файл (файл-макрос). Файл-макросы с расширением .p создаются в www/my/blocks, а вызываются как макроязык: [файл-макрос.p;аргумент]. Файл-макросы выполняются в контексте одного и того же класса, но не MAIN. Аргумент можно получить через [special;dollar]local.var
Файл-макрос – кусок кода среднего размера, который наиболее удобен для создания в процессе эксплуатации сайта, т.к. редактируется в веб-режиме.

4. Как просто кусок кода (код-макрос). Создайте файл с расширением .p в www/my/autorun, и все определенные в нем классы и операторы будут доступны из любого места. Если дополнительно определить в этом файле @allowed[] и вписать туда имена ваших операторов через пробел, они тоже станут доступны из макроязыка.
Пример: создадим myfile.p в www/my/autorun и напишем в нем
@copyright[author]
©^; $author, $now.year
@allowed[]
copyright etc
Затем в редакторе текста (контента) любой страницы, предварительно разрешив макросы, или в .cfg-макросе, напишем:
[copyright;Мирон Сюляйндзга]
Открыв эту страницу на просмотр, в 2020 году получим:
© Мирон Сюляйндзга, 2020
Код-макросы – специфические куски кода малого размера, создаваемые программистом для использования в макроязыке редактором каждого конкретного сайта.

Примеры сайтов

diagnos.ru (экспертная система)
adbase.ru (база данных сложного профиля)
advexpert.ru (блог)
narmed.ru (высокопосещаемый контент-сайт)