Делаем собственные глобальные переменные

Иногда на сайте нужны переменные которые встречаются один-два раза или разбросаны по всему сайту.
Меняться значения этих переменных могут редко, например номер телефона, название компании, email .

Создавать TV которые будут присутствовать на каждой странице с одним и тем же значением - не красивое решение.
Прочие варианты создают трудности для редактирования пользователями - никто ведь не будет копаться в коде сниппета или чанка.

Для решения этой проблемы создаём шаблон с пустым содержимым (не blank а именно обычный шаблон без содержимого).

Назначаем этому шаблону необходимые TV с соответствующим типом.

Создаём документ на базе данного шаблона. Заполняем переменные.
Для отображения этих переменных в произвольном месте прочих шаблонов будем использовать плагин PHx.
Для PHx написано достаточно много готовых модификаторов, воспользуемся одним из них - phx:tv

Взят здесь
Чтоб этот модификатор заработал делаем следующие вещи:

1) Создаём сниппет с названием phx:tv
2) Помещаем в него следующий код

  1.  
  2. <?php
  3. if(strlen($options )>0) {
  4. $data = explode("?",trim($options),2);
  5. $id= (!empty($data[0]) && is_numeric($data[0])) ? $data[0]: '';
  6. $tv= (!empty($data[1])) ? $data[1]: '';
  7. $result = $modx->getTemplateVar($tv, 'name', $id, 1);
  8. return $result['value'];
  9. }
  10. ?>
  11.  

Формат применения модификатора:[+phx:tv=`docid?TVname`+]

Ну например: [+phx:tv=`10537?CompanyName`+]
В результате получаем: ООО Рога и Копыта

Последнее изменение документа: 22 Сентябрь 2009

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.