Модератор форума: 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$)?> |
Всем привет Друзья помогите сделать с помощью условных операторов такую функцию:
Нужно что бы показывало текст, картинку и тд с определенной даты... Например: При добавлении фильма я в дополнительном поле напишу дату 11.01.2016 Нужно что бы до этой даты показывало один текст или картинку а в тот день который я напишу в дополнительном поле менялось на другое... Все обыскался никак не могу найти похожее и не кто не может помочь... Вот тут парень пытался обращаться с этим вопросом но ниче не получилось... |
Всем привет Друзья помогите сделать с помощью условных операторов такую функцию:Нужно что бы показывало текст, картинку и тд с определенной даты... Например: При добавлении фильма я в дополнительном поле напишу дату 11.01.2016 Нужно что бы до этой даты показывало один текст или картинку а в тот день который я напишу в дополнительном поле менялось на другое... Все обыскался никак не могу найти похожее и не кто не может помочь... Вот тут парень пытался обращаться с этим вопросом но ниче не получилось... Попробуй так: Код <?if($ДОПОЛНИТЕЛЬНОЕ_ПОЛЕ$<='11.01.2016')?>ОДНО<?else?>ВТОРОЕ<?endif?> Если значение в дополнительном поле равно, либо меньше 11.01.2016,то выдаст ОДНО, если нет, то ВТОРОЕ $ДОПОЛНИТЕЛЬНОЕ_ПОЛЕ$ - код твоего дополнительного поля. Кстати такое условие с датой отлично работает: Код <?if($DATE$='11.01.16')?>ОДНО<?else?>ВТОРОЕ<?endif?> Формат даты в условии, должен быть одинаковым с форматом даты в общих настройках панель управления сайтом WAV-LIBRARY.NET - Библиотека звуков. Бесплатные звуки, шумовые эффекты, сэмплы и музыка в WAV, MP3, OGG форматах.
Сообщение отредактировал vredniey-faktor - Понедельник, 11 Янв 2016, 13:13:25
|
Попробуй так: <?if($ДОПОЛНИТЕЛЬНОЕ_ПОЛЕ$<='11.01.2016')?>ОДНО<?else?>ВТОРОЕ<?endif?>1 Если значение в дополнительном поле равно, либо меньше 11.01.2016,то выдаст ОДНО, если нет, то ВТОРОЕ $ДОПОЛНИТЕЛЬНОЕ_ПОЛЕ$ - код твоего дополнительного поля. Кстати такое условие с датой отлично работает: <?if($DATE$='11.01.16')?>ОДНО<?else?>ВТОРОЕ<?endif?>1 Формат даты в условии, должен быть одинаковым с форматом даты в общих настройках панель управления сайтом Не получается |
bit_vlad, и не получится, т.к. это
Цитата <?if($DATE$='11.01.16')?>ОДНО<?else?>ВТОРОЕ<?endif?> работает, только если даты равны. Потому что тупо сравниваются две строки. Здесь все намного сложнее. Нужно отдельно сравнивать год, месяц и дату. Причем условия вкладывать друг в друга. Получится 3-х уровневая вложенность. Тут выйдет метровый код. Рублей так на 500 Муж рассказал жене, что у него есть любовница. Причина смерти: коронавирус.
Сообщение отредактировал leonoff(on) - Понедельник, 11 Янв 2016, 15:32:36
|
bit_vlad, и не получится, т.к. это Цитата <?if($DATE$='11.01.16')?>ОДНО<?else?>ВТОРОЕ<?endif?> работает, только если даты равны. Потому что тупо сравниваются две строки. Здесь все намного сложнее. Нужно отдельно сравнивать год, месяц и дату. Причем условия вкладывать друг в друга. Получится 3-х уровневая вложенность. Тут выйдет метровый код. Рублей так на 500 А кто сможет это реализовать для моего сайта ? |
Где добавляешь фильмы? в каталог файлов, или в каталог статей, блог или куда? и Напиши свой код дополнительного поля, как оно у тебя в шаблоне выглядит?
WAV-LIBRARY.NET - Библиотека звуков. Бесплатные звуки, шумовые эффекты, сэмплы и музыка в WAV, MP3, OGG форматах.
|
Где добавляешь фильмы? в каталог файлов, или в каталог статей, блог или куда? и Напиши свой код дополнительного поля, как оно у тебя в шаблоне выглядит? Добавляю премьеры которые должны выйти или которые недавно вышли Добавляю через модуль Доска объявлений Код дополнительного поля: Код $OTHER3$ Формат даты и времени в Общих настройках ПУ стоит вот такой 25.02.2005 Я использую два дополнительных поля: В одно я пишу когда выйдет например 14 января а второе оставляю пустым после того как дата наступает приходится менять в ручную писать эту дату в другое поле... А я хочу что бы все менялось автоматом написав в одно поле дату... Через условные коды только добился вот этого: Напишешь в первом поле дату будет красная иконка Напишешь во втором поле дату будет зеленая иконка как на скрине Вот такой код я использовал для условных: Код <?if($OTHER3$)?><div class="kinooff" style="" align="center"> <span class="statusOffline"> <img src="/images/kinooff.png" alt="" title="Скоро в кино с: $OTHER3$"> </span> </div> <style>.kinooff {position:absolute; margin-top:-0px; margin-left:5px;} </style><?endif?> <?if($OTHER4$)?><div class="kinoon" style="" align="center"> <span class="statusOffline"> <img src="/images/kinoon.png" alt="" title="Уже в кино с: $OTHER4$"> </span> </div> <style>.kinoon {position:absolute; margin-top:-0px; margin-left:5px;} </style><?endif?> Прикрепления:
8721252.jpg
(69.2 Kb)
|
bit_vlad, с учетом того, что тут не надо проверять еще и время набросал код.
Условные обозначения:
Вместо content1 и content2 ставим свое разумеется Код <? if ( $YEAR$ == substr($OTHER3$,-4) ) ?> <? if ( $MONTH$ > int ( substr($OTHER3$,3,2) ) ) ?> content2 <? else ?> <? if ( $DAY$ >= int (substr($OTHER3$,0,2)) ) ?> content2 <? else ?> content1 <? endif ?> <? endif ?> <? else ?> content2 <? endif ?> Формат даты в поле other3 должен быть четко дд.мм.гггг (например, 11.01.2016) Муж рассказал жене, что у него есть любовница. Причина смерти: коронавирус.
Сообщение отредактировал leonoff(on) - Понедельник, 11 Янв 2016, 16:35:26
|
bit_vlad, с учетом того, что тут не надо проверять еще и время набросал код.Условные обозначения: content1 - текущая дата меньше той, что прописана в доп.поле content2 - текущая дата больше или равна той, что прописана в доп.поле Вместо content1 и content2 ставим свое разумеется <? if ( $YEAR$ == substr($OTHER3$,-4) ) ?> <? if ( $MONTH$ > int ( substr($OTHER3$,3,2) ) ) ?> content2 <? else ?> <? if ( $DAY$ >= int (substr($OTHER3$,0,2)) ) ?> content2 <? else ?> content1 <? endif ?> <? endif ?> <? else ?> content2 <? endif ?>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Формат даты в поле other3 должен быть четко дд.мм.гггг (например, 11.01.2016) Воооо все работает!!! Поставил дату 14.01.2016 показывает красным что типа скоро выйдет Потом поставил дату 11.01.2016 тоесть сегодняшнюю показывает зеленым что уже в кино! Спасибо тебе большое долго не мог реализовать это((( Ну это работает только на странице материала и комментарий к нему Мне нужно еще что бы показывалось в вид материалов модуля Доска объявлений Так как в вид материалов нету вот этих тегов $DAY$ $MONTH$ $YEAR$ Из за этого не работает... ну а на странице материала и комментарий к нему все работает как часики |
bit_vlad, $DATE$ это дата добавления... перепутал
Муж рассказал жене, что у него есть любовница. Причина смерти: коронавирус.
Сообщение отредактировал leonoff(on) - Понедельник, 11 Янв 2016, 19:01:04
|
bit_vlad, ну js можно. В вид материалов вставить
Код <script> nowDate = new Date(); filmDate = new Date('<?substr($OTHER3$,-4)?>-<?int ( substr($OTHER3$,3,2) )?>-<?int (substr($OTHER3$,0,2))?>'); if ( nowDate >= filmDate ) { document.write('<div class="kinoon" style="position:absolute; margin-top:-0px; margin-left:5px;" align="center"><span class="statusOffline"><img src="/images/kinoon.png" alt="" title="Уже в кино с: $OTHER4$"></span></div>'); } else { document.write('<div class="kinooff" style="position:absolute; margin-top:-0px; margin-left:5px;" align="center"><span class="statusOffline"><img src="/images/kinooff.png" alt="" title="Скоро в кино с: $OTHER3$"></span></div>'); }; </script> Вот по этому я с подобными вопросами всегда отправляю на upartner. Кажется (задающему), что вопрос пустяковый, а времени отбирает... Очередной раз убедился, что нужно на partner.pro сразу отправлять когда видно, что возни много Муж рассказал жене, что у него есть любовница. Причина смерти: коронавирус.
|
ну js можно. В вид материалов вставить<script> nowDate = new Date(); filmDate = new Date('<?substr($OTHER3$,-4)?>-<?int ( substr($OTHER3$,3,2) )?>-<?int (substr($OTHER3$,0,2))?>'); if ( nowDate >= filmDate ) { document.write('<div class="kinoon" style="position:absolute; margin-top:-0px; margin-left:5px;" align="center"><span class="statusOffline"><img src="/images/kinoon.png" alt="" title="Уже в кино с: $OTHER4$"></span></div>'); } else { document.write('<div class="kinooff" style="position:absolute; margin-top:-0px; margin-left:5px;" align="center"><span class="statusOffline"><img src="/images/kinooff.png" alt="" title="Скоро в кино с: $OTHER3$"></span></div>'); }; </script>1 2 3 4 5 6 7 8 9 10 11 12 13 14 Вот по этому я с подобными вопросами всегда отправляю на upartner. Кажется (задающему), что вопрос пустяковый, а времени отбирает... Очередной раз убедился, что нужно на partner.pro сразу отправлять когда видно, что возни много Благодарю, все работает отлично наконец то нашел человека кто смог бы это реализовать! |
| |||