Глобальні ключі
Як Ви вже знаєте, в HTML-шаблонах можуть бути системні ключі з визначеними змінними та локальні ключі, що використовуються в модульних скриптах . Крім цих ключів, у шаблонах може бути ще один тип ключів зі значеннями глобального масиву парсеру gVars . Це особливий масив, в якому Ви можете зручно зберігати ключові змінні, які можуть бути використані в багатьох модулях та шаблонах. Доступ до цього масиву здійснюється через покажчик парсера (за замовчуванням це змінна $gParser ), наприклад, у скрипті сторінки можна визначити id поточного розділу:
$gParser->gVars['topic']['id'] = $hash['id'];Як бачите, у цьому рядку формується змінна id для масиву topic . Після того, як змінна визначена, Ви отримуєте можливість викликати в будь-якому HTML-шаблоні через такі ключі: {TOPIC:ID} та [TOPIC:ID] . Ключ складається з двох частин, розділених двокрапкою - TOPIC та ID, що відповідає вкладеності масиву: $gParser->gVars['topic']['id'] . Максимальна вкладеність – до третього рівня.
Ще один важливий аспект - це відмінність ключів у фігурних та квадратних дужках. Справа в тому, що на місце ключів у фігурних дужках підставляються дані точнісінько такі самі, якими вони були занесені в масив gVars . На місце ж ключа в квадратних дужках підставляються дані, що переводяться в безпечне представлення (PHP-функція urlencode() ). Наприклад:
$gParser->gVars['topic']['psu'] = 'sport eqip';Тоді у шаблоні на місці ключа:
- {TOPIC:PSU} буде " sport eqip "
- [TOPIC:PSU] буде " sport%20eqip "
Використання ключів у квадратних дужках необхідне при виклику модулів, коли ключі виступають вхідними параметрами модуля або якщо значення необхідно вставити прямо в JavaScript-код або HTML-форму. Наприклад:
{MELBIS:melbis_goods_search([SEARCH:KEYWORD])}або
var search_key = '[SEARCH:KEYWORD]';або
<INPUT type=text name=search_key VALUE="[SEARCH:KEYWORD]";Використовуючи глобальний масив gVars , Ви зможете спростити виклик багатьох модулів. Наприклад, Ви можете визначити ключ id поточного розділу та за його допомогою викликати всі інші модулі (незалежно від їх вкладеності):
{MELBIS:melbis_goods_in_topic([TOPIC:ID])} ... {MELBIS:melbis_action_in_topic([TOPIC:ID])}За потреби Ви також можете отримати доступ до глобального масиву у будь-якому модульному скрипті. Для цього на початку функції модуля необхідно визначити глобальну змінну парсера, а потім звернутися (аналогічно як і в скрипті сторінки) до цього масиву:
function MELBIS_SHOP_START($mVars) { global $gParser; $id = $gParser->gVars['topic']['id']; }
Melbis Shop6