drupal 7 修改分类页面 hook_alter_menu

drupal 7 modify taxonomy page with hook_alter_menu

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

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

缺少什么? 有时会出现这样的错误

报错。 警告:bartik_term_page() 的参数 1 应为参考,menu_execute_active_handler() 中给出的值(行 path\includes\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;


}

在 bartik_menu_alter() 函数中的 'page callback' 行之后添加以下行:

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

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

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

分类页面的路径是 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');
}

清除缓存,您就可以开始了。