Модератор форума: 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$)?>


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

Сообщение # 1786 | 16:47:25
Подскажите пожалуйста с операторами и кодами для такой ситуации.
Мне нужно, чтобы на страниче выводились названия новостей, которые разместил определенный пользователь.
Например так, если новость размещена Ивановым, то ее название должно быть выведено на страничке.
bandjuk
Сообщений: 6816
Репутация: 2398
Уровень замечаний:

Сообщение # 1787 | 16:54:13
imhoc, на какой странице?
imhoc
Сообщений: 5
Репутация: 0

Сообщение # 1788 | 16:58:33
Цитата bandjuk ()
на какой странице?
не важно. Я хочу на странице созданной мной (добавленной через редактор старниц).
Можно в информере
Сообщение отредактировал imhoc - Среда, 15 Янв 2014, 17:06:30
Selena
Сообщений: 15657
Репутация: 1100

Сообщение # 1789 | 18:23:02
Цитата imhoc ()
не важно.

Вообще-то важно. Если хотите конкретной помощи, то задача должна описываться детально. А то может оказаться, что то, что вы хотите, с помощью условных операторов не сделать.

Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 1790 | 18:31:41
Цитата imhoc ()
на страниче выводились названия новостей, которые разместил определенный пользователь

Цитата imhoc ()
на странице созданной мной (добавленной через редактор старниц)

Только GET-запросом, используя JS.

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

Сообщение # 1791 | 18:36:31
Цитата Selena ()
Вообще-то важно.
С помощью редактора страниц я создал новую страницу. Теперь я хочу чтобы на ней выводились названия (с ссылкой) на всех размещенных Ивановым статей, новостей, записей в блоге, сортированные по дате добавления. Если это невозможно, то хотя бы названия (с ссылкой) всех новостей Иванова.
В идеале, чтобы кроме названия еще и первые два предложения из новости.

Добавлено (15 Янв 2014, 18:36:31)
---------------------------------------------

Цитата Drinko ()
Только GET-запросом, используя JS
это уже сложнее. А где об этом можно спросить или узнать?
Selena
Сообщений: 15657
Репутация: 1100

Сообщение # 1792 | 18:41:46
Цитата imhoc ()
А где об этом можно спросить или узнать?

Можно заказать тут - http://partner.ucoz.ru/

Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
Goodmind
Сообщений: 80
Репутация: 18

Сообщение # 1793 | 17:23:10
Добавьте оператор float, как int


Код
<?float(4 * 2)?>

выведет 8.0
Вердикт
Сообщений: 112
Репутация: 17

Сообщение # 1794 | 23:37:46
Цитата imhoc ()
выводились названия новостей, которые разместил определенный пользователь


Действительно интересно, а такой адрес прокатит?, /news/0-0-0-0-17-$USER_ID$ , разумеется функция поиска материалов пользователя должна быть активна.

Тогда не надо будет никаких страниц "лишних" создавать

Все спасибо в репу )))
farvtur
Сообщений: 4
Репутация: 3

Сообщение # 1795 | 13:55:55
Есть у меня сайтик, который я делал на заказ туристической фирме родственникам года 2 назад. Мне необходимо было на каждой отдельной странице с описанием конкретной страны в правом сайдбаре сделать блоки, которые отображались только на одной странице, или кроме одной. Тогда, 2 года назад я наковырял в интернете инфу, как это делать операторами, а сейчас данная функция понадобилась для другого сайта. Я залез в панель управления того - по туризму, дабы освежить в памяти, как я это прописывал, а нонешний модератор все мои коды удалил под чистую. Вот теперь не могу найти тему. Помогите плиз. Напишите, куда и какой оператор вставлять в код блока, что бы выполнялись условия описанные мной выше. Спасибо за ранее

Добавлено (30 Янв 2014, 13:21:55)
---------------------------------------------
Вот, что я "сочинил", но эффекта нет

Только на конкретных страницах 55, 12, 103
<!-- <block3> -->
<?if($PAGE_ID$='55,12,103')?>
Здесь содержимое блока
<?endif?>
<!-- </block3> -->

Кроме страницы 103
<!-- <block3> -->
<?else($PAGE_ID$='103')?>
Здесь содержимое блока
<?endelse?>
<!-- </block3> -->

Подскажите, что не так.

Добавлено (30 Янв 2014, 13:55:55)
---------------------------------------------
Подкорректировал.
Только на конкретной странице
<!-- <block3> -->
<?if($PAGE_ID$='sitePage84')?>
Здесь содержимое блока
<?endif?>
<!-- </block3> -->

Теперь работает для конкретной страницы. Но осталось два вопроса.
Первый: не могу сообразить как прописать несколько "конкретных страниц" ( запятые ставил где только ни где).
Второй: как сделать, что бы НЕ отображалось на конкретной странице.

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

Сообщение # 1796 | 17:00:16
farvtur, <?if($PAGE_ID$='55' or $PAGE_ID$='12' or $PAGE_ID$='103')?>

farvtur
Сообщений: 4
Репутация: 3

Сообщение # 1797 | 17:46:08
Miss_Esq, Спасибо. А делать, что бы Не отображалось на конкретной странице?
Miss_Esq
Сообщений: 13859
Репутация: 4159
Уровень замечаний:

Сообщение # 1798 | 18:28:10
farvtur, не будет отображаться на этих страницах <?ifnot($PAGE_ID$='55' or $PAGE_ID$='12' or $PAGE_ID$='103')?>

farvtur
Сообщений: 4
Репутация: 3

Сообщение # 1799 | 18:31:51
Miss_Esq, Еще раз, огромное спасибо
footballcapital
Сообщений: 1
Репутация: 0

Сообщение # 1800 | 21:37:13
Как сделать,чтобы слайдера не было при добавлении новости,но чтобы он был на главной странице новостей?

Добавлено (01 Фев 2014, 21:23:21)
---------------------------------------------
Захожу в страницу архива материалов,там перед $BODY$ ставлю код слайдера, но он появляется и при добавлении новости на сайт,как сделать чтобы его там не было? а чтобы он был только на главной новостей?

Добавлено (01 Фев 2014, 21:37:13)
---------------------------------------------
адрес сайта : http://footballcapital.ucoz.ru/

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