Искать  
 
   
 
А где else ?
Отправлено: 19 Июль 2011 06:24 P.M.   [ Игнорировать ]
Новичок
Rank
Всего сообщений:  15
Зарегистрирован  2011-06-27

Скажите пожалуйста как в помощью псевдо-тегов EE сотворить конструкцию if else ?
Пробовал так {if some_field} {*какой-то вывод*} {else} {*какой-то другой вывод*}  {/if} (так можно в Smarty написать)

а здесь как?

Профиль
 
 
Отправлено: 19 Июль 2011 06:56 P.M.   [ Игнорировать ]   [ # 1 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02
{if username == "joe"}

<h1>HeyJoeWhere were you Tuesday?</h1>

{if:elseif username == "bob"}

<h1>HeyBobThanks for the tickets!</h1>

{if:else}

<h1>Welcome to our site.</h1>

{/if} 

http://expressionengine.com/user_guide/templates/globals/conditionals.html
http://expressionengine.com/user_guide/modules/channel/conditional_variables.html

Профиль
 
 
Отправлено: 20 Июль 2011 06:32 A.M.   [ Игнорировать ]   [ # 2 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

только нужно чень осторожно использовать такую конструкцию. Выражения такого типа(advanced conditionals) в любом случае выполняются в самую последнюю очередь (после всех модулей, плагинов, темплейтов и т.п.). Для приведенного примера это нормально, но в большинстве случаев лучше скачать Switche плаган

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Июль 2011 11:07 A.M.   [ Игнорировать ]   [ # 3 ]
Новичок
Rank
Всего сообщений:  15
Зарегистрирован  2011-06-27

А что за плагин такой?

Профиль
 
 
Отправлено: 20 Июль 2011 11:30 A.M.   [ Игнорировать ]   [ # 4 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

http://devot-ee.com/add-ons/switchee/

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Июль 2011 12:41 P.M.   [ Игнорировать ]   [ # 5 ]
Новичок
Rank
Всего сообщений:  15
Зарегистрирован  2011-06-27

Спасибо. Интересный плагин.

Профиль
 
 
Отправлено: 20 Июль 2011 01:18 P.M.   [ Игнорировать ]   [ # 6 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20

Использование Switche устраняет необходимость перебора
условий стандартной конструкции {if}{if:elseif}{/if}
определяемых в шаблоне, что при достаточно большом их
числе замедляет выдачу результата парсинга шаблона:

{if segment_n == "profile"}
{embed
="templates/profile"}
{if
:elseif segment_n == "panel"}
{embed
="templates/panel"}
{if
:elseif segment_n == "account"}
{embed
="templates/account"}
{if
:elseif segment_n == "settings"}
{embed
="templates/settings"}
{if
:else}
{redirect
="404"}
{
/if} 

В данном случае, прежде, чем будет найдено условие
соответствия segment_n == “settings” будут перебраны
все вышестоящие условия, и не беда, если объектом
поиска соответствия будет являться глобальная переменная,
как в данном случае, - в условиях зачастую используются
регулярные выражения и пр. логика, которая, как для парсинга
шаблона, может оказаться слишком медленной...

В случае же с Switche мы можем получить прямую выдачу
рузультата по найденному case соответсвию, аналогично
работе стандартной php конструкции switch().

{exp:switchee variable "{segment_n}"}
{case value
="profile"}
{embed
="templates/profile"}
{
/case}
{case value
="panel"}
{embed
="templates/panel"}
{
/case}
{case value
="account"}
{embed
="templates/account"}
{
/case}
{case value
="settings"}
{embed
="templates/settings"}
{
/case}
{case value
="404" default="yes"}
{redirect
="404"}
{
/case}
{
/exp:switchee} 
Профиль
 
 
Отправлено: 20 Июль 2011 01:25 P.M.   [ Игнорировать ]   [ # 7 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

проблема с примером с IF в том, что сначала произойдет вставка и обработка всех embed конктрукций, а потом уже произойдет отсечение части html кода по условию.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Июль 2011 02:00 P.M.   [ Игнорировать ]   [ # 8 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
Gotcha - 20 Июль 2011 01:25 P.M.

проблема с примером с IF в том, что сначала произойдет вставка и обработка всех embed конктрукций, а потом уже произойдет отсечение части html кода по условию.

Не совсем так, поскольку в очередности парсинга имеем следующий расклад:
(Based on ExpressionEngine’s Parse Order)

6. ...
7. Parse advanced conditionals
8. Process embedded templates
9. ...

Профиль