Персональный дизайн для разделов форума и темМногие на форуме сообщества uCoz интересовались вопросом «Как сделать иной дизайн в определённых разделах форума?» ссылаясь на эту тему с идеей на реализацию. Flesh описал, что это возможно сделать с помощью скрипта. Скрипт мы использовать не будем, вполне можно реализовать на уровне системы при помощи системных переменных, что куда проще.
Всё предельно просто. Делается это с помощью условного оператора $REQUEST_URI$ применив strpos. При помощи этого условия мы сможем изменить весь дизайн, либо подключить иную\дополнительную таблицу стилей. Или, например, заменить элементы дизайна (код в шаблонах), в общем на что способна ваша фантазия.
ДЕМОПосмотреть пример Первый вариант Код <?if(strpos($REQUEST_URI$,"/20")!= -1)?><style type="text/css">*{color:#000;}</style><?endif?> Условие проверяет, если в адресе страницы присутствует /20, то выводит то что задано (в нашем случае это стили). Пример с использованием else: Код <link type="text/css" rel="StyleSheet" href="<?if(strpos($REQUEST_URI$,"/20")!= -1)?>/css/newstyle.css<?else?>/css/oldstyle.css<?endif?>" /> Тут также, если в адресе страницы присутствует /20, то выводит /css/newstyle.css, иначе /css/oldstyle.css. ДЕМОПосмотреть пример Второй вариант Если необходимо использоваться один и тот же стиль для нескольки разделов\форумов и вы не хотите переписывать для каждого, то воспользуемся этим условием: Код <?if(strpos("/9,/12",substr($REQUEST_URI$,strrpos($REQUEST_URI$,"/"),strpos(substr($REQUEST_URI$,strrpos($REQUEST_URI$,"/")),"-")))>= 0 && $PAGE_ID$!="main")?>Вывод форуму под айди 9 и 12<?endif?> Там, где «/9,/12» – заменяйте на необходимые айди форумов\разделов. Если нужно увеличить, то всего лишь нужно добавлять последовательность вида: /9,/12,/5,/6,/7 ДЕМОПосмотреть пример Третий вариант Если хотите вместе с айди темами, то подойдет это условие: Код <?ifnot(strpos($REQUEST_URI$, '/17') = -1 && strpos($REQUEST_URI$, '/22') = -1 && strpos($REQUEST_URI$, '-27') = -1)?>Вывод форуму под айди 17 и 22, также вывод теме под айди 27<?endif?> В отличии от второго варианта это условие на вид сложно, но это не так. Там где «$REQUEST_URI$, '/17')» – заменяйте на необходимые айди разделов\форумов\тем. Если нужно увеличить, то всего лишь нужно добавлять последовательность вида: && strpos($REQUEST_URI$, '/17') = -1 * Примечание: рекомендую адреса к темам указывать полные, так как подобные адреса: -27 могут быть неполными у тем. Указывайте вместе с айди форума: /7-27 Либо для темы можно воспользоваться другой системной переменной: $URI_ID$ (рекомендую), условие будет выглядеть так: Код <?ifnot(strpos($REQUEST_URI$, '/17') = -1 && strpos($REQUEST_URI$, '/22') = -1 && $URI_ID$!="frTread27")?>Вывод форуму под айди 17 и 22, также вывод теме под айди 27<?endif?> ДЕМОПосмотреть пример Четвёртый вариант Если необходим отдельный дизайн для конкретной темы на форуме, то следует изменить в условии то что в двойных кавычках: "-30". Пример: Код <?if(strpos($REQUEST_URI$,"-30")!= -1)?>подключаемые стили\коды для темы под айди 30<?endif?> Или воспользоваться другой системной переменной: $URI_ID$ (рекомендую). Пример: Код <?if($URI_ID$="frTread30")?>подключаемые стили\коды для темы под айди 30<?endif?> Как узнать айди (ID): раздела, форума и темы? Данное решение вполне можно использовать не только в модуле «Форум», но и в других модулях, хотя для остальных модулей я больше рекомендую воспользоваться системными переменными: $MODULE_ID$, $PAGE_ID$, $URI_ID$. Если вы хотите иметь несколько дизайнов, то рекомендую ознакомиться с системной переменной $SPEC_FLAG$ → http://helper.ucoz.ru/publ/coding/spec_flag/2-1-0-3 Вот и всё! Если вам что-либо будет непонятно, обязательно спрашивайте в комментариях. |