Модератор форума: Yuri_G  
Условные операторы и системные коды
Модератор форума
Сообщение # 1 | 04:36:06
Условные операторы от новичка до профи

Если вы совершенно не понимаете, как работают условные операторы, и информации в панели управления для вас мало, то я попробую вам объяснить. Самое главное, чтобы вы настроились на то, что это очень просто. Так оно и есть!

И так, начну с понятий. Условные операторы - это специальные коды-символы, которые могут выполнять какие-то сценарии. Вы можете создать совершенно новую опцию на своём сайте, которая собственно не предусмотрена панелью.

Для начала нужно понять и привыкнуть к составляющим частям самого кода сценария, а это:

Код
<?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$
отображаются в виде текста, а не того, чтобы хотелось... Почему они не работают?
$Коды$ будут работать только на динамических страницах, то есть тех, которые созданы в Панели управления через опцию "Создать страницу". В статических страницах, закаченных извне с расширением .html эти $Кода$ работать не будут.
Цитата
Как сделать альтернативные условия, например для кода
Код
$GROUP_ID$
?
Код
<?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?>...<?endif?>
Цитата
Есть ли операторы, позволяющие пользователю видеть в списке категорий только те, в которые он имеет доступ?
Это можно сделать только строя список категорий вручную. Т.е. проверяете текущю группу и выводите нужный список категорий. Уровнем выше проверяете на необходимый раздел.
Цитата
Код
$GROUP_ID$
не работает в шаблоне мини-чата, почему?
Сообщения чата кешируются, поэтому использовать в чате динамически изменяющиеся коды нельзя.
Цитата
Есть код
Код
$USER_LOGGED_IN$
. А есть ли $USER_LOGGED_OUT$?
Нужно прото сделать отрицание в условии
Код
<?if(!$USER_LOGGED_IN$)?>


Miss_Esq
Сообщений: 13859
Репутация: 4159
Уровень замечаний:

Сообщение # 706 | 20:39:02
Marc-Admin, сайта не видила и как куда ... не сказать..

Sevengor
Сообщений: 77
Репутация: 8

Сообщение # 707 | 20:58:31
Существует потребность в автозаполнении столбца таблицы произвольным контентом, например из текстового файла с использованием информера случайных данных.

Блок должен иметь вертикальную прокрутку и динамический размер, то есть он должен изменяться уже после полной загрузки и под конкретную страницу.

В случаи если размеры блока менее двух строк следует не выводить его вообще

Иначе блок должен взять вертикальный размер таким чтобы пустое место в столбце заполнилось полностью...

Есть ли такая возможность на ЮКОЗ как её реализовать на JS на ПХП или лучше на том языке на котором работает движок юкоза???

Сообщение отредактировал Sevengor - Воскресенье, 13 Май 2012, 20:58:58
Miss_Esq
Сообщений: 13859
Репутация: 4159
Уровень замечаний:

Сообщение # 708 | 21:06:49
Sevengor, за движок сервиса забдьте ...

Sevengor
Сообщений: 77
Репутация: 8

Сообщение # 709 | 21:38:27
Quote (Miss_Esq)
за движок сервиса забдьте


Почему так, разве на нем нельзя измерить высоту страницы после загрузки и ввести полученные параметры например во фрейм?

На ActionScript наверное самое оптимальное там же есть функция замера высоты страницы, или даже лучше высоты конкретной ячейки таблицы

Вот только AS не будет выводить HTML код, а это не то что мне нужно, да и для поисковиков никакого эфекта не будет?

без PHP остается JS, но он не есть хорошо, в идеале нужно использовать язык юкоза...

Сообщение отредактировал Sevengor - Воскресенье, 13 Май 2012, 21:47:21
Alexander_K
Сообщений: 552
Репутация: 188

Сообщение # 710 | 23:24:39
Quote (Sevengor)
без PHP остается JS, но он не есть хорошо, в идеале нужно использовать язык юкоза...
Системными кодами точно не получится, да это и не язык, а только набор переменных. Только если использовать вместе JavaScript и PHP, т.к. есть действия и на сервере и на клиенте (JavaScript работает только на клиенте, если он там не отключён, а PHP работает только на сервере).

Бесплатно вам такое вряд-ли напишут, заказать можете там.

libero23
Сообщений: 11
Репутация: 0

Сообщение # 711 | 02:44:52
Подскажите пожалуйста,можно ли вывести материалы фотографий,отдельной категории раздела ?
Например:
Code

+Биология (SID=1)
           +Природа (CID=2)
                   +1.0 (СID=10)
                   +1.1 (СID=11)
                   +1.2 (СID=12)
                   +1.3 (СID=13)
           +Животные (CID=3)
                   +1.0 (СID=14)     
                   +1.1 (СID=15)
                   +1.2 (СID=16)
                   +1.3 (СID=17)

Т.е. при нажатии *Биология* ,будут выводится материалы категорий *Природа* и *Животные*. А как вот сделать так,чтобы при нажатии *Природа* выводились категории 1.0-1.3,и при нажатии *Животные* так же выводились категории 1.0-1.3 ??
Сообщение отредактировал libero23 - Понедельник, 14 Май 2012, 02:46:29
Cargerdree
Сообщений: 26
Репутация: 0

Сообщение # 712 | 09:05:32
У меня такой вопрос назрел, можно ли как-нибудь отдельным юзерам убрать иконку юзер на форуме и поставить другу, но при этом не переносить их в другую группу? и добавлять еще подобные?
Alexander_K
Сообщений: 552
Репутация: 188

Сообщение # 713 | 09:13:42
Cargerdree, не понял, о какой иконке речь?
Можно условием проверять id пользователя, и при совпадении менять там практически что угодно.

Cargerdree
Сообщений: 26
Репутация: 0

Сообщение # 714 | 09:15:48
Alexander_K, ну картинки групп с названиям групп, типа User Administrator Moderator
Alexander_K
Сообщений: 552
Репутация: 188

Сообщение # 715 | 10:23:04
Cargerdree, теперь понял. Ну как я выше написал, писать условие под каждую такую картинку. Но по моему, легче новых групп создать.

Утюг
Сообщений: 113
Репутация: 63

Сообщение # 716 | 17:54:56
Cargerdree, короче вот он:
Quote
<?if($USER_ID$=5)?> <img>http://ссылка на картинку</img> <?endif?>

Я не волшебник! Я только учусь =)
Мой Мир Аниме
Моя студия веб-дизайна, обращайтесь, есть готовые варианты.
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 717 | 21:15:22
Cargerdree,
Только не так:
Quote (Утюг)
Code
<?if($USER_ID$=5)?> <img>http://ссылка на картинку</img> <?endif?>

а вот так:
Code
<?if($USER_ID$=5)?><img src="http://ссылка на картинку" alt="" /><?endif?>

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Сообщение отредактировал fflesh - Понедельник, 14 Май 2012, 21:16:15
armen666
Сообщений: 2
Репутация: 0

Сообщение # 718 | 12:29:32
Добрый день!
Имею модуль "Каталог статей". В нем несколько категорий. Все категории вынесены в меню сайта. При выборе каждой из них переходим на страницу категории, в теле которой отображены заголовки и краткое описание материалов этой категории. Это так изначально.

Задача:
Одна из этих категорий должна отображаться по другому - при выборе категории в меню сайта должна открыться страница НЕ с заголовками и кратким описанием, а С заголовком и полным описанием со всеми фотографиями, что там есть и ничто более (т.е. не должно быть автора, окна комментариев, и прочего - это всё должно появляться если щелкнуть по заголовку материала, т.е. стандартно).

Пробовал крутить шаблон модуля, но утыкаюсь в то, что не знаю, как вывести все материалы конкретной категории. Смог только НЕ выводить краткое описание материалов на конкретной странице категории.
Code
<?if($URI_ID$='puCat2')?>должны быть заголовки и полное описание материалов конкретной категории<?else?>$!BODY$<?endif?>


Я конечно понимаю, что можно полное описание материалов нужной категории загнать в краткое и радоваться жизни, но тогда, если мне приспичит вернуть как должно быть, то придется каждый материал обрабатывать в ручную - что не есть логично.
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 719 | 15:50:45
armen666, изменяйте дизайн "Вид материалов" этого модуля.

Спасибо в репутацию.
GeR@In
Сообщений: 141
Репутация: 19

Сообщение # 720 | 18:53:43
нужно решение для профилей пользователей.
профили доступны по ссылкам /index/8-0-логин и /index/8-id
Какие условия нужны чтобы вывести инфо в зависимости от способа вызова профиля?
то есть если зашли по адресу /index/8-id, тогда показать это, если /index/8-0-логин, тогда .....

Более 100 бесплатных, внешних ссылок на ваш сайт. подробности
Поиск:
Telegram
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!