Вызов модульного скрипта
Формирование витрины начинается с корневых скриптов, например - index.php. Этот корневой скрипт определяет какой именно модульный скрипт будет вызван в первую очередь. Прочитав раздел об использовании корневых скриптов, Вы уже знаете первый способ вызова модуля - с помощью парсера $gParser->Parse. Теперь самое время рассказать о втором способе, когда последующие модули будут вызвать друг друга с помощью специальных ключей. Эти ключи располагаются в HTML-шаблонах и обрамлены в фигурные скобки, чтобы парсер их смог распознать. Эти ключи могут быть простыми, так называемыми предопределенными ключами (системные ключи, глобальные ключи), либо более сложными командами на вызов другого модульного скрипта.
Давайте обратимся к модулю melbis_base_topic.php. Этот модуль вызывается из корневого скрипта index.php, в том случае, когда мы открываем какой-либо раздел магазина. Рассмотрение самого модуля отложим на потом, сейчас же нам надо понять как происходит вызов модулей друг другом.
Откроем HTML-шаблон main.htm для модуля melbis_base_topic.php. Среди привычного HTML-кода, можно увидеть инструкции для парсера заключенные в фигурные скобки. Например, есть простой ключ UTF-8. Это системный ключ и на его место будет подставлена кодировка, которую Вы определили для магазина в разделе "Инсталляция". Есть там и более сложные ключи типа {MELBIS:PAGE:NAME}, которые формируются в модулях разработчиком, но давайте найдем другой ключ, который будет вызывать другой модуль, вот он:
{MELBIS:melbis_store_topic([MELBIS:PAGE:ID])}
Из чего он состоит? Во-первых, это ключевое слово MELBIS, необходимое для того, чтобы парсер мог понять, что данный набор символов и есть команда вызова модуля. Далее, через двоеточие идет имя вызываемого модуля melbis_store_topic, а в скобках указаны входные параметры модуля. В нашем примере, это один параметр, и причем он динамический (является ключем в квадратных скобках - [MELBIS:PAGE:ID]).
Итак, у нас есть команда на вызов модульного скрипта. Что происходит дальше? Дальше парсер HTML-шаблона запускает вызов модульного скрипта и останавливается в ожидании ответа от него. Каждый модульный скрипт выполняет свою отдельную конкретную задачу, исходя ТОЛЬКО от входных параметров. Результатом работы модуля будет фрагмент HTML-кода, который затем возвращается назад парсеру. Парсер же, получив это результат, выполняет подстановку HTML-кода на то место, где и был ключ вызова модуля.
Как работает скрипт модуля? Кроме входных параметров, у него есть возможность задействовать готовые инструменты для работы с данными, используя указатель главного парсера. Например, самое необходимое и простое - он может обратиться к базе данных и получить из нее необходимую информацию, а также используя HTML-шаболны модуля скомпоновать их нужным образом.
Очень важно, что возвращаемый модулем фрагмент HTML-кода может, в свою очередь, содержать команду на вызов другого модуля. Таким образом, модули могут быть бесконечно вложенными (с другой стороны следует быть аккуратными со взаимной рекурсией). Еще важный момент в том, что вызов вложенного модульного скрипта произойдет только после окончания работы родительского модульного скрипта.
Вот, собственно, и все. После того, как главный парсер завершит поиск и подмену фрагментов HTML-кода, страница будет готова, управление будет возвращено в корневой скрипт, которому останется только опубликовать ее.
Рассмотренные варианты вызовов имеют отношение только к обычным модульным скриптам, формирующим витрину магазина или другие служебные страницы сайта. Однако, есть еще особые модули-библиотеки, о которых мы говорили ранее. Такие модули, кроме того что могут присоединяться к обычным модулям для наращивания функционала, могут еще и вызываться отдельно. Например, в исходном магазине, есть модуль melbis_inc_logic.php, который содержит универсальные функции создания и калькуляции заказа. Этот модуль же может быть вызван непосредственно из самой программы Melbis Shop. Какой модуль вызывать для оформления заказа, задается в разделе "Реестр настроек", а пример его вызова упоминается в уроке "Заказы".

Melbis Shop6