Определение типа содержимого страницы - PullRequest
0 голосов
/ 11 августа 2010

Я работаю в Drupal 6.

У меня есть требование добавить определенный блок, когда пользователь находится на странице блога.Звучит достаточно просто, но это сводит меня с ума.

Блок нужно показывать, когда пользователь просматривает обзор блога или отдельную запись в блоге.

Сначала я думал, что смогу отфильтровать его.по имени страницы, поэтому он появляется только когда page = / blog / .К сожалению, это относится только к странице обзора блога;отдельные страницы записей в блогах имеют свои собственные URL-адреса (по умолчанию это / node / , но они будут изменены на то, что хочет владелец).

Чуть больше поиска в Google, и я узнал о $ node-> type== 'блог', который должен учитывать тот факт, что я нахожусь на страницах записи блога, но, похоже, не работает.

На странице admin / build / block / configure у меня установлен видимость страницыв режим PHP, и код PHP выглядит следующим образом:

<?php
return ($node->type == 'blog');
?>

, но, похоже, это не сработает, даже если я печатаю в шаблоне $_r ($ node), он показывает type == blog.

Я также добавил strpos ($ _ SERVER ['REQUEST_URI', 'blog') к вышеприведенному, но, конечно, поскольку первое условие не работает, добавление второго не поможет.

Такое ощущение, что должен быть очевидный ответ, но я просто не могу его найти.Может кто-нибудь мне помочь.Благодаря.

1 Ответ

1 голос
/ 11 августа 2010

Ваша проблема с приведенным выше кодом заключается в том, что при запуске кода для блока переменная $ node не будет доступна. Вам нужно сделать что-то подобное, чтобы добавить это в узлы блога.

<?php
    // This code checks the internal url, which for nodes always will be node/[nid].
    // Last condition: don't display the block on node edit forms etc.
    if (arg(0) == 'node' && is_numeric(arg(1)) && empty(arg(2))) {
      $node = node_load(arg(1));
      return $node->type == 'blog';
    }
?>
...