| Модератор форума: 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$)?> |
|
я писал вопрос, но мне никто вероятно в той ветке не может помочь. Может здесь, если знающие есть, то подскажут где искать?
//forum.ucoz.ru/forum/31-28458-804761-16-1327316551 |
|
привет форусчане!
я вот тут решил заморочится с админ-панелькой требуеться только для группы модератор сделать так что бы у него была там только кнопка общее, управление, и файловый менеджер пытался пользовать статьей вот этой но получается выполнить условие которое равно только Code <style> #puzadpn {display:none;} </style> но судя что имеются условные операторы можно сделать нечто вроде подобия вот этого Code <?if($GROUP_ID$="3")?> <style> #admBarP3 {display:none;} </style> <?endif?> |
|
redmoon5971,
Quote (redmoon5971) но судя что имеются условные операторы можно сделать нечто вроде подобия вот этого Мысль правильная, а вот стили - кривые ... Думаю это проще сделать скриптом - удалить все кроме четвёртого, или какой там требуется, элемента из списка ... ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 24 Янв 2012, 10:13:47
|
|
Quote (fflesh) Мысль правильная, а вот стили - кривые ... Думаю это проще сделать скриптом - удалить третий, или какой там требуется, элемент из списка ... ... ну так вот и стоит вопрос как удалить именно все элементы кроме например файлового менеджера?мне требуеться сделать модератору только кнопку - файловый менеджер в панели.все, в этом вся задача |
|
redmoon5971, Убирать в принципе бесполезно , если админ бар будет присутствовать в исходном тексте , все пункты , но не будет виден отображаемым на странце , если модератор " продвинут " то найдет способ воспользоваться всем админ баром . Отключить CSS , Javascript и т п и т д ...
Так что прежде чем что то внедрять " методы сокрытия " на постоянной основе и делегировать права на часть админ бара проверяйте возможности обхода ваших " хитростей " .... Насколько это просто .. Как вариант , скрывайте админ бар так - <?substr($ADMIN_BAR$,0,0)?> а потом вставляйте в шаблон Условный оператор для модератора со строкой вызова Файлового менеджера , её можно вытащить из исходного кода Админ бара ... Единственное решение , скрыть всё одним махом и вывести только одно .. Сообщение отредактировал Miss_Esq - Вторник, 24 Янв 2012, 10:52:52
|
|
redmoon5971,
Quote (redmoon5971) ну так вот и стоит вопрос как удалить именно все элементы кроме например файлового менеджера? Как и написано выше - убрать всё. Ссылка на файловый менеджер: http://my_site/tmpls/?a=fm;n=1 Добавлено (24-Янв-2012, 11:43:09) --------------------------------------------- Quote (fflesh) Как и написано выше - убрать всё. Убрать всё и вставить свой - с нужными кнопками через условные ... ... Quote (Miss_Esq) если модератор " продвинут " Если он продвинут - ему этот бар шёл бы и ехал - он возьмёт и руками набьет нужную ссылку или скрипт ... ) ... Так что самое верное - грамотно расставленные права и доступы группам пользователей. ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Вторник, 24 Янв 2012, 11:47:09
|
|
Quote (fflesh) tmpls/?a=fm;n=1 впринципе доступ к фм ему дал путем ссылки.все работает ка кнадо.а вот админ бар выключил в правах групп.а галку на фм оставил)как то вот так.спасибо всем помогающим) |
|
Здравствуйте, помогите с переменной $CURRENT_PAGE$
Пример: Code <title>$MODULE_NAME$ - $SITE_NAME$ - Страница $CURRENT_PAGE$</title> Почему то добавляется тэг SPAN: Code <title>Каталог статей - Персональный сайт - Страница <span class="currentPage79">2</span></title> Как его убрать? Чтобы выводилось просто "Страница 2". Сообщение отредактировал StaLyeR - Среда, 25 Янв 2012, 17:09:27
|
|
Здравствуйте! Помогите! Мне нужно чтоб надпись На правах рекламы показывалась когда эту самую рекламу код $MYINF_1$ показывает, а если рекламы нет то чтоб текста и рамки <fieldset> тоже не было.
Сейчас у меня так: Code <fieldset> <center>На правах рекламы</center> $MYINF_1$ </fieldset> http://vsemoto.ucoz.ru
|
|
StaLyeR,
Quote $CURRENT_PAGE$ А почему имеено этот код ??? Есть ведь переменные страницы - $URI_ID$ из него можно условным оператором и вырезать номер страницы безо всяких тегов SPAN будет .... |
|
Miss_Esq,
Quote $URI_ID$ |
|
webanet, Вообще то предполагала что имеется в виду страница материалов и комментариев к нему ...
|
|
Miss_Esq, смотрите на вопросы внимательней
Quote <title>$MODULE_NAME$ - $SITE_NAME$ - Страница $CURRENT_PAGE$</title> |
|
StaLyeR,
Quote (StaLyeR) Здравствуйте, помогите с переменной $CURRENT_PAGE$ ... Как его убрать? Чтобы выводилось просто "Страница 2". При помощи оператора substr и strpos. Quote (Info) substr(S,N1,N2) substr(S,N1) - Возвращает подстроку из строки S, начиная с позиции N1 (первый символ имеет позицию 0), длиной N2 символов. Параметр S должен быть задан как строка (или как результат вызова функции, возвращающей строку). N1 и N2 приводятся к целым значениям. Если N2 не указан, то возвращается подстрока с позиции N1 до конца строки S. Если N1 отрицателен, то начальная позиция отсчитывается от конца строки S. Если N2 отрицателен, то задает конечную позицию от конца строки S. - Читаем справку по операторам, доступна в ПУ. Например: Code <?substr('<span class="currentPage79">2</span>',28)*1?> Вернёт только двойку - число «2» Так как «28» убирает первые 28 символов, а умножение на единицу - приводит строку («2</span>» - начинающуюся с числа) к целому числу («2» - integer) .... ... Несложно подставить свои данные, чтобы получить нужное.... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Среда, 25 Янв 2012, 16:44:14
|
|
fflesh, спасибо за помощь. А можно сделать так, чтобы "Страница 1" не отображалась в заголовке, а "Страница 2" т.д. показывались?
Просто каталог статьей, это главная страница сайта и в заголовке теперь пишется "Название сайта - Страница 1" хочу, чтобы было просто "Название сайта", а при клике на следующую страницу было в заголовке "Название сайта - Страница 2". Это можно реализовать? Сообщение отредактировал StaLyeR - Среда, 25 Янв 2012, 17:20:44
|
| |||
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!

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






