Как скрыть блок на форуме?

Главные вкладки

Аватар пользователя Artem1000 Artem1000 9 февраля 2011 в 2:01

Есть сайт на Друпал 7. Установил на него Advanced forum. Работает. Но есть одна закавыка - с правой стороны сайта висит блок, и мне бы хотелось, что бы на форуме он не показывался, а на всех остальных страницах - был. В свойства блока "не показывать на страницах" ввожу forum/*
И это работает, когда показывается главная страница форума или подфорумы. А вот когда заходишь в тему, то блок опять возникает, потому что адрес темы - узел node а не forum
как тут быть?

Комментарии

Аватар пользователя Artem1000 Artem1000 9 февраля 2011 в 2:32

И вот еще непонятка:
на сайте через модуль Wysiwyg установлен CKeditor. Однако, для того, что писать сообщения на форуме.ю он слишком навороченный, поэтому я установил NicEditor и поставил его через Wysiwyg как редактор Filtered HTML.
Далее, захожу в модули, Advanced Forum нажимаю на разрешения ролей Там ставлю галки напротив Filtered HTML зарегистрированным пользователям и себе. А с Full HTML галки всем снимаю.
Однако по умолчанию, если создавать ответ в ветке, грузится CKeditor. Как это побороть?

Аватар пользователя Viola Viola 9 февраля 2011 в 9:14

У Сетегнома есть отличный набор сниппетов, вам понадобится вот этот, только конечно придется немного изменить. http://content-management-systems.info/drupal/snippet/300 И там еще ошибочка маленькая - вместо последних двух TRUE должно быть FALSE.

Сорри, на версию не глянула - я работала только с шестеркой, так что может и не подойдет вам. Sad

Аватар пользователя Artem1000 Artem1000 9 февраля 2011 в 10:56

"msmart" wrote:
можно с помощью pathauto "node" заменить на "forum"

благодарю, но он еще требует модуль token. Что-то не очень хочется ставить два модуля только для того, что бы убрать блок. Может быть, есть способы попроще?

Аватар пользователя msmart msmart 9 февраля 2011 в 11:42

скорее всего можно в настройках видимости блока поставить
"Показать, если данный PHP-код возвращает TRUE" и сделать проверку по типу материала

но если уж

"Artem1000" wrote:
однако я не программист и строчки кода на меня производят пугающее впечатление

то вряд ли я еще чего придумаю

"Artem1000" wrote:
Что-то не очень хочется ставить два модуля только для того, что бы убрать блок

а для того, чтобы ссылки были логически понятными - не хотите? Smile

Аватар пользователя Viola Viola 9 февраля 2011 в 13:46

"Artem1000" wrote:
Благодарю, однако я не программист и строчки кода на меня производят пугающее впечатление

Вы можете попробовать код, который я делала для своего сайта (у меня шестая версия, но думаю будет работать):


<?php
$match 
TRUE;
$types = array('forum' => 1);
if (
arg(0) == 'node' && is_numeric(arg(1))) {
  
$nid arg(1);
  
$node node_load(array('nid' => $nid));
  
$type $node->type;
  if (isset(
$types[$type])) {
    
$match FALSE;
  }
}
if (
substr($_SERVER["REQUEST_URI"], 06) == '/forum')
$match FALSE;}
if (
substr($_SERVER["REQUEST_URI"], 0) == "/node/add/forum")
$match FALSE;}
return 
$match;
?>

Его нужно вставить в поле в настройках видимости блока, установив переключатель в нижнее положение "Показать, если данный PHP-код возвращает TRUE".

Аватар пользователя Artem1000 Artem1000 10 февраля 2011 в 9:41

Виола, благодарю. Однако я так и не нашел, где находятся настройки видимости блока.
Однако нашел другое - в свойствах блока есть галки, устанавливающие, на каких типах документа этот блок должен показываться. Если выключить тип документа "форум", то оно там и не показывается.

Аватар пользователя Viola Viola 10 февраля 2011 в 12:17

"Artem1000" wrote:
Однако я так и не нашел, где находятся настройки видимости блока.

Я имела ввиду то поле, куда вы вводили forum/*. Но если у вас в настройках есть такие чудо-галочки, то это именно то, что нужно! У меня такого нет, к сожалению, поэтому использую сниппеты.

Аватар пользователя chimir chimir 3 февраля 2012 в 18:04

Добрый день, я убрал блоки со страниц форума с помощью PHP кода

<?php
    
if (arg(0)  ==  'node' && is_numeric(arg(1))){
        
$node node_load(arg(1));
        return (
$node->type != 'forum');
    } elseif (
arg(0)  ==  'forum') {
        return 
False;
    }
    return 
True;
?>

Но теперь у меня возникла необходимость убрать блоки ещё с одной страницы, как это реализовать?