Модератор форума: 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$)?> |
Alexander_K, здравствуйте! Я всё по поводу своего кода $TIME$
Изменила, как Вы научили, но у меня время стало ровно на 5 часов больше нашего Киевского (т.е. на самОм сайте увеличилось ещё на 4 часа, вместо того, чтобы уменьшиться на 1 час)... Что же делать-то? Спасибо за заботу! |
chipmunk_beauty, странно, по логике эти три строчки:
Code if(hour=0){hour=22;} if(hour=1){hour=23;} else{hour=hour-2;} Code if(hour=0){hour=22;} else if(hour=1){hour=23;} else{hour=hour-2;} Сообщение отредактировал Alexander_K - Среда, 07 Дек 2011, 21:35:01
|
Доброго времени суток!
Можно ли из переменной $Время последнего посещения сайта$ выделить только дату и сравнить например ее с полученной из скрипта? типа Code <script type="text/javascript"> var now = new Date(), weekday = now.getDay(); now.setDate(now.getDate()-1); var d = now.getDate(), m = now.getMonth() + 1, y = now.getFullYear(); d = d < 10 ? '0' + d : d; m = m < 10 ? '0' + m : m; $Время последнего посещения сайта$ = (d +"-"+ m +"-"+ y); </script> |
На личной странице пользователя введён вот такой код
Code <?if($GROUP_ID$=1)?> <img src="http://i603.photobucket.com/albums/tt120/altengland/wizardid.png"> <?endif?> , чтобы на страницах не принятых отражалась некая картинка. Почему код не работает? Сообщение отредактировал Mirabel - Понедельник, 12 Дек 2011, 06:40:40
|
Mirabel,
Quote Почему код не работает? |
Mirabel, Привязать вывод изображения к какому нибудь коду страницы выводящему одну и ту же информацию о пользователе независимо от того кто просматривает страницу ...
через substr($XXXX$,X,X='X') Сообщение отредактировал Miss_Esq - Понедельник, 12 Дек 2011, 10:17:25
|
Quote (Miss_Esq) в зависимости от того, чей это профиль Есть 2 варианта 1 вариант (по ID пользователя) Quote <?if ($USER_ID$=1)?>То-то-то-то<?else?><?if ($USER_ID=2)?>То-то-то-то<?else?>И так далее<?endif?><?endif?> 2 вариант (по нику пользователя) Quote <?if ($USERNAME$=Ник пользователя)?>То-то-то-то<?else?><?if ($USERNAME$=Ник пользователя)?>То-то-то-то<?else?>И так далее<?endif?><?endif?> Вроде так Сообщение отредактировал Kelin - Понедельник, 12 Дек 2011, 14:49:36
|
|
Quote (Alexander_K) Будут обрабатываться данные того, кто смотрит профиль, а не данные владельца профиля Quote (Mirabel) А нельзя как-то так задать условия, чтобы картинка менялась в зависимости от того, чей это профиль, а не о того, в какой группе находится пользователь, его просматривающий? В шаблоне профиля доступна переменная $_USER_ID$, которая и содержит ид-номер владельца профиля. Соответственно, есть $_USERNAME$ и $_GROUP_ID$, которые так же привязаны к владельцу профиля. |
Доброго времени суток!
Можно ли сделать, чтобы на странице со списком фотографий альбома выводились материалы из каталога статей определенной категории и из определенной ветки форума. Пробую так <?if($URI_ID$='phCat18')?>$CID='28'$<?endif?> и так <?if($URI_ID$='phCat18')?>$MODULE_ID$="publ", $CID='28'$<?endif?>, но не получается. На странице со списком фотографий выводится вот это: CID='28' - в первом случае и photo="publ, "$CID='28'$ - во втором. Спасибо. |
|
|
| |||