Динамически назначаемые глобальные переменные

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}

Наверх страницы