Виклик модульного скрипту

Формування вітрини починається з кореневих скриптів , наприклад- 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. Який модуль викликати для оформлення замовлення, в розділі "Реєстр налаштувань", а приклад його виклику згадується в уроці " Замовлення ".