Для форума (стандартный) создал новый шаблон page-forum.tpl.php, список форумов, тем отображаются через шаблон page-forum.tpl.php, но при переходе на какое нибудь сообщение, адрес меняется на http://сайт.ru/NODE/, т.е. уже не http://сайт.ru/FORUM/, и соответственно тут уже работает шаблон page.tlp.php, появляются левый сайдбар, который мне на форуме не нужен и который я убираю в шаблоне page-forum.tpl.php Как можно выйти из этого положения, может быть есть другой способ
Комментарии
[module=pathauto]
А при указании областей видимости блоков алиасы работают наравне с системными путями.
адреса сообщений форумов стали сайт.ru/forum/16, но все равно используется шаблон page.tlp.php, видимо из-за того, что системное имя все равно осталось сайт.ru/node/16
Неправда, есть phptemplate-сниппет для этого
Вроде у меня что-то такое было в загашниках решений, но утверждать не буду. Я сегодня, оёёё... Итак, вам надо в нодах типа Сообщение форума убрать колонки left и right. Тогда в начале page.tpl.php пишем примерно так:
if(arg(0)=='node' && ($node=node_load(arg(1)) && ($node->type=='forum')) $is_forum = TRUE;
Колонки обычно выводятся в шаблоне примерно так:
<div id="left">
<?php print $left ?>
</div>
<?php endif; ?>
Модифицируем:
<div id="left">
<?php print $left ?>
</div>
<?php endif; ?>
Правда, это слишком хардкодно. Правильнее переменную $is_forum надо определять в препроцесс-функции этого шаблона, но это уже ищите в документации.
Попробовал так сделать, но получается ошибка:
Parse error: syntax error, unexpected T_VARIABLE in /путь до файла/page.tpl.php on line 18 .
В этой строчке выше описанный код.
Может что ни так сделал.
А что за снипет, подскажите
Ага, нашел не недостающую скобочку, только все равно, на страницах форума $is_forum = FALSE
Попробуйте еще с парой скобок:
if(
(arg(0)=='node') &&
($node=node_load(arg(1))) &&
($node->type=='forum')
) $is_forum = TRUE;
И сами потестируйте. Идею-то поняли?
Если
это страница ноды И
нода грузится И
тип ноды это forum,
то это страница форума.
Да, идея то понятна, почитал про arg, только у меня почему то, тип не forum. Написал в личном сообщении адрес сайта, если не сложно можно взглянуть на него
Давно еще на 4.7.Х использовал следующий код:
if (arg(0) == 'forum') {
return TRUE;
}
if (arg(0) == 'node' && ctype_digit(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'forum') {
return TRUE;
}
}
return FALSE;
}
(помещаем эту функцию в template.php )
соответственно, код вывода левого блока (который убирался на форуме) у меня принимал вид:
<?php if ($sidebar_left) { ?>
<td class="rightcol" valign="top">
<?php print $sidebar_left ?>
</td>
<?php } ?>
<?php } ?>
Ура! Все получилось. Спасибо!
Получилось при помощи которого кода?
при помощи кода который написал Shedko