Модератор форума: 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$)?> |
Точно также я хотел еще задать свой цвет для разных групп пользователей на форуме (в стандартном шаблоне был только персональный цвет для группы администраторы - красный, и все). Подумал сделать через системный оператор в Виде материалов форума, используя модуль $GROUP_ID$, но опять-таки, ведь это можно сделать и через CSS? Но проблема в том, что в у меня в CSS значений для других групп кроме как администраторов нет, а как написать эти значения правильно (для модераторов, пользователей, проверенных и тэдэ), чтобы они работали, я к сожалению не знаю... Помогите
Добавлено (18-Июл-2011, 16:11:35) --------------------------------------------- Поискал в интернете и наткнулся на более менее подходящий для моей потребности код для CSS: Quote a.groupOther1:link,a.groupOther1:visited,a.groupOther1:hover {color:DarkCyan;} Но он нуждается в определенной корректировке, ведь русскими буквами писать нельзя же, а если тупо вставить к примеру id=3 (модераторы), в общем я запутался кто знает - подскажите Добавлено (18-Июл-2011, 18:23:13) ~ status: online ~
Сообщение отредактировал GORDON-HLCS - Понедельник, 18 Июл 2011, 16:29:55
|
Quote (GORDON-HLCS) Но он нуждается в определенной корректировке Стили дополнительных групп идут в таком порядке, в котором были созданы сами группы дополнительные. Подробнее... .::I'll be back::.
Выбор за тобой! |
Владислав1999, да я это уже понял, также добавил и тэги
Quote /* User Group Marks */ /* ---------------- */ тоже ничего - везде только цвет, установленный для пользователей... возможно строки нужно ставить в какое-то определенное место? но я уже пробовал и в начале и в конце и в середине между тэгами Containers start вставлял ~ status: online ~
|
Владислав1999, спасибо, получилось... но вот снова беда - я думал, что на форуме под аватаром каждая группа пользователей также приобретет индивидуальный цвет, но цвет каждой группы остался одинаковым (черный)
Я в принципе подразумевал, что в этой зоне цвет не изменится и догадывался, что там без условного оператора никак не обойтись, применяя $GROUP_ID$ - я пытался самостоятельно построить условный оператор, опираясь на схему других операторов в шаблонах своего сайта, но у меня ничего не выходит Возможно это потому, что оператор не поддерживает более 2+ значений или нет? (мне необходимо 11 значений) или вновь нужно прибегнуть к таблице стилей CSS? Например вот одна из строк: Quote a.groupAdmin:link,a.groupAdmin:visited,a.groupAdmin:hover {color:red;} где link, visited, hover отвечают за области где производится индивидуальный цвет для каждой группы как я понял то есть если в эту строку добавить следующее: Quote a.groupAdmin:link,a.groupAdmin:visited,a.groupAdmin:hover,a.groupAdmin:forum {color:red;} и так для остальных строк, это поможет? Помогите P.S. - такой же условный оператор мне необходим и в персональной странице пользователя в строке Группа ~ status: online ~
Сообщение отредактировал GORDON-HLCS - Понедельник, 25 Июл 2011, 21:18:54
|
Quote (GORDON-HLCS) где link, visited, hover отвечают за области где производится индивидуальный цвет для каждой группы как я понял Вы, коллега, совсем запутались! Для начала, я советовал бы Вам почитать хотя-бы основы HTML и CSS. В частности, псевдоклассы a:link, a:visited и a:hover отвечают за стиль отображения ссылки в различных состояниях: link - исходный вид ссылки, которая еще не посещалась пользователем; visited - ссылка, которая уже посещалась пользователем; hover - вид ссылки при наведении на нее курсора мыши. И они совершенно никак не связаны с областями страницы или разделами сайта! Кстати, название класса в CSS также не имеет совершенно никакого отношения к областям страницы, разделам сайта или группам пользователей! И сработает этот класс только тогда, когда на него будет ссылка в теге HTML-страницы. Т.е., если в Ваших шаблонах нет html-тегов с классом groupAdmin и подобными, то сколько-бы (и в каком либо виде) Вы не писали в CSS классы с groupAdmin - это совершенно ни к чему не приведет! К примеру, в HTML пишем: Code <div>Группа: <span class="userGroup">$USER_GROUP$</span></div> Если в CSS-файле (или в секции STYLE страницы) не будет прописан класс "userGroup", то название группы пользователя будет выведено в том-же виде, что и лэйбл "Группа:". Если-же в CSS-файл добавить такую запись: Code .userGroup {font-size:10pt; color:red; font-weight:bold} |
GORDON-HLCS, повторите свой вопрос,пожалуйста.
Если вы хотите цветные ники на форуме в сообщениях, то прочтите это сообщение://forum.ucoz.ru/forum/39-34459-541792-16-1261633819 .::I'll be back::.
Выбор за тобой! Сообщение отредактировал Владислав1999 - Понедельник, 25 Июл 2011, 23:09:25
|
Владислав1999, нет нет, мне не нужны эти замудрения вроде цветных ников и так далее, просто после того как вы мне помогли, все группы пользователей приобрели свой персональный цвет как я и хотел (администраторы - красный, модераторы - синий и т.д.) но вот на форуме под аватаром пользователя в колонке Группа: цвет для всех групп остался одинаковым - черный. Я убрал в шаблоне Вид материалов форума код <font color="black"></font>, думал что этот код конфликтует с установленным стилем, но нет - это не помогло...
~ status: online ~
|
Quote (GORDON-HLCS) цвет для всех групп остался одинаковым - черный Не знаю как в Ваших шаблонах, а в моих там такой код: Code <?if($GROUP_NAME$)?><div class="postUserGroup">Группа: $GROUP_NAME$</div><?endif?> Т.е., как видно, стиль (включая, естественно, и цвет) всей надписи "Группа: ..." определяется классом ".postUserGroup". Если бы на одной странице было только одно сообщение, то легко можно было-бы обойтись переопределением параметров этого класса вначале текущей страницы в зависимости от группы автора сообщения - в этом случае стиль надписи изменился бы только на данной странице. Но на одной странице может быть несколько сообщений от авторов с разной группой - поэтому прийдется придумать что-то другое. К примеру, так: Code <?if($GROUP_NAME$)?> <div class="postUserGroup">Группа: <span style="color:<?if($GROUP_ID$=3)?>blue<?else?><?if($GROUP_ID$=4)?>red<?else?>black<?endif?><?endif?>"> $GROUP_NAME$</span></div> <?endif?> Теперь, в форуме группа "Модераторы" будет выводиться синим цветом, "Администраторы" - красным, а все остальные - черным. Правда, если хотите полностью контролировать стиль этой надписи в данном месте, то или надо убрать упоминание класса ".postUserGroup" или определить его нужными своствами - все свойства надписи "Группа" всегда будут определяться классом ".postUserGroup", а в названии группы этим классом будут определяться все свойства за исключением цвета. Сообщение отредактировал sch779 - Вторник, 26 Июл 2011, 01:09:11
|
sch779, спасибо помогло код условного оператора почти похож на мой экспериментальный код, только без кучи лишних тегов, которые и мешали достижению желаемого результата :D еще раз благодарю!!!
Добавлено (28-Июл-2011, 11:39:37) --------------------------------------------- Всё получилось, спасибо, не актуально... но актуально следующее Я продолжаю менять цвета, и решив одну проблему сразу сталкиваюсь с другой - ну не могу я никак подружиться с условными операторами, хоть ударь и тут просматривал, и в своих шаблонах на готовых УО учился, но стоит прибегнуть к составлению нового условного оператора, как начинаются проблемы В общем суть: Я хотел, также используя УО, задать индивидуальные цвета для парней и девушек в модуле $USERNAME$ на форуме - для парней синий, а для девушек розовый. Начал применять различные виды операторов, но цвет парней и девушек остался одинаковым (по умолчанию оранжевый - цвет ссылок) помогите пожалуйста, вот мой набросок условного оператора, что тут неправильно: Quote <?if($USERNAME$)?><?if($GENDER_1$)?><a class="postUser" href="javascript://" rel="nofollow" color="blue" onclick="emoticon('$USERNAME$,');return false;">$USERNAME$<?else?><?if($GENDER_2$)?><a class="postUser" href="javascript://" rel="nofollow" color="pink" onclick="emoticon('$USERNAME$,');return false;">$USERNAME$</a><?endif?><?endif?><?endif?> Жирным выделены области, которые по моему скромному мнению могут быть заданы не правильно, из-за чего собственно у меня и не получается Заранее спасибо! Добавлено (28-Июл-2011, 11:44:28) ~ status: online ~
Сообщение отредактировал GORDON-HLCS - Четверг, 28 Июл 2011, 11:40:33
|
Здравствуйте, у меня в каталоге статей есть 20 категорий, одна статья может находится одновременно в 5 разных категориях, и если из этих пяти новость вошла в категорию телевизоры то должен добавится плеер.
Пробывал так: <?if($CAT_NAME$='телевизоры')?>тут код плеера<?endif?> не работает. <?if($CID$=24)?>тут код плеера<?endif?> не работает. <?if($SID$=24)?>тут код плеера<?endif?> не работает. <?if($ENTRY_CATS$='телевизоры')?>тут код плеера<?endif?> не работает. Кто подскажет как сделать что бы работало? я с Ucoz
|
ExLuSSiVVe,
Quote (ExLuSSiVVe) Пробывал так: ... По условным операторам есть обширная справка, и данная тема весьма информативна, а перебирать все подряд ... И, к слову, $ENTRY_CATS$ никогда и нигде не будет равен «телевизоры», по понятным причинам... Работать будет только: Code <?if($CAT_NAME$='телевизоры')?>тут код плеера<?endif?> Code <?if($CID$='24')?>тут код плеера<?endif?> <?if($SID$='24')?>тут код плеера<?endif?> ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 02 Авг 2011, 16:27:19
|
спасибо
Добавлено (02-Авг-2011, 22:24:10) я с Ucoz
|
| |||