Модератор форума: Yuri_G |
Сообщество uCoz Мастерская uCoz Дизайн: управление шаблонами Условные операторы и системные коды (Особенности использования и интересные решения) |
Условные операторы и системные коды |
Условные операторы от новичка до профи
Если вы совершенно не понимаете, как работают условные операторы, и информации в панели управления для вас мало, то я попробую вам объяснить. Самое главное, чтобы вы настроились на то, что это очень просто. Так оно и есть! И так, начну с понятий. Условные операторы - это специальные коды-символы, которые могут выполнять какие-то сценарии. Вы можете создать совершенно новую опцию на своём сайте, которая собственно не предусмотрена панелью. Для начала нужно понять и привыкнуть к составляющим частям самого кода сценария, а это: Код <?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$ Цитата Как сделать альтернативные условия, например для кода Код $GROUP_ID$ Код <?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?>...<?endif?> Цитата Есть ли операторы, позволяющие пользователю видеть в списке категорий только те, в которые он имеет доступ? Цитата Код $GROUP_ID$ Цитата Есть код Код $USER_LOGGED_IN$ Код <?if(!$USER_LOGGED_IN$)?> |
xatiko, в этом случае лучше использовать другую конструкцию. И код $REQUEST_URI$Вот, возможно данная инструкция будет полезна - http://manual.ucoz.net/board/10-1-0-476 Код <?if(strpos($REQUEST_URI$,"/0-1")!= -1)?>текст<?endif?> UPD Сделал. Вместо конструкции Код <?if(strpos($REQUEST_URI$,"/0-1")!= -1)?>текст<?endif?> Код <?if($REQUEST_URI$="/")?>текст<?endif?> Сообщение отредактировал xatiko - Воскресенье, 09 Фев 2014, 04:45:37
|
Selena,
Код <html> <head> <title>Профиль $_USERNAME$ - $SITE_NAME$</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="/styles/reset.css"> <link rel="stylesheet" href="/styles/main.css"> <link rel="stylesheet" href="/styles/tabinfo.css"> </head> <body> $GLOBAL_AHEADER$ <!-- <middle> --> <div class="main_width"> <div class="main_block clearfix"> <div class="content"> <!-- <body> --> <span style="float:right;">$MODER_PANEL$ <a href="$_CHANGE_DETAILS_URL$">Изменить данные</a></span> <h2> <span style="text-transform: uppercase;">Профиль <a>$_USERNAME$ </a></span> <sup> <?if($_IS_OWN_PROFILE$)?>(Это Вы)<?endif?></sup> </h2> <table class="tabinf"> <tbody> <th>Информация</th> <tr> <td> <?if($_AVATAR$)?>$_AVATAR$<?else?> <img alt="$_USERNAME$" src="/images/no-avaweb.png" /><?endif?> <div style="margin:5px;">$_STATUS$</div> <div><b>Роль: </b>$USER_GROUP$</div> <div><b>Зарегистрирован: </b>$_REG_TIME$</div> <div><b>Последний визит: </b>$_LOG_TIME$</div> <div><b>Репутация: </b><a href="$_REP_READ_URL$" title="История репутации">$_REPUTATION$</a> <a href="$_REP_DO_URL$" title="Добавить позитивную/негативную репутацию">+</a> </div> <div><b>Страна: </b>$_COUNTRY$</b></div> <div><b>Сайт: </b><a href="#$_WWW$" rel="nofollow">$_WWW$</a></div> </td> </tr> <th>Связь с $_USERNAME$</th> <tr> <td> <div><b>Личное сообщение:</b> <a href="$_PM_SEND_URL$">Отправить ЛС</a></div> <div><b>Skype:</b> <a href="#"> $_SKYPE$ </a></div> <div><b>ICQ:</b> $_ICQ$</div> </td> </tr> <th>Активность</th> <tr> <td> Новости </td> </tr> </tbody> </table> <!-- </body> --> </div> <aside> <!-- <sblock_menu> --> <!-- </sblock_menu> --> $GLOBAL_CLEFTER$ </aside> </div> </div> <!-- </middle> --> $GLOBAL_BFOOTER$ </body> </html> Добавлено (09 Фев 2014, 19:59:16) Добавлено (10 Фев 2014, 21:09:46) Сообщение отредактировал Maks_Smela - Суббота, 08 Фев 2014, 20:24:03
|
Selena, В информере с категориями количество каждой категории, а я хочу сделать что то вроде того <? $NUM_DATA$+$NUM_DATA$ ?>.
То есть что бы показывало общую сумму товаров во всех категориях (данный оператор высвечивает <? $NUM_DATA$+$NUM_DATA$ ?>только сумму одной и той же категории) Блин трудно на словах! Вот к примеру: У меня 2е категории: "Дополнительные батареи" и "Чехлы силиконовые" в одной 4ре товара, во второй 2 товара. Если прописывать это: <? $NUM_DATA$+$NUM_DATA$ ?>, то высвечивает: 8 товаров и 4 товаров, а я хочу что бы складывало количество товаром между категориями. Вот и не могу придумать как правильно оператор прописать! Сообщение отредактировал GreySon - Вторник, 11 Фев 2014, 18:12:07
|
Maks_Smela, смотрите список кодов под формой редактирования шаблона. Не все коды работают во всех шаблонах.
GreySon, под формой для редактирования шаблонов есть подсказка для условных операторов. Там есть синтаксис и расписано как и что. Если условие написано с нарушением синтаксиса, оно работать не будет. И учтите, что не все действия, которые хочется, можно произвести. Повторюсь - проговорите условие словами. Пока не выкристаллизуется это, никакой код составить не получится. Метод тыка с большой вероятностью не поможет. Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
|
Selena, именно на персональной странице он должен работать.
|
Selena, А проговорить это так: "Количество товаров категории1 + Количество товаров категории2 + ... Количество товаров категории10 = 46"
Простите, может Вас не понял)))) На счет подсказки уже раз пять проштудировал!))) И я так понял что общее количество товаров не получится вывести на странице((( |
Maks_Smela, вот код стандартной персональной страницы, на которой всё работает:
Код <html> <head> <title>Информация о пользователе</title> <link type="text/css" rel="StyleSheet" href="/.s/src/css/1064.css"> </head> <body> <table border="0" cellpadding="0" cellspacing="0" width="100%" id="casing" class="popuptable"> <tr><td><div class="popuptitle">Информация о пользователе</div><div class="popupbody"><div align="center"> <script type="text/javascript">if (window.name.length>2){window.resizeTo(750,420);}</script> <style type="text/css">.udtb {text-align:left;padding:3px;} .udtlb {clear:left;float:left;width:150px;}</style> <div style="position:relative;float:right;text-align:center;"> <?if($_AVATAR$)?>$_AVATAR$ <?endif?> <?if($UNET_ID$)?><div style="padding-bottom:4px;"><img alt="" style="vertical-align:-4px;" border="0" src="http://s104.ucoz.net/img/ma/uid.gif"> <a href="$UNET_PROFILE_URL$" target="_blank"><b>uID профиль</b></a></div><?endif?> <?if($_CHANGE_DETAILS_URL$)?>[ <a href="$_CHANGE_DETAILS_URL$">Изменить данные</a> ]<?endif?> <?if($_PM_READ_URL$)?><div style="padding-top:4px;" id="userPMread">[ <a href="$_PM_READ_URL$">Читать ЛС (<b>$UNREAD_PM$</b>)</a> ]</div><?endif?> <?if($_PM_SEND_URL$)?><div style="padding-top:4px;" id="userPMread">[ <a href="$_PM_SEND_URL$" title="Отправить личное сообщение">Отправить ЛС</a> ]</div><?endif?> </div> <div id="block1" class="udtb"><div class="udtlb">Пользователь:</div> <a href="javascript://" rel="nofollow" onclick="prompt('Адрес профиля данного пользователя','$_PROFILE_URL$')"><b>$_USERNAME$</b></a> <?if($MODER_PANEL$)?>[id: <b>$_USER_ID$</b>]<?endif?> <?if($_RANK_NAME$)?><span title="Ранг: $_RANK$">$_RANK_ICON$</span> [ $_RANK_NAME$ ]<?endif?></div> <?if($_BANNED_TILL$)?> <?if($_BANNED_TILL$="1")?><div id="blockBanned" style="text-align:center;padding:3px;"><b style="color:red;">Активность заблокирована навсегда!</b></div><?else?><div id="blockBanned" style="text-align:center;padding:3px;">Активность заблокирована до $_BANNED_TILL$</div><?endif?> <?endif?> <div id="block2" class="udtb"><div class="udtlb">Группа:</div> <?if($MODER_PANEL$)?> $MODER_PANEL$ <?else?> $_GROUP_NAME$ <?if($_GROUP_ICON$)?>$_GROUP_ICON$<?endif?> <?endif?> </div> <?if($AWARDS_READ_URL$ || $_REP_READ_URL$)?> <div id="block25" class="udtb"><div class="udtlb">Поощрения:</div> <?if($AWARDS_READ_URL$)?><a href="$AWARDS_READ_URL$" title="Список наград">Награды (<b>$AWARDS$</b>)</a> <?if($AWARDS_DO_URL$)?>[<a href="$AWARDS_DO_URL$">+</a>]<?endif?><?endif?><?if($_REP_READ_URL$)?><?if($AWARDS_READ_URL$)?> <?endif?><a title="Смотреть историю репутации" class="repHistory" href="$_REP_READ_URL$">Репутация (<b>$_REPUTATION$</b>)</a><?if($_REP_DO_URL$)?> [<a href="$_REP_DO_URL$">±</a>]<?endif?><?endif?></div> <?endif?> <?if($_BAN_READ_URL$)?> <div id="block3" class="udtb"><div class="udtlb">Замечания:</div> <a class="banPercent" title="Смотреть историю замечаний" href="$_BAN_READ_URL$">$_BAN_PERCENT$%</a> <?if($_BAN_DO_URL$)?> <a href="$_BAN_DO_URL$"><img alt="" style="margin:0;padding:0;border:0;" title="Изменить уровень замечаний" src="http://s104.ucoz.net/img/fr/wm.gif" width="10" height="9" /></a><img alt="" style="margin:0;padding:0;border:0;" src="http://s104.ucoz.net/img/fr/w$_BAN_RATING$.gif" width="49" height="9" /><a href="$_BAN_DO_URL$"><img alt="" style="margin:0;padding:0;border:0;" title="Изменить уровень замечаний" src="http://s104.ucoz.net/img/fr/wp.gif" width="10" height="9" /></a><?endif?></div> <?endif?> <?if($_NAME$)?> <div id="block5" class="udtb"><div class="udtlb">Имя:</div> $_NAME$ <?if($_GENDER_NAME$)?>[ $_GENDER_NAME$ ]<?endif?></div> <?endif?> <?if($_STATUS$)?> <div id="block6" class="udtb"><div class="udtlb">Статус:</div> $_STATUS$</div> <?endif?> <?if($MODER_PANEL$)?> <div id="block7" class="udtb"><div class="udtlb">Регистрационный IP:</div> <a href="https://apps.db.ripe.net/search/query.html?searchtext=$_IP_ADDRESS$" target="_blank">$_IP_ADDRESS$</a></div> <?endif?> <?if($_REG_TIME$)?> <div id="block8" class="udtb"><div class="udtlb">Дата регистрации:</div> $_REG_TIME$</div> <?endif?> <?if($_LOG_TIME$)?> <div id="block9" class="udtb"><div class="udtlb">Дата входа:</div> $_LOG_TIME$</div> <?endif?> <?if($_BIRTHDAY$)?> <div id="block10" class="udtb"><div class="udtlb">Дата рождения:</div>$_BIRTHDAY$ [ <b>$_AGE$</b> $_ZODIAC$ ]</div> <?endif?> <div id="block11" class="udtb"><div class="udtlb">E-mail:</div> <?if($_IS_OWN_PROFILE$)?>$_EMAIL$ <?if($_EMAIL_IS_HIDDEN$)?><span style="font-size:7pt">(Адрес скрыт)</span><?endif?> <?else?> <?if($MODER_PANEL$)?><a href="mailto:$_EMAIL$">$_EMAIL$</a> <?if($_EMAIL_IS_HIDDEN$)?><span style="font-size:7pt">(Адрес скрыт)</span><?endif?> <?if(!$_EMAIL_IS_VERIFIED$)?><span style="color:red;" title="Not verified e-mail">*</span><?endif?> <?else?> <?if($_SEND_EMAIL_URL$)?><a href="$_SEND_EMAIL_URL$">Написать письмо пользователю</a> <?else?>$_EMAIL$ <?endif?> <?endif?> <?endif?> <?if($_EMAIL_VERIFICATION_URL$)?>[ <b><a href="$_EMAIL_VERIFICATION_URL$"><span style="color:red">Подтвердить e-mail</span></a></b> ]<?endif?></div> <?if($_WWW$)?> <div id="block12" class="udtb"><div class="udtlb">Сайт:</div> $_WWW$</div> <?endif?> <?if($_ICQ$)?> <div id="block13" class="udtb"><div class="udtlb">ICQ:</div> $_ICQ$</div> <?endif?> <?if($_AOL$)?> <div id="block14" class="udtb"><div class="udtlb">AOL:</div> $_AOL$</div> <?endif?> <?if($_MSN$)?> <div id="block15" class="udtb"><div class="udtlb">MSN:</div> $_MSN$</div> <?endif?> <?if($_YAHOO$)?> <div id="block16" class="udtb"><div class="udtlb">Yahoo:</div> $_YAHOO$</div> <?endif?> <?if($_PHONE$)?> <div id="block26" class="udtb"><div class="udtlb">Телефон:</div>$_PHONE$ <?if($_IS_OWN_PROFILE$ || $MODER_PANEL$)?> <?if($_PHONE_IS_HIDDEN$)?><span style="font-size:7pt">(Телефон скрыт)</span><?endif?> <?endif?> </div> <?endif?> <?if($_COUNTRY$)?> <div id="block18" class="udtb"><div class="udtlb"><?if($UNET_ID$)?>Место проживания<?else?>Страна<?endif?>:</div> $_COUNTRY$</div> <?endif?> <?if($_STATE$)?> <div id="block19" class="udtb"><div class="udtlb">Штат:</div> $_STATE$</div> <?endif?> <?if($_CITY$)?> <div id="block20" class="udtb"><div class="udtlb">Город:</div> $_CITY$</div> <?endif?> <?if($_SIGNATURE$)?> <div id="block21" class="udtb"><div class="udtlb">Подпись:</div> $_SIGNATURE$</div> <?endif?> <?if($_IS_ACTIVITY$)?> <div id="block25" class="udtb"><hr></div><div id="block22" class="udtb" style="text-align:center"> <?if($_COM_ENTRIES$)?> | <a href="$_COM_ACTIVITY_URL$" target="_blank">комментарии(<b>$_COM_ENTRIES$</b>)</a><?endif?> <?if($_FORUM_ENTRIES$)?> | <a href="$_FORUM_ACTIVITY_URL$" target="_blank">форум(<b>$_FORUM_ENTRIES$</b>)</a><?endif?> <?if($_BLOG_ENTRIES$)?> | <a href="$_BLOG_ACTIVITY_URL$" target="_blank">блог(<b>$_BLOG_ENTRIES$</b>)</a><?endif?> <?if($_NEWS_ENTRIES$)?> | <a href="$_NEWS_ACTIVITY_URL$" target="_blank">новости(<b>$_NEWS_ENTRIES$</b>)</a><?endif?> <?if($_PUBL_ENTRIES$)?> | <a href="$_PUBL_ACTIVITY_URL$" target="_blank">статьи(<b>$_PUBL_ENTRIES$</b>)</a><?endif?> <?if($_LOAD_ENTRIES$)?> | <a href="$_LOAD_ACTIVITY_URL$" target="_blank">файлы(<b>$_LOAD_ENTRIES$</b>)</a><?endif?> <?if($_DIR_ENTRIES$)?> | <a href="$_DIR_ACTIVITY_URL$" target="_blank">сайты(<b>$_DIR_ENTRIES$</b>)</a><?endif?> <?if($_BOARD_ENTRIES$)?> | <a href="$_BOARD_ACTIVITY_URL$" target="_blank">объявления(<b>$_BOARD_ENTRIES$</b>)</a><?endif?> <?if($_PHOTO_ENTRIES$)?> | <a href="$_PHOTO_ACTIVITY_URL$" target="_blank">фото(<b>$_PHOTO_ENTRIES$</b>)</a><?endif?> <?if($_STUFF_ENTRIES$)?> | <a href="$_STUFF_ACTIVITY_URL$" target="_blank">игры(<b>$_STUFF_ENTRIES$</b>)</a><?endif?> <?if($_SHOP_ENTRIES$)?> | <a href="$_SHOP_ACTIVITY_URL$" target="_blank">товары(<b>$_SHOP_ENTRIES$</b>)</a><?endif?> <?if($_VIDEO_ENTRIES$)?> | <a href="$_VIDEO_ACTIVITY_URL$" target="_blank">видео(<b>$_VIDEO_ENTRIES$</b>)</a><?endif?> |</div> <?endif?> <?if($USERS_LIST_URL$)?> <hr /><form method="post" action="/index" name="fuser" style="margin:0px"><table border="0" cellpadding="4" cellspacing="1" width="100%" id="usch"><tr><td align="center"><input type="button" class="allUsersBtn" style="width:150px;" onclick="window.location.href='/index/15-1'" value="Список пользователей" /> <input type="text" class="uSearchFl" name="user" style="width:240px;text-align:center;" size="20" value="Логин пользователя" onclick="if (this.value=='Логин пользователя'){this.value='';}" maxlength="25" /> <input type="submit" class="uSearchFlSbm" style="width:150px;" value="Найти пользователей" /></td></tr></table><input type="hidden" name="a" value="15" /></form> <?endif?></div></div></td></tr> </table> </body> </html> Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
|
А проговорить это так: "Количество товаров категории1 + Количество товаров категории2 + ... Количество товаров категории10 = 46" Это не условие. Разве сами не чувствуете по конструкции? Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
|
Selena,
Понятно что условие пишется через <?if($код$)?>, <?else?> и <?endif?>. Но мне нужно было вывести числовое выражение, а числовое выводится с помощью спецскобок <? (сумма, вычитание, деление, умножение) ?>, вот и я хотел заключить $NUM_DATA$ в эти самые скобки и получить результат с помощью сложения. Спасибо, что уделили время и внимание, но я нашел решение проблемы) Нашел в информере "счетчик материалов", там вот возможно это все реализовать, с помощью кода $SHOP_GOODS$)))) |
GreySon, вы не получите результат, пока не определите при каком условии должна появиться сумма.
И да, информеры решают многие задачи. ) Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
|
При верстке профиля пользователя столкнулась с интересной вещью.
Код $USER_AVATAR_URL$ почему-то ссылается на аватар того, кто просматривает профиль. То есть если я его использую, то при открытии любого профиля отображается один и тот же аватар - мой. А зачем? Не вижу практического применения... Меня это привело в замешательство, т.к. мне нужна была именно ссылка на аватар пользователя, чтобы использовать в теге имг, и именно того, кому принадлежит профиль, это же логично. С реальной аватаркой нашла только код $_AVATAR$, который выводит уже готовый тег имг, завернутый в спан. Выкрутиться удалось, конечно, но мне этот лишний спан нужен не был, я бы лучше ид прописала самой картинке. Может, я куда-то не туда смотрю и что-то не нашла? Подскажите, пожалуйста. |
|
| |||
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!