| Модератор форума: 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$)?> |
|
На персональной странице есть $_REG_TIMESTAMP$ , с ним все ОК получилось, но хотелось еще вывести информацию в Вид Материалов на форуме, а там только $REG_DATE$ .
Miss_Esq, мож подскажите полное условие ? Заранее спасибо ! Сообщение отредактировал LG-savikdvd_ - Пятница, 27 Апр 2012, 15:46:09
|
|
Неоднократно сталкиваюсь с одной проблемой при создании сайта - размещение одинакового блока информации в нескольких местах сайта. Испробовал разные варианты (информеры, удаленный код), но однозначного решения задачи так и нет.
Возникла идея: создать специальный системный код-контейнер ($USER_CONTAINER$), в который можно было бы размещать повторяющуюся информацию или часть html-кода. В общем, некий аналог глобального блока, но который будет более универсальным (глобальные блоки нельзя размещать на страницах сайта, а только в шаблонах). Принципиальное удобство: возможность однократного внесения изменений в данный блок, чтобы они отобразились сразу во всех местах вхождения на страницах. Пример: расширенная карточка предприятия с указанием перечня услуг и реквизитов, которая располагается в шапке и внизу страницы, в блоках title... Надеюсь, внятно объяснил идею. Любой Путь верный, что ведёт к Добру и Свету
Сообщение отредактировал Baddy - Суббота, 28 Апр 2012, 11:17:20
|
|
Baddy, предложение хорошее, только темой немного ошиблись, есть тема "Предложения по системе". Кстати, глобальные блоки и внутри друг-друга не работают.
Если индексация такого кода поисковиками и то, что его не будут видеть пользователи с отключённым JavaScript, не имеет значения, то решается встраиванием из подключаемого js-скрипта — типа document.write('ваше содержимое');. |
|
Baddy,
Quote (Baddy) в который можно было бы размещать повторяющуюся информацию или часть html-кода. В общем, некий аналог глобального блока, но который будет более А чем $ркод$ не подошёл? ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 |
|
Alexander_K, конечно имеет значение. Информация, которая будет повторяться на сайте должна быть индексируема и видна всем
Добавлено (28-Апр-2012, 11:40:27) Любой Путь верный, что ведёт к Добру и Свету
|
|
Baddy,
Quote (Baddy) что за ркод? не сталкивался Импорт удалённого кода. Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 |
|
Baddy, индексируема но в выдачу индекса не попадёт , а уж если умудритесь поисковикам подсовывать и индексировать именно это , как основное акцентированное содержание, то наверняка (яндекс 100%) выбросит эти страницы из индекса как одинаковые по содержанию ...
|
|
fflesh, использую удаленный код в настоящий момент, но не вполне удобно. Скажем, есть повторяющийся на страницах блок со ссылкой на прайс. Информация берется из специально созданного текстового файла. Чтобы его исправить, приходится сначала править сам файл, затем заливать на сайт, затем обновлять код, чтобы изменения отобразились. 3 ступени.
Согласитесь, было бы куда лучше напрямую править некий универсальный глобальный блок через ПУ, который после правки сразу бы отображался на страницах. В одно касание, тык-скыть. Miss_Esq, а если это, скажем, карточка предприятия? Т.е. это не совсем контент, а как раз та информация, которая по определению должна повторяться. Как тот же блок site_name или module_name? Добавлено (28-Апр-2012, 12:01:37) Любой Путь верный, что ведёт к Добру и Свету
|
|
Baddy, Если нужна только на страницах Редактора страниц , почему бы не прописать в шаблоне?
|
|
Miss_Esq, шаблон не подходит, поскольку жестко привязывает блок к определенному месту на страницах. А хотелось бы "универсального солдата", с успехом работающего и в разных местах на страничках, и в различных описаниях операторов и блоков в качестве title
Любой Путь верный, что ведёт к Добру и Свету
|
|
Kelin, спасибо за пример, чуть подредактировал и -
Code <?if(substr($REG_DATE$,3,2)>='04' && substr($REG_DATE$,0,2)>='17' && substr($REG_DATE$,6,4)>='2012')?>код<?endif?> все ок работает. |
|
fflesh, благодарю за ответ!
Quote (fflesh) substr strpos В итоге у меня получилась такая конструкция: Code <?substr($SWF_LINK_DIRECT$,30,strpos($SWF_LINK_DIRECT$,'/'))?> То есть, начиная с 30-го символа данный код вытаскивает из ссылки все до знака слэша ("/").... Например, есть такая ссылка: http://сторонний сайт/раздел/категория/vampire-girl-makeover/Bella化妆E.swf Мне надо достать отсюда только vampire-girl-makeover А в реале вытаскивает только 5 символов: vampi - я этого ну никак не понимаю... ссылка на мой сайт с этим примером (низ контентной части): http://gamebourg.com/stuff....PrNJida Был бы очень рад вашему ответу! Верстаю сайты на uCoz от 500 ք (Блочная верстка на HTML5)
ВКонтакте: http://vk.com/vg_forex Мой Мир: http://my.mail.ru/mail/vg_forex |
|
Quote (Baddy) шаблон не подходит, поскольку жестко привязывает блок к определенному месту на страницах. |
|
Ребятки, дорогие. Все предложения сводятся к попытке "почистить зубы через ноздри". В общем, этим сейчас и занимаюсь, используя удаленный код.
А идея проста и на поверхности - отдельная юкозовская команда. Есть же команда $IMAGE1$ ($SITE_NAME$ и подобные), которые прекрасно чувствуют себя внутри материалов, в тайтлах, сверху, сбоку и везде, где мне кривая моя натура подскажет. Что мешает сделать универсальный тег-контейнер, в который можно запихать не только изображение или имя, но и что-то еще, оформив по аналогии с глобальным блоком. Если это невозможно - другой вопрос. Если возможно - можно разработчикам подумать. Все остальное пройдено Любой Путь верный, что ведёт к Добру и Свету
|
| |||
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!

Чат сообщества






