Условные операторы в uCoz. Как сравнивать ID, группы пользователей и значения без ошибок
В шаблонах uCoz нет PHP, но есть собственная система условных операторов. Именно она позволяет управлять отображением блоков, контента и дизайна в зависимости от страницы, категории, пользователя или группы.
Если понимать, как работают сравнения и логика условий, можно сделать один универсальный шаблон, который будет вести себя по-разному в нужных местах. Если не понимать, начинается хаос, неработающие условия и магия «почему не сработало».
В этой статье разберем все основные операторы, что именно можно сравнивать и как это делать правильно.
Какие переменные реально используются в условиях uCoz
В шаблонах можно сравнивать системные переменные. Самые часто используемые:
- $ID$ — ID материала
- $CID$ — ID категории
- $SID$ — ID раздела верхнего уровня
- $OTHER1$ — значение дополнительного поля
- $USER_ID$ — ID текущего пользователя, для гостя всегда 0
- $GROUP_ID$ — ID группы текущего пользователя
- $GID$ — ID группы автора материала
Реальные ID групп пользователей в uCoz
В стандартной системе uCoz группы имеют следующие ID:
- 1 — Пользователи
- 2 — Проверенные
- 3 — Модераторы
- 4 — Администраторы
- 5 — Курьеры
- 251 — Друзья
- 255 — Заблокированные
- Гости — не группа, $USER_ID$ = 0
Эти значения реальные, их и нужно использовать в условиях.
Операторы сравнения, которые поддерживает uCoz
В условиях используются следующие операторы:
- = равно
- != не равно
- > больше
- < меньше
- >= больше или равно
- <= меньше или равно
- and логическое И
- or логическое ИЛИ
Цепочных сравнений, как в математике, нет.
Проверка на равенство =
Используется для точного совпадения значения.
Материал с конкретным ID:
<?if($ID$=150)?> Контент только для материала 150 <?endif?>
Категория с определенным ID:
<?if($CID$=12)?> Контент только для категории 12 <?endif?>
Блок только для администраторов:
<?if($GROUP_ID$=4)?> Контент для администраторов <?endif?>
Блок только для гостей:
<?if($USER_ID$=0)?> Контент для гостей <?endif?>
Проверка на неравенство !=
Используется, когда нужно исключить значение.
Скрыть блок от администраторов:
<?if($GROUP_ID$!=4)?> Контент для всех, кроме администраторов <?endif?>
Показывать только авторизованным пользователям:
<?if($USER_ID$!=0)?> Контент только для авторизованных <?endif?>
Проверка, что дополнительное поле заполнено:
<?if($OTHER1$!='')?> Контент выводится, если поле не пустое <?endif?>
Оператор больше >
Работает с числовыми значениями.
Материалы с ID больше 1000:
<?if($ID$>1000)?> Метка для новых материалов <?endif?>
Категории выше определенного диапазона:
<?if($CID$>50)?> Другая логика для новых категорий <?endif?>
Оператор меньше <
Обратное сравнение.
Старые материалы:
<?if($ID$<200)?> Метка старого материала <?endif?>
Базовые категории:
<?if($CID$<10)?> Упрощенный шаблон <?endif?>
Больше или равно >=
Используется для начала диапазона.
Материалы, начиная с определенного ID:
<?if($ID$>=500)?> Контент для новых публикаций <?endif?>
Группы выше определенного уровня:
<?if($GROUP_ID$>=3)?> Контент для модераторов и администраторов <?endif?>
Меньше или равно <=
Используется для конца диапазона.
Материалы до определенного ID:
<?if($ID$<=300)?> Старый архив <?endif?>
Категории до указанного значения:
<?if($CID$<=20)?> Специальный шаблон <?endif?>
Проверка диапазона значений
Можно сделать двумя способами:
<?if(692<=$CID$>=720)?>
и второй
<?if($CID$>=692 and $CID$<=720)?> Контент для категорий с 692 по 720 <?endif?>
Это правило работает для любых переменных, не только для $CID$.
Логический оператор and
Все условия должны выполниться одновременно.
Администратор в конкретной категории:
<?if($GROUP_ID$=4 and $CID$=5)?> Служебный блок <?endif?>
Авторизованный пользователь и заполненное допполе:
<?if($USER_ID$!=0 and $OTHER1$!='')?> Дополнительная информация <?endif?>
Диапазон ID материала и категория:
<?if($ID$>=100 and $ID$<=200 and $CID$=3)?> Контент по условиям <?endif?>
Логический оператор or
Достаточно выполнения любого условия.
Администраторы или модераторы:
<?if($GROUP_ID$=4 or $GROUP_ID$=3)?> Контент для команды сайта <?endif?>
Несколько категорий:
<?if($CID$=7 or $CID$=9 or $CID$=12)?> Общий шаблон <?endif?>
Несколько диапазонов ID:
<?if(($ID$>=1 and $ID$<=50) or ($ID$>=300 and $ID$<=350))?> Контент для выбранных материалов <?endif?>
Типичные ошибки, из-за которых условия не работают
- попытка использовать математические цепочки
- отсутствие and или or
- путаница $SID$ и $CID$
- ожидание PHP логики в шаблонах
- сравнение чисел как строк
- использование несуществующих значений групп
Заключение
Условные операторы в uCoz это не рудимент и не костыль. Это стабильный и предсказуемый механизм, который позволяет управлять шаблонами на уровне логики, а не копированием дизайна.
Можно сравнивать ID материалов, категории, разделы, группы пользователей, авторов и дополнительные поля. Главное — писать условия так, как их реально понимает система, а не как хочется на глаз.
Если использовать операторы правильно, один шаблон может заменить десятки дубликатов и работать чисто, прозрачно и без сюрпризов.
Оцените полезность материала!
Лицензия: CC BY-SA 4.0
Автор: Юрий Герук
Комментарии