- Ты знаешь, как работает телевизор?
- Да, нажимаешь кнопку и смотришь.
(Американский герой. Возможно даже, "Крепкий орешек")
Я уже опубликовала урок о том, как сделать разную шапку на разных страницах, но тут мне задали очевидный вопрос, и я поняла: большинство не знает, что за штука такая $UCOZ-КОДЫ$.
Если с html большинство администраторов волей-неволей познакомились, таблицы стилей тоже худо-бедно подтянули по многочисленным учебникам в сети, то $UCOZ-КОДЫ$ или переменные, которые использует конструктор UCOZ - вещь специфическая. Что ж, чтобы вам не лазать ещё в поисках и этого, введу в проблематику прямо на Полочке.
Присказка
Страницы в интернете бывают статические и динамические. Статические страницы неизменны: что админ написал, то пользователь и увидит - один в один. Они незыблемы, как кусок гранита - пока не звезданёшь по нему наковальней (откроешь в текстовом редакторе), ничего не случится. Динамические страницы как таковые возникают в момент обращения пользователя к ним, формируясь на сервере в текущий момент времени. Для этого у сервера есть:
- база данных (БД), где хранится собственно контент, и
- шаблон оформления, который объясняет серверу, какую именно информацию из базы данных взять и где на странице её располагать.
Для описания шаблонов принято использовать языки серверных сценариев и PHP в частности. PHP, будучи высокоуровневым языком сценариев, фактически программирует сервер на выполнение типовых действий, в результате которых рядовой пользователь по ту сторону монитора может получить что угодно от простейшей страницы до сложного веб-приложения.
А владелец сервера может получить головную боль от того, что начинающий программист так криво написал сценарий, тот подвешивает сервер на "раз".
Поэтому UCOZ сделал финт ушами, наглухо закрыв доступ к "внутрянке", оставив многочисленные рычажки и кнопки управления. Шаблоны системы используют свой собственный простой язык разметки, который некоторыми своими элементами подобен языку программирования PHP.
$ПЕРЕМЕННЫЕ$
$КОДЫ$ или переменные или операторы - это специально зарезервированные слова, вставленные в шаблоны вашего сайта на UCOZ. Что такое "переменная"? Это меняющаяся величина. В нашем случае такой величиной является фрагмент html-кода в общем виде. Теги с их атрибутами, смысловые слова или наборы символов, цифры и числа. В момент обращения пользователя к странице по её адресу, переменные принимают то или иное значение, превращаясь в фрагмент html-кода, работу которого и видит пользователь на своем экране.
Вы уже знаете, что такое x в математике? Относитесь к $ПЕРЕМЕННЫМ$ также.
Обычно в языках программирования принято вводить и описывать типы переменных, с которыми он может работать. Это важно, поскольку действия можно производить только между двумя переменными одного типа: мухи должны быть отдельно, котлеты - отдельно. Однако так как сегодня мы не будем производить с $КОДАМИ$ никаких действий, а просто познакомимся, то и лезть в дебри не будем. Лучше посмотрим на $КОДЫ$ с точки зрения их применения.
Переменные, общие для сайта.
Примеры:
$HOME_PAGE_LINK$
- адрес домашней страницы сайта (строка).$SITE_NAME$
- название сайта, прописанное в настройках (строка).$LOG_FORM$
- форма регистрации (а это уже целый фрагмент html-кода).$COUNTER$
- код счетчика статистики (тоже фрагмент кода с javascript в придачу).
Внутри одного сайта они не меняются, но это позволяет унифицаровать шаблоны для всех сайтов всей платформы
Глобальные блоки
Примеры:
$GLOBAL_AHEADER$
- код шапки, записанный в отдельном шаблоне$GLOBAL_MY$
- произвольный глобальный блок, созданный пользователем, также представляет фрагмент html-кода и доступен для всех шаблонов сайта.
Обычно, шапка одна на весь сайт, и чтобы не менять её отдельно по всем шаблонам, она записана один раз в глобальном блоке. Как сделать индивидуальную шапку для каждого раздела сайта - отсюда мы и полезли в этот лес.
Переменные, общие для модуля
Примеры:
$MODULE_NAME$
- название модуля, прописанное в настройках$CATEGORIES$
- список категорий текущего модуля или раздела модуля (если находишься внутри раздела).
Видите, какие уже заморочки пошли? Все это также позволяет унифицировать шаблоны для разных модулей. Например, организация любимых мной "хлебных крошек", выглядит так:
<a href="$HOME_PAGE_LINK$">Главная</a> » <a href="$MODULE_URL$">$MODULE_NAME$</a> » <a href="$SECTION_URL$">$SECTION_NAME$</a> » <a href="$CAT_URL$">$CAT_NAME$</a>
В каталоге статей мы увидим одну цепочку, в каталоге предметов - другую, ну и в зависимости от того, какой категории принадлежит открытая страница, тогда как запись в шаблоне едина для всех.
Переменные страницы
Примеры:
$MODULE_ID$
- идентификатор модуля, которому принадлежит страница: 'news', 'publ', 'index' и проч.$PAGE_ID$
- род страницы, например: 'add' - страница добавления материала, очевидно, что она служебная и, скажем, реклама на ней ни к чему.$URI_ID$
- уникальный идентификатор страницы
Переменные пользователя
Примеры:
$USERNAME$
- ник пользователя, зашедшего на сайт$USER_GROUP$
- его группа$PERSONAL_PAGE_LINK$
- ссылка на его персональную страницу$USER_LOGGED_IN$
- "флаг" (логическая переменная, имеющая 2 занчения: истина/ложь), который показывает залогинен пользователь (истина) или это гость (ложь). Особенно удобно использовать для того, чтобы скрыть ссылку для входя, когда уже вошел (и показать вместо нее ссылку выхода).
Переменные времени
Примеры:
$DAY$
- текущий день месяца от 1 до 31. В общем случае, понятно, что когда $MONTH$ будет равен 2, $DAY$ равняться 30 не будет никогда.$DATE$
- текущая дата в формате, указанным в настройках сайта (как правило, ДД.ММ.ГГГГ).$ADD_DATE$
- дата добавления конкретного материала.
Переменные контента
Примеры:
$ENTRY_TITLE$
- название материала.$MESSAGE$
- текст материала.$IMG_URL1$
- первое изображение, прикрепленное к материалу.$READS$
- количество просмотров материала.
Как можно догадаться, каждое поле, которое вы видите на странице добавления материала, имеет свой код, также, как и счётчики материала (просмотры, комментарии, рейтинг).
Теперь о том, где все эти вещи можно найти. Для каждого шаблона, в системе UCOZ имеется собственный набор $ПЕРЕМЕННЫХ$. Может, не для всех очевидно, но "Название материала" вне страницы материала не существует. И хотя у простой страницы из Редактора тоже есть "Название", выводится оно совершенно другой переменной. Кроме того, существуют определенные нестыковки между переменными шаблона "Страница материала" и "Вид материала" (второй используется для вывода списка материалов на странице модуля или категории), и об этом тоже приходится вспоминать, когда не получаешь желаемого результата. Первым (и в общем-то единственным) помощником в этом вопросе служит список переменных под редактором шаблонов в Панели управления. Выглядит это так:
При этом клик на операторе в списке приводит к его вставке в окне редактора в текущее место (по курсору).
Если вы все ещё используете старый вид Панели управления, то у вас это выглядит так:
Тут автоматической вставки нет, да и мне как-то удобнее с таким списком работать, хотя, возможно, это дело привычки.
Каждый код имеет пояснение, но если вам все-таки не понятно, что именно он будет выводить, можно вставить его в известное место на странице, сохранить и посмотреть на сайте.
С переменными познакомились, представление о них составили. О секретах их правильного использования я расскажу в следующий раз.