Модератор форума: 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$)?> |
ArtemDpUa, нет, и это сделать не так просто, и за просто так Вам его никто не напишет. Если готовы заплатить за него, найдите фрилансера например на http://uwork.me/ .
|
доброго времени суток...
Помогите написать условие: если "день= и месяц=" то выполняется условие |
Можно ли сделать, чтобы если пользователь набрал знаков больше в форуме с ид=1, чем в форуме с ид=2, то "злой", если наоборот, то "хороший", если поровну "нейтральный"... Можно ли вообще с помощью УО ставить зависимость НЕ просто по количеству знаков, а по количеству знаков в определенном форуме?
Как то: Если пользователь не писал сообщения то вывести текст = "нейтральный" ИНАЧЕЕсли пользователь набрал больше сообщений в форуме ид=2 "злой форум", чем в форуме с ид=1 "добрый форум", то вывести текст = "злой", ИНАЧЕ = "хороший". и закончить. <?if($POSTS$="0")?>нейтральный<?else?><?if($POSTS$ в $FID$="1"$>$POSTS$ в $FID$="2")?>злой<?else?>добрый<?endif?><?endif?> |
Ребят вопрос такой, :
длок пользователя (залогиневшегося ) - на сайте в блоке тогда у меня отображается его личные сообщения + ссылка на профиль + ссылка на выход, помимо этого ещё и аватар если тот есть у юзера Code <?if($_AVATAR$)?><img src="/./s/avatarno.gif" ><?else?><img src="$USER_AVATAR_URL$"><?endif?> Code <?if($USER_AVATAR_URL$)?><img src="/./s/avatarno.gif" ><?else?><img src="$USER_AVATAR_URL$"><?endif?> Code <img src=""> p.s. сам блок активен только для userLoged-in. ≡ Ðream over, Welcom to REALiTY..!..
Сообщение отредактировал AlexKF - Пятница, 04 Мар 2011, 16:20:32
|
AlexKF, наоборот потому что делаются условия.
<?если($_AVATAR$)?>выводить$_AVATAR$<?иначе?>выводить иначе<?endif?> для профиля: Code <?if($_AVATAR$)?>$_AVATAR$<?else?><img src="/noavatar.gif" ><?endif?> Для страниц различных, кроме форума: Code <?if($USER_AVATAR_URL$)?><img src="$USER_AVATAR_URL$"><?else?><img src="/noavatar.gif" ><?endif?> |
подскажите пожалуйста, каким оператором вывести месяц в заголовке страницы (не номер месяца, а название)
|
tanchik,
<?if($MONTH$="1")?>январь<?endif?> .... |
Скажите пожалуйста, возможно ли реализовать в УО что-то типо этого:
Code <?if($USER_LOGGED_IN$)?>Привет, $USER_FULL_NAME$<?if($USER_BIRTHDAY$='$TODAY$')?>, с днем рождения!<?else?>!<?endif?><?endif?> Т.е. если юзер залогинен, то привет ему ( и назвать по полному имени), а если он еще и именинник, то с днем рождением его, и конец(два раза) Оформление подписи нарушает правила форума Сообщества uCoz. Подробнее. / Scorpik427.
|
nanankakos, Вот так:
Code <?if($USER_LOGGED_IN$)?>Привет, $USER_FULL_NAME$<?if($USER_BIRTHDAY$='$DATE$')?>, с днем рождения!<?else?>!<?endif?><?endif?> Здесь заменили <?if($USER_BIRTHDAY$='$TODAY$')?> на <?if($USER_BIRTHDAY$='$DATE$')?> --- Сообщение отредактировал GBAGames - Суббота, 12 Мар 2011, 02:27:01
|
Quote (GBAGames) Здесь заменили <?if($USER_BIRTHDAY$='$TODAY$')?> на <?if($USER_BIRTHDAY$='$DATE$')?> Так оно работать точно не будет, потому как $USER_BIRTHDAY$ выводит дату в формате yyyy-mm-dd и с годом рождения, а $DATE$ - в формате, заданном настройками, и с текущим годом. Так что эти две переменные совпасть уж точно никогда не могут. Кроме того, кавычки вокруг '$DATE$' в любом случае здесь надо снять. Правильное условие проверки должно тогда уж быть примерно таким: <?if(substr($USER_BIRTHDAY$,5,2)-$MONTH$=0 && substr($USER_BIRTHDAY$,8,2)-$DAY$=0)?> Брать здесь разность вместо прямого сравнения приходится из-за того, что $MONTH$ и $DAY$ выдают числа, а subsrt - подстроку с возможным нулем впереди. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Суббота, 12 Мар 2011, 15:17:45
|
здравствуйте, подскажите как это зделать - после того как пройдет 23 чеса то што написано в условном операторе скрывалось бы
пример добавлена новость и как только после добавление новости прошло 23 чеса новость бы скрывалась ( мне надо не для новости но это пример) за ранее спасибо Кто хочет-ищет Возможности Кто не хочет-ищет Причины
|
Quote (sep) мне надо не для новости но это пример В шаблонах практически всех материалов доступна дата добавления этого материала (дата последнего изменения, к сожалению, недоступна) - вот и сравнивайте ее с текущей датой в шаблонах вывода материалов соответствующих модулей. Как - немного раньше подобное уже обсуждалось. Вам нужно сравнивать $ADD_DATE$ с $DATE$ и $ADD_TIME$ с $TIME$. Типа: "если (($ADD_DATE$ = $DATE$) AND ((HOUR($TIME$)*60+MINUTES($TIME$)) - (HOUR($ADD_TIME$)*60+MINUTES($ADD_TIME$))) > (23*60)) OR ((($DATE$ - $ADD_DATE$) = 1) AND (HOUR($TIME$) < HOUR($ADD_TIME$))) то выводим материал" Соответственно, HOUR(...) надо заменить на код выделения ЧАСА из строки времени а MINUTES - выделение МИНУТ. Ну и, естественно, правильно реализовать оператор ($DATE$ - $ADD_DATE$) - он должен возвращать разницу в днях, учитывая месяц и год. И, кстати, не сочтите за нравоучение - было бы неплохо "подтянуть" грамотность. Сообщение отредактировал sch779 - Понедельник, 14 Мар 2011, 21:19:44
|
| |||