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