Разный дизайн в определённых разделах форума, или темах
Многие на форуме сообщества uCoz интересовались вопросом «
Как сделать иной дизайн в определённых разделах форума?» ссылаясь на
эту тему с идеей на реализацию.
Flesh
описал, что это возможно сделать с помощью скрипта. Скрипт мы
использовать не будем, вполне можно реализовать на уровне системы при
помощи системных переменных, что куда проще.
Всё предельно просто. Делается это с помощью условного оператора
$REQUEST_URI$ применив
strpos.
При помощи этого условия мы сможем изменить весь дизайн, либо
подключить иную\дополнительную таблицу стилей. Или, например, заменить
элементы дизайна (код в шаблонах), в общем на что способна ваша
фантазия.
Остаётся главный вопрос, чем же отличается использование переменной $REQUEST_URI$ от других условных операторов «?».
Тем, что применив в условие переменную $REQUEST_URI$, вам не нужно
будет прописывать условие для каждой(го) темы\форума\раздела, так как
айди в условии наследует все его значения (переменные и свойства).
Например, форум имеет адрес: /forum/, раздел форума: /forum/id, тема форума: /forum/id форума-id темы – раздел как и тема наследует адрес своего родителя.
Вставляется условие как обычно, в общий вид страниц форума → http://адрес-сайта.ru/tmpls/?a=tmpl;m=8;t=1 |  |
- $MODULE_ID$, $PAGE_ID$, $URI_ID$
– специальные коды которые могут пригодиться, если нужно выводить
различный текст или какой-то другой код для разных страниц, использующих
один и тот же шаблон. Например, форум имеет массу различных страниц,
однако шаблон у данного модуля только один, но с помощью кода $PAGE_ID$
можно вывести какой-то текст только на нужных типах страниц.
*Узнать значения переменных $MODULE_ID$, $PAGE_ID$, $URI_ID$ можно через "Админ-бар" зайдя на сайт как Администратор.
- $REQUEST_URI$
– содержит то, что запросил браузер, например:
http://www.site.net/forum/?my_parametr. То есть возвращает адрес
страницы, к которой обратился пользователь.
ДЕМОПосмотреть
пример Первый вариант
Код
<?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?>
* Примечание: тут также следует адреса к темам указывать полные, так как подобные адреса: -30 могут быть неполными у тем. Указывайте вместе с айди форума: /7-30 Или воспользоваться другой системной переменной:
$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