我想更改或修改我在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;
}
答案 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');
}
清除缓存,你应该好好去。