Глобальные ключи
Как Вы уже знаете, в 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