[(#ENV{variable, default_value})]
#ENV{variable}
використовується для отримання значення змінної оточення у файлі шаблону [1].
Змінну можна передати в шаблон одним з трьох способів:
- явно вказати в URL (HTTP в запиті)
spip.php?page=test&variable=xyz
- при підключенні шаблону
<INCLURE {fond=test} {variable=xyz}>
- за допомогою форми
<input type="text" name="variable" value="xyz">
В шаблоні test.html значення #ENV{variable}
дорівнюватиме «xyz».
Більше прикладів
Приклад передачі змінної через URL: spip.php?rubrique24&id_mot=5
В шаблоні rubrique.html, #ENV{id_mot}
дорівнюватиме 5.
За допомогою INCLURE: <INCLURE{fond=my_template} {id_article=136}>
В шаблоні my_template.html #ENV{id_article}
дорівнюватиме 136.
Значення за замовчуванням
[(#ENV{variable, default_value})]
: параметр default_value містить значення, яке виведе (поверне) тег у випадку, якщо значення variable не задане або порожнє (аналогічно [(#ENV{variable}|sinon{default_value})]
).
Задавати значення за замовчуванням дуже зручно, якщо поточний шаблон підключається кількома різними шаблонами і залежно від контексту (отриманих вхідних даних) реалізує різний висновок (різну логіку роботи).
Відключення фільтрів
За замовчуванням SPIP застосовує interdire_scripts
і entites_html
фильтри до тегу #ENV
. Як і для інших тегів, можливо вивести вміст тега, використовуючи запис #ENV*
і #ENV**
(докладніше в статті #TAG* and #TAG** ).
#ENV*
повертає змінну без обробки її фільтром entites_html
, тобто у вмісті усі спеціальні символи не конвертуються в HTML.#ENV**
виводить значення без обробки її фільтром interdire_scripts
[2]
Це може стати проблемою безпеки, якщо ця змінна передає code injection attack. Ось чому interdire_scripts
за замовчуванням відключає будь-які <
та інші <script language=php>
посилання, що містяться у змінній.
Незважаючи на це, #ENV**
має застосується при побудові деяких форм. Використайте подвійну зірочку для відображення CVT форми. Наприклад, щоб отримати таблицю помилок у файлі шаблону у вигляді: #ENV**{erreurs}|table_valeur{key}...