Модератор форума: Yuri_G  
Сообщество uCoz » Мастерская uCoz » Дизайн: управление шаблонами » Условные операторы и системные коды (Особенности использования и интересные решения)
Условные операторы и системные коды
Модератор форума
Сообщение # 1 | 04:36:06
Условные операторы от новичка до профи

Если вы совершенно не понимаете, как работают условные операторы, и информации в панели управления для вас мало, то я попробую вам объяснить. Самое главное, чтобы вы настроились на то, что это очень просто. Так оно и есть!

И так, начну с понятий. Условные операторы - это специальные коды-символы, которые могут выполнять какие-то сценарии. Вы можете создать совершенно новую опцию на своём сайте, которая собственно не предусмотрена панелью.

Для начала нужно понять и привыкнуть к составляющим частям самого кода сценария, а это:

Код
<?if($код$)?> - это какое-то условие (код), которое говорит оператору с кем мы имеем дело и с чем работать. Заменяем мысленно фразой «Если есть»;

Код
<?else?>- это оператор которое выполнит то, что вы скажете, когда условие не соответствует названным. Мысленно заменяем фразой «Если нет»;

Код
<?endif?> - это конец условного оператора, мысленно заменяем «Конец»;



Теперь разберем простой пример, который приводится в панели управления:

(Из редактора страниц)

Код
<?if($USER_LOGGED_IN$)?>Hello, $USERNAME$<?else?>You are GUEST. Please register.<?endif?>


Что это на нашем языке написано: «Если есть авторизированный пользователь, то «Привет его логину!», а если нет, «Привет Гостю!» и конец.»


Почему? Откуда? Подробней!

Что в данном коде использовалось:

Мы оператору
Код
<?if($код$)?>
сообщили, что наш сценарий направлен, чтобы поздороваться с теми, кто авторизирован. Мы поставили вместо $код$ следующий
Код
$USER_LOGGED_IN$
, то есть сказали «Если есть авторизированный -
Код
<?if($USER_LOGGED_IN$)?>
». После идет какая-то ваша информация доступна только авторизированным. Однако мы попутно можем использовать условие если они не соответствуют названным, а именно у нас не соответствуют Гости. Значит, мы после информации для зарегистрированных вписываем информацию для гостей.

Получаем
Код
<?if($USER_LOGGED_IN$)?> Привет, $USERNAME$ <?else?> Привет Гость!


Осталось закрыть всё это дело концовкой.
Код
<?if($USER_LOGGED_IN$)?> Привет, $USERNAME$<?else?>Привет Гость! <?endif?>


Мы так же можем исключить Гостей совершенно и вывести информацию только зарегистрированным. Для этого просто не используем «Если нет». Получаем следующее:

Код
<?if($USER_LOGGED_IN$)?> Как хорошо, что вы зарегистрировались! <?endif?>


То есть в данном случае фразу «Как хорошо, что вы зарегистрировались!» видят только те, кто вошёл под логином.


Условием для работы операторов может быть любой код, который указан как работающий в каком-то модуле. В нашем случае (редактор страниц) могут примеры:

Выход и вход:

Код
<?if($USER_LOGGED_IN$)?> <a href="$LOGOUT_LINK$">ВЫХОД</a> <?else?> <a href="$LOGIN_LINK$">ВХОД</a> <?endif?>


Дни после регистрации:

Код
<?if($USER_LOGGED_IN$)?>Вы с нами уже$USER_REG_DAYS$ дней!<?else?>Пожалуйста, зарегистрируйтесь. <?endif?>


И так далее.

Условия для сценария можно изменить с помощью дополнительных возможностей, которые поддерживают операторы. Это знаки «=», «>», «<». При необходимости, приравненные разделяются вертикальной чертой. После знака, вы сообщаете оператору на кого направлен весь сценарий.

Код
<?if($код$='условие')?> Я это вижу <?else?> А вот я вижу это<?endif?>


Или

Код
<?if($код$='условие')?> Самое главное, что я это вижу <?endif?>


Пример:

Код
<?if($USER$='Дима')?> Дима, не забудь каждый день читать почту. <?endif?>


То есть, на словах «Если есть логины вошедших и среди них есть Дима (='Дима'), то ему показать это…»

То же самое касается групп, имён, пола, даты и всего что работает из кодов.

Ещё примеры:

Код
<?if($USER$='Mike' or $USER$='Lola')?> Дима и Света, вот тайная ссылочка …. <?endif?>


Группы:

Код
<?if($GROUP_ID$=3 or $GROUP_ID$=4)?>Модеры и Админы, все кликаем на рекламу тут… <?endif?>


И т.д.


Однако операторы могут работать друг в друге.

Пример:

Код
<?if($USER_LOGGED_IN$)?> Привет $USER$! <?if($GROUP_ID$=3 || $GROUP_ID$=4)?> Не забываем кликать на рекламу!<?endif?><?else?>Пожалуйста, зарегистрируйтесь.<?endif?>


Сценарий такой: «Если есть вошедшие, то Привет им, а если среди них есть Админы и Модеры, то добавить Кликаем на рекламу, если есть то кто не вошел, то просим зарегистрироваться и конец.»


Самое главное хорошо подумать, как написать сценарий, какие для этого использовать коды и кому они будут направляться. Можно написать что угодно, что придет на ум. uCoz настолько гибкий, что мне иногда кажется, что он живой и создатели сами точно не знают сколько и чего будет работать. Ну всё есть! Самое главное подумайте.

Теперь напоследок мини-инфо:


Код
* Сколько <?if($код$)?> столько и <?endif?>
* <?else?> нужно, когда выводим инфу для тех, кто не соответствует условиям, в других случаях оно не нужно
* Поддерживаются альтернативные условия or и and (||и [&&)
* Поддерживается вложенность операторов
* Поддерживается сравнение переменных друг с другом: <?if($VAR1$=$VAR2$)?>
* При сравнении текст обязательно должен быть в кавычках: <?if($USER$='Mike') ?>


Вопрос - ответ
Цитата
При создании новых страниц, закачанных через FTР, коды
Код
$SITE_NAME$, $LOGIN_LINK$, $LOGOUT_LINK$
отображаются в виде текста, а не того, чтобы хотелось... Почему они не работают?
$Коды$ будут работать только на динамических страницах, то есть тех, которые созданы в Панели управления через опцию "Создать страницу". В статических страницах, закаченных извне с расширением .html эти $Кода$ работать не будут.
Цитата
Как сделать альтернативные условия, например для кода
Код
$GROUP_ID$
?
Код
<?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?>...<?endif?>
Цитата
Есть ли операторы, позволяющие пользователю видеть в списке категорий только те, в которые он имеет доступ?
Это можно сделать только строя список категорий вручную. Т.е. проверяете текущю группу и выводите нужный список категорий. Уровнем выше проверяете на необходимый раздел.
Цитата
Код
$GROUP_ID$
не работает в шаблоне мини-чата, почему?
Сообщения чата кешируются, поэтому использовать в чате динамически изменяющиеся коды нельзя.
Цитата
Есть код
Код
$USER_LOGGED_IN$
. А есть ли $USER_LOGGED_OUT$?
Нужно прото сделать отрицание в условии
Код
<?if(!$USER_LOGGED_IN$)?>


Hellion2442
Сообщений: 15
Репутация: -14

Сообщение # 1366 | 19:28:27
fflesh, спасибо, просто я думал как то надо еще проверять заполненность этого поля))))
WondeRKiD
Сообщений: 7
Репутация: 0

Сообщение # 1367 | 23:37:45
У меня на сайте www.sogdrap.tk на главной странице поставлен слайдер через редактор страниц.Какой код нужно написать чтоб в pda версии его не было видно?!
webanet
Сообщений: 24067
Репутация: 4985

Сообщение # 1368 | 23:38:47
WondeRKiD, нужно активировать пда шаблоны и не ставить туда слайдер.

ТУТ можно оставить своё мнение по любому вопросу
https://webanetlabs.net/
WondeRKiD
Сообщений: 7
Репутация: 0

Сообщение # 1369 | 00:01:07
webanet, у меня он поставлен через редактор страниц.Он же вроде автоматически появляется в pda версии

Добавлено (05 Май 2013, 00:01:07)
---------------------------------------------

Код
<div align="center"><div id="featured" >  

<ul class="ui-tabs-nav">  

<li class="ui-tabs-nav-item ui-tabs-selected"  

id="nav-fragment-1"><a href="#fragment-1">  
<img src="http://s2.ipicture.ru/uploads/20130323/vjwwVkwg.jpg" width=80 height=50 alt="" />  
<span>НОВЫЙ САЙТ WWW.SOGDRAP.TK</span></a></li>  

<li class="ui-tabs-nav-item" id="nav-fragment-2"><a href="#fragment-2">  
<img src="http://s1.ipicture.ru/uploads/20130322/CWmbY6AA.jpg" width=80 height=50 alt="" />  
<span>SOGDRAP.TK® В СОЦСЕТЯХ</span></a></li>  

<li class="ui-tabs-nav-item" id="nav-fragment-3"><a href="#fragment-3">  
<img src="http://s2.ipicture.ru/uploads/20130323/Recc94RW.jpg" width=80 height=50 alt="" />  
<span>ДОБАВЬТЕ СВОЙ ТРЕК НА НАШ САЙТ</span></a></li>  

<li class="ui-tabs-nav-item" id="nav-fragment-4"><a href="#fragment-4">  
<img src="http://s1.ipicture.ru/uploads/20130418/O6Qnw2Ea.jpg" width=80 height=50 alt="" />  
<span>ё-life band & Leader.One - Девочка (new)</span></a></li>

</ul>  

<!-- First Content -->  

<div id="fragment-1" class="ui-tabs-panel" style="">  

<img src="http://s2.ipicture.ru/uploads/20130323/vjwwVkwg.jpg" width=400 height=250 alt="" />  

<div class="info" >  

<h2><a href="http://sogdrap.tk/news/novyj_sajt_sogdrap_tk/2013-03-18-1" >НОВЫЙ САЙТ WWW.SOGDRAP.TK</a></h2>  
<p>Открылся сайт WWW.SOGDRAP.TK про Хип-Хоп....<a href="http://sogdrap.tk/news/novyj_sajt_sogdrap_tk/2013-03-18-1" >read more</a></p>  

</div>  

</div>  

<!-- Second Content -->  

<div id="fragment-2" class="ui-tabs-panel ui-tabs-hide" style="">  

<img src="http://s1.ipicture.ru/uploads/20130322/CWmbY6AA.jpg" width=400 height=250 alt="" />  

<div class="info" >  

<h2><a href="http://vk.com/club51165390" >МЫ ВКОНТАКТЕ</a></h2>  

<p>СЛЕДИ ЗА ХИП-ХОПОМ ВК....<a href="http://vk.com/club51165390" >read more</a></p>  

</div>  

</div>  

<!-- Third Content -->  

<div id="fragment-3" class="ui-tabs-panel ui-tabs-hide" style="">  

<img src="http://s2.ipicture.ru/uploads/20130323/Recc94RW.jpg" width=400 height=250 alt="" />  

<div class="info" >  

<h2><a href="http://sogdrap.tk/forum/16-14-1" >ДОБАВЬТЕ СВОЕ ТВОРЧЕСТВО НА НАШ САЙТ</a></h2>  

<p>Если желаете увидеть свое творчество в SOGDRAP.TK, заполните форму....<a href="http://sogdrap.tk/forum/16-14-1" >read more</a></p>  

</div>  

</div>  

<!-- Fourth Content -->  

<div id="fragment-4" class="ui-tabs-panel ui-tabs-hide" style="">  

<img src="http://s1.ipicture.ru/uploads/20130418/O6Qnw2Ea.jpg" width=400 height=250 alt="" />  

<div class="info" >  

<h2><a href="http://sogdrap.tk/news/jo_life_band_leader_one_devochka_new/2013-04-18-29" >ё-life band & Leader.One - Девочка (new)</a></h2>  

<p>Новый трек от Leader.One и ё-life band <a href="http://sogdrap.tk/news/jo_life_band_leader_one_devochka_new/2013-04-18-29" >read more</a></p>  

</div>  

</div>

</div></div>

это содержимое главной страницы.Какой код мне нужно прописать?
reformator
Сообщений: 2034
Репутация: 534

Сообщение # 1370 | 00:23:25
WondeRKiD, пда-шаблоны отдельные! Нужно просто из пда-шаблонов убрать код слайдера!

Цитата (WondeRKiD)
он поставлен через редактор страниц.

всмысле?! как такое вообще возможно?! через Редактор страниц создаются страницы и подстраницы. Слайдер добавляется непосредственно через шаблоны в Управлении дизайном!

WondeRKiD
Сообщений: 7
Репутация: 0

Сообщение # 1371 | 00:37:15
Nuras_Bolandi, ну вот так!
Код
#featured{  

width:400px;  

padding-right:250px;  

position:relative;  

height:250px;  

background:#bdb7b7;  

border:5px solid #ccc;  

}  

#featured ul.ui-tabs-nav{  

position:absolute;  

top:0; left:400px;  

list-style:none;  

padding:0; margin:0;  

width:250px;  

}  

#featured ul.ui-tabs-nav li{  

padding:1px 0; padding-left:13px;  

font-size:12px;  

color:#666;  

}  

#featured ul.ui-tabs-nav li img{  

float:left; margin:2px 5px;  

background:#a8a8a8;  

padding:2px;  

border:1px solid #eee;  

}  

#featured ul.ui-tabs-nav li span{  

font-size:11px; font-family:Verdana;  

line-height:18px;  

}  

#featured li.ui-tabs-nav-item a{  

display:block;  

height:60px;  

color:#333; background:#fff;  

line-height:20px;  

}  

#featured li.ui-tabs-nav-item a:hover{  

background:#f2f2f2;  

}  

#featured li.ui-tabs-selected{  

background:url('images/selected-item.gif') top left no-repeat;  

}  

#featured ul.ui-tabs-nav li.ui-tabs-selected a{  

background:#ccc;  

}  

#featured .ui-tabs-panel{  

width:400px; height:250px;  

background:#999; position:relative;  

}  

#featured .ui-tabs-panel .info{  

position:absolute;  

top:180px; left:0;  

height:70px;  

background: url('images/transparent-bg.png');  

}  

#featured .info h2{  

font-size:18px; font-family:Georgia, serif;  

color:#fff; padding:5px; margin:0;  

overflow:hidden;  

}  

#featured .info p{  

margin:0 5px;  

font-family:Verdana; font-size:11px;  

line-height:15px; color:#f0f0f0;  

}  

#featured .info a{  

text-decoration:none;  

color:#fff;  

}  

#featured .info a:hover{  

text-decoration:underline;  

}  

#featured .ui-tabs-hide{  

display:none;  

}

в css такой код поставлен остальное в редакторе страниц
reformator
Сообщений: 2034
Репутация: 534

Сообщение # 1372 | 00:49:31
WondeRKiD, в Управлении дизайном есть пункт сверху (если вы конечно активировали пда-версию сайта)



выберите "Шаблоны для PDA версии сайта"...перейдите в раздел "Страницы сайта"...и отсюда удалите код слайдера!
Прикрепления: 4809220.jpg (7.6 Kb)

WondeRKiD
Сообщений: 7
Репутация: 0

Сообщение # 1373 | 00:52:01
Nuras_Bolandi,
Код
<html>
<head>
<title>$SITE_NAME$</title>
<link type="text/css" rel="StyleSheet" href="/_st/pda.css" />
<link type="text/css" rel="StyleSheet" href="http://s43.ucoz.net/src/layer3.css" />
<script type="text/javascript" src="http://s43.ucoz.net/src/jquery-1.6.1.js"></script>
<script type="text/javascript" src="http://s43.ucoz.net/src/uwnd.js?2"></script>
<?if($USER_AGENT_PDA$!='0' && $USER_AGENT$!='opera')?><meta name="viewport" content="width=device-width; initial-scale=0.85; maximum-scale=0.85; user-scalable=0;" /><?endif?>
</head>
<body>
<!-- Header -->
<div class="logo">
<div class="tp_0"><a href="$HOME_PAGE_LINK$"><!-- <logo> -->$SITE_NAME$<!-- </logo> --></a></div>
<div class="tp_1"> </div><div class="tp_2"><div class="tp_1"> </div></div></div>
<!-- /Header -->

<div class="cnt">
<?if($USER_LOGGED_IN$)?>
<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5158>-->Мой профиль<!--</s>--></b></div>
<div class="bl3" id="fmr">

<table class="td">
<tr><?if($USER_AVATAR_URL$)?><td><a href="$PERSONAL_PAGE_LINK$"><img src="$USER_AVATAR_URL$" width="25"></a></td><td> </td><?endif?>
<td><a href="$PERSONAL_PAGE_LINK$"><b>$USERNAME$</b></a><br><a href="$LOGOUT_LINK$"><!--<s5164>-->Выход<!--</s>--></a></td>
</tr></table>
</div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>
<?endif?>

<?if($LOGIN_FORM$)?>
<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5158>-->Форма входа<!--</s>--></b></div>
<div class="bl3" id="fmr">$LOGIN_FORM$</div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>
<?endif?>

<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5184>-->Меню сайта<!--</s>--></b></div>
<div class="bl3_nopd">$SMENU_1$</div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>

<?if($CATEGORIES$)?>
<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5158>-->Категории<!--</s>--></b></div>
<div class="bl3">$CATEGORIES$</div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>
<?endif?>

<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5158>-->Материалы<!--</s>--></b></div>
<div class="bl3"><table class="td" width="100%"><tr><td><!-- <body> -->$CONTENT$<!-- </body> --><td></tr></table></div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>

<?if($CALENDAR$)?>
<div class="bl0"><div class="bl1"> </div></div><div class="bl1"> </div>
<div class="bl2"><b><!--<s5158>-->Календарь<!--</s>--></b></div>
<div class="bl3"><div align="center">$CALENDAR$</div></div>
<div class="bl4"> </div><div class="bl5"><div class="bl4"> </div></div>
<?endif?>

</div>
<div class="btm"><a href="/index/53"><!--<s5312>-->Полная версия сайта<!--</s>--></a></div>
</body>
</html>
Вот, что отсюда удалить?
Любительница_животных
Сообщений: 60
Репутация: 0

Сообщение # 1374 | 10:47:23
fflesh, спасибо,теперь все робит
mrshl9pa
Сообщений: 22
Репутация: 1

Сообщение # 1375 | 12:32:58
Добрый день, помогите пожалуйста. Пытаюсь реализоваться изменение оформления сайта через профиль, то есть, человек заходит в свой профиль, изменяет значения поля (в моем случая это YAHOO) к примеру на "зеленый", сохраняет, и после этого у него используется другая таблица стилей. Проблема в том, что условный оператор не работает как надо (не читает значение, всегда применяет else) вот код:

Код
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>$SITE_NAME$ - $MODULE_NAME$</title>
<?$META_DESCRIPTION$?>

<?if($USER_LOGGED_IN$)?>
<?if($_YAHOO$='зеленый')?>
<link type="text/css" rel="StyleSheet" href="/green.css" />
<?else?>
<link type="text/css" rel="StyleSheet" href="/_st/my.css"/>
<?endif?>
<?else?>
<link type="text/css" rel="StyleSheet" href="/_st/my.css" />
<?endif?>

</head>
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 1376 | 13:42:24
mrshl9pa, что за бред, зачем два раза стандартный css подключать?

Вот.

Код
<?if($USER_LOGGED_IN$)?>     
<?if($_YAHOO$='зеленый')?>     
<link type="text/css" rel="StyleSheet" href="/green.css" />     
<?else?>     
<link type="text/css" rel="StyleSheet" href="/_st/my.css"/>     
<?endif?>     
<?endif?>

Сообщение отредактировал Rad_van_Cor - Воскресенье, 05 Май 2013, 13:43:13
mrshl9pa
Сообщений: 22
Репутация: 1

Сообщение # 1377 | 13:49:22
Rad_van_Cor,
Цитата (Rad_van_Cor)
что за бред, зачем два раза стандартный css подключать?
твой вариант будет работать только в случае, если человек залогинился, как гость у него вообще css не будет

Добавлено (05 Май 2013, 13:49:22)
---------------------------------------------
Rad_van_Cor, для этого 2 раза и прописывал

Вансан
Сообщений: 77
Репутация: 33

Сообщение # 1378 | 14:25:48
Цитата (mrshl9pa)
<?if($_YAHOO$='зеленый')?>
mrshl9pa, лучше сравнивать не строки, а числа.
Например условьтесь, что 1 - это красный, 2 - зелёный и т.п. и сравнивайте так:
Код
<?if($_YAHOO$='2')?>

А в форме редактирования сделайте выпадающий список.

Absit invidia verbo
mrshl9pa
Сообщений: 22
Репутация: 1

Сообщение # 1379 | 15:26:03
Вансан, спасибо, я так уже делал, но дело в том, что значение не читается..
Вот форма редактирования:

Код
<?if($YAHOO_FL$)?>
<tr><td>$YAHOO_SIGN$</td><td>$YAHOO_FL$</td></tr>
<?endif?>
Вот отображение в профиле:

Код
<?if($_YAHOO$)?>
<div class="udtb"><div class="udtlb">Тема:</div>$_YAHOO$</div>
<?endif?>
Код с цифрами:

Код
<?if($USER_LOGGED_IN$)?>  
<?if($_YAHOO$='2')?>  
<link type="text/css" rel="StyleSheet" href="/green.css" />  
<?else?>  
<link type="text/css" rel="StyleSheet" href="/_st/my.css"/>  
<?endif?>  
<?else?>  
<link type="text/css" rel="StyleSheet" href="/_st/my.css" />  
<?endif?>

Добавлено (05 Май 2013, 15:26:03)
---------------------------------------------
в профиле поставил 2, но он не читает эту двойку, и переходит к else

Вансан
Сообщений: 77
Репутация: 33

Сообщение # 1380 | 15:30:21
Цитата (mrshl9pa)
Код с цифрами:
Секундочку, а в каком шаблоне у вас этот код?
Вы уверены что там вообще доступен $_YAHOO$?

Добавлено (05 Май 2013, 15:30:21)
---------------------------------------------
mrshl9pa, если должен быть доступен, выведите $_YAHOO$ куда-нибудь на страницу, чтобы посмотреть что в нём лежит.


Absit invidia verbo
Сообщество uCoz » Мастерская uCoz » Дизайн: управление шаблонами » Условные операторы и системные коды (Особенности использования и интересные решения)
Поиск: