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

Условные операторы и системные коды

Условные операторы и системные коды
Материал добавлен: 31 Декабря 2021
Материал обновлен: 03 Июня 2025

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

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

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

  • <?if($код$)?> — условие (код), которое сообщает оператору, с чем именно мы работаем. Мысленно заменяем на «Если есть».
  • <?else?> — оператор, который выполнит действие, если условие не соответствует. Мысленно заменяем на «Если нет».
  • <?endif?> — конец условного оператора. Мысленно заменяем на «Конец».

Пример из редактора страниц:

<?if($USER_LOGGED_IN$)?>Hello, $USERNAME$<?else?>You are GUEST. Please register.<?endif?>

Что это значит: «Если есть авторизованный пользователь — поприветствуй его по имени, а если нет — покажи приветствие гостю и закончи.»

Разбор кода

  • Мы сообщаем оператору <?if($код$)?>, что сценарий направлен на приветствие авторизованных пользователей. Вместо $код$ используем $USER_LOGGED_IN$ — это значит «Если есть авторизованный пользователь».
  • После идёт информация, доступная только авторизованным. Для гостей указываем информацию после <?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?>

Сложные условия

Вы можете использовать знаки «=», «>», «<» и логические операторы, чтобы задать условия. Если их несколько, разделяйте их вертикальной чертой или используйте «or» и «and».

<?if($код$='условие')?> Я это вижу <?else?> А вот это вижу я <?endif?>

Или:

<?if($код$='условие')?> Самое главное, что я это вижу <?endif?>

Пример для конкретного пользователя:

<?if($USER$='Дима')?> Дима, не забудь каждый день читать почту. <?endif?>

Это означает: «Если вошедший пользователь — Дима, то показать ему это сообщение.»

Аналогично можно проверять группы, имена, пол, дату и любые коды, которые работают в модуле.

Пример для нескольких пользователей:

<?if($USER$='Mike' or $USER$='Lola')?> Mike и 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?>

Сценарий: «Если пользователь авторизован, приветствуем его. Если он админ или модератор, показываем напоминание. Если пользователь не авторизован, просим зарегистрироваться.»

Мини FAQ

  • Сколько <?if($код$)?>, столько и <?endif?>.
  • <?else?> нужен только тогда, когда есть «иначе». Иначе он не обязателен.
  • Поддерживаются логические операторы or и and (|| и &&).
  • Поддерживается вложенность операторов.
  • Поддерживается сравнение переменных между собой: <?if($VAR1$=$VAR2$)?>.
  • При сравнении текстовых значений используйте кавычки: <?if($USER$='Mike')?>.

Вопрос - ответ

Вопрос: При создании новых страниц, закачанных через FTP, коды вроде $SITE_NAME$, $LOGIN_LINK$, $LOGOUT_LINK$ отображаются как текст, а не работают. Почему?

Ответ: Коды работают только на динамических страницах — созданных в Панели управления через опцию «Создать страницу». На статических страницах, загруженных по FTP с расширением .html, эти коды не работают.

Как сделать альтернативные условия для кода $GROUP_ID$?

<?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?> ... <?endif?>

Можно ли выводить только те категории, к которым у пользователя есть доступ?

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

Почему $GROUP_ID$ не работает в шаблоне мини-чата?

Сообщения чата кешируются, поэтому в них нельзя использовать динамически изменяющиеся коды.

Есть ли код $USER_LOGGED_OUT$?

Можно использовать отрицание:

<?if(!$USER_LOGGED_IN$)?>
Условные операторы и системные коды