Искать  
 
   
 
Помогите понять магию условных операторов
Отправлено: 04 Август 2010 10:41 A.M.   [ Игнорировать ]
Новичок
Avatar
Rank
Всего сообщений:  35
Зарегистрирован  2008-04-03

Продолжая исследовать условые операторы (Странна работа оператора условного), я пришел к выводу что надо себя подстраховывать дополнительными кавычками.

Например, код странно работает:

{if segment_2!="" AND segment_2_category_id!=""}
                {exp
:weblog:entries weblog="tovary" orderby="date" status="open" limit="14" disable="member_data|trackbacks"  pagination="bottom" paginate_base="vse_tovary/{segment_2}/page" uncategorized_entries="n" category="{segment_2_category_id}"
                {title}
                {
/exp:weblog:entries}
                {
/if} 

А если добавить “лапки”, тогда все буде в ажуре

{if "{segment_2}" !="" AND "{segment_2_category_id}" !=""

Вопрос знатокам
В каких случаях надо прибегать к помощи “лапок” и фигурных скобок в условных операторах?
Правильно ли я понял, что подобная конструкция как-то влияет на последовательность парсинга шаблона?

Профиль
 
 
Отправлено: 04 Август 2010 10:43 A.M.   [ Игнорировать ]   [ # 1 ]
Member
RankRankRank
Всего сообщений:  191
Зарегистрирован  2009-03-17

тогда надо прибегать к помощи лапок, когда без них не работает smile

Профиль
 
 
Отправлено: 04 Август 2010 11:08 A.M.   [ Игнорировать ]   [ # 2 ]
Новичок
Avatar
Rank
Всего сообщений:  35
Зарегистрирован  2008-04-03

Пока что я пришел к выводу, что “не родные” переменные и сложные условия требуют страховки.
Но может быть кто-то  знает как вообще эта кухня работает более детально.

Профиль
 
 
Отправлено: 04 Август 2010 11:15 A.M.   [ Игнорировать ]   [ # 3 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

а в чем странноесть то? уcловие с AND всегда  выполняется в самом конце по правилам парсинга - то есть веблог все равно вывод записи, а потом уже в конце всех операций идет отсеевание по if.
В вашем случае я бы воспользовался параметром set_all_segments = ‘yes’ для seg2cat и убрал бы лишнее условие.

{if segment_2_category_id !=''}
                {exp
:weblog:entries weblog="tovary" orderby="date" status="open" limit="14" disable="member_data|trackbacks"  pagination="bottom" 
paginate_base="vse_tovary/{segment_2}/page" uncategorized_entries="n" category="{segment_2_category_id}"
                {title}
                {
/exp:weblog:entries}

{
/if} 

p.s. на самом деле, не родные переменные конечно могут работать по разному (по большей части это относится к полям), но к  segment_2_category_id это не относится - они всего-лишь регестрируются как глобальные переменные и обрабатываются как родные.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 05 Август 2010 05:42 P.M.   [ Игнорировать ]   [ # 4 ]
Новичок
Avatar
Rank
Всего сообщений:  35
Зарегистрирован  2008-04-03

Спасибо за наводку на этот параметр. Как-то его упустил.

Профиль