drupal 7使用hook_alter_menu修改分类法页面

时间:2015-03-20 16:13:51

标签: drupal drupal-7

我想更改或修改我在bartik主题中在template.php中编写这段代码的所有分类页面,但发生了一些奇怪的事情。

第二个函数“bartik_term_page”中的$ term参数为空。

缺少什么? 它有时像这样的错误

它给出了一个错误。 警告:参数1到bartik_term_page()应该是一个引用,在menu_execute_active_handler()中给出的值(行路径\包括\ menu.inc)。

function bartik_menu_alter(&$menu) {
    $menu['taxonomy/term/%']['page callback'] = 'bartik_term_page'; 
    $menu['taxonomy/term/%']['access arguments'] = array('access content');
}



function bartik_term_page(&$term){

    $voc = taxonomy_vocabulary_load($term->vid);
    var_dump( $term ); die();

      // here you generate the actual content of the page
      // could be done e.g. with an entityfieldquery as follows

      $query = new EntityFieldQuery();
      $query->entityCondition('entity_type', 'node')
              ->fieldCondition('field_category', 'tid', $term->tid);
      $result = $query->execute();
      if (!empty($result['node'])) {
        $build['content']['nodes'] = node_view_multiple(node_load_multiple(array_keys($result['node'])), 'teaser'); // output the node teasers. you can control the markup of the 'teaser' view mode with a template in the theme folder
      } else {
        $build['content']['status']['#markup'] = t('No results found for term ID !tid.', array('!tid' => $term->tid));
      }
      return $build;


}

2 个答案:

答案 0 :(得分:1)

在'页面回调后添加以下行'你的bartik_menu_alter()函数中的行:

$menu['taxonomy/term/%']['page arguments'] = array(3);

这告诉Drupal在URL中找到参数的位置(它是第三个组件)。

答案 1 :(得分:1)

您实际上在那里引入了新的路由器项目,而不是覆盖现有的路由器项目。

分类页面的路径是taxonomy/term/%taxonomy_term,所以......

function bartik_menu_alter(&$menu) {
  $menu['taxonomy/term/%taxonomy_term']['page callback'] = 'bartik_term_page'; 
  $menu['taxonomy/term/%taxonomy_term']['access arguments'] = array('access content');
}

清除缓存,你应该好好去。