我一直坚持如何在模板文件中操作菜单块在其html中输出的内容。常规< ul class =“menu”>使用li链接很好,我不需要完全消除drupal为所有菜单创建的这个html但我想注入类'内联'和'链接',就像系统主菜单(通常)已经有它的ul元素。我可以直接在主题跳过块中打印菜单,但从长远来看,学习将类名注入到生成的菜单块的输出中会更有帮助。
到目前为止,谷歌只能找到一个模块,可以在单个li上输入ID和类名,但不包括ul包装它们,我一直无法得到任何类似的模板文件片段。我曾经来过工作。
有一种方法可以使用钩子函数来做到这一点吗?
答案 0 :(得分:3)
为什么不通过javascript添加你想要的课程?!
示例:
jQuery("#MY_MENU_WRAPPER ul.menu").addClass("inline");
如果是这种情况,请在主题的template.php文件中尝试以下代码
function return_menu_markup($menu_name, $attributes)
{
$items = array();
$menu_tree = menu_tree_all_data($menu_name);
$menu_tree_output = menu_tree_output($menu_tree);
foreach($menu_tree_output as $item_id => $item_data)
{
if(is_numeric($item_id) && is_array($item_data))
{
$items[] = l('<span>' . $item_data['#title'] . '</span>', $item_data['#href'], array(
'attributes' => $item_data['#attributes'],
'html' => TRUE,
)
);
}
}
return theme('item_list', array('items' => $items, 'type' => 'ul'));
}
然后在模板中的任何位置,只需执行以下操作:
$attributes = array();
$attributes['id'] = "MY_MENU_ID";
attributes['class'] = array('MY_CLASS_1', 'MY_CLASS_2', 'MY_CLASS_3');
return_menu_markup("main-menu", $attributes);
希望你找到所需的东西:)
-Muhammad。
答案 1 :(得分:3)
您可以在主题文件夹中使用template.php
,使用hook:
function THEMENAME_menu_tree__menu_main_navigation($variables){
return "<ul class=\"inline\">\n" . $variables['tree'] ."</ul>\n";
}
另请注意,此menu_main_navigation
是菜单网址路径,其他值始终相同。做一些缓存删除几次,也许它想立即工作。