Динамически назначаемые глобальные переменные
ExpressionEngine позволяет вам создавать глобальные переменные "на лету" в пределах шаблона. Переменные созданные таким образом доступны для использования в любом месте в том же шаблоне.
Создание переменной
Базовый синтаксис для создания переменной:
{assign_variable:variable_name="variable_replacement"}
Здесь, "variable_name" - имя, которое вы даете переменной, и "variable_replacement" - содержимое, которое вы ей присваиваете.
Предположим, например, что вы хотите создать переменную, содержащую название вашей компании. Вы должны сделать следующее:
{assign_variable:my_company="ACME Industries, Inc."}
В этом примере вы создали переменную с именем {my_company}, со значением ACME Industries, Inc..
Примечания:
Вы должны поместить тег назначения вашей переменной в шаблон раньше, чем вы начнете ее использовать. Самое логичное место, для размещения тега назначения переменной - в начале вашего шаблона, для того, чтобы переменная была доступна во всем шаблоне.
Переменная будет доступна в том шаблоне, в котором она была определена. Если вы создали переменную во внедренном шаблоне, то она будет доступна только во внедренном шаблоне, но не будет доступна в родительском шаблоне. Аналогично, если она будет создана в родительском шаблоне, то она не будет доступна во внедренном шаблоне.
Этот тег, один из самых первых тегов, обрабатываемых в шаблоне, так как он используется для назначения переменных внутри тегов EE, условных выражениях EE, поэтому ситуации упомянутые выше могут привести к непредсказуемым результатам.
Использование переменных
Итак, вы можете создать переменную на лету, но какую пользу мы можем извлечь из этого? Допустим, что вы хотите создать шаблон, в котором вы можете легко изменять значение сразу в нескольких местах; например, изменяя короткое имя раздела, используемое в нескольких тегах {exp:weblog:entries};
Чтобы сделать это, вы можете использовать следующий код:
{assign_variable:current_blog="newsblog"}
{exp:weblog:entries weblog="{current_blog}" limit="10"}
<h1>{title}</h1>
{body}
{/exp:weblog:entries}
Возможно, вы хотели бы более просто использовать значение из вашего URL. Вы можете сделать это с помощью переменной url segment. Однако, переменная {segment_3} не является достаточно наглядной. Предположим, что вы используете такую структуру URL:
http://www.example.com/index.php/products/shirts/large/blue/
Обычно, для доступа к значению "large", вы использовали бы {segment_3}. Используя новый метод, вы можете сделать так:
{assign_variable:size="{segment_3}"}
Your Size: {size}