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');
}
清除缓存,您就可以开始了。
我想更改或修改所有分类法页面我在我的 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');
}
清除缓存,您就可以开始了。