我正在寻找一种在特定条件下为匿名用户隐藏特定菜单项的方法。特别是,我在几个子域上为附属公司提供网站,对于某些子域(附属公司),我想隐藏指向我的“关于我们”页面的链接,该页面出现在几个菜单中。
我并不太担心完全拒绝访问“关于我们”节点,但我很欣赏这可能是探索的一种途径。
到目前为止,我已经看过: * hook_menu_alter 但这仅在重建菜单树时调用,而且我看不到如何仅为特定匿名会话删除项目。* template_preprocess_menu_link :可能,但我如何告诉项目不要渲染。我可以向隐藏它的菜单项添加一个类,不是特别好,但它会起作用。* hook_node_access :看不到我将如何阻止仅此会话的访问。
欢迎任何想法或指示。
[编辑]为了跟进这一点,我有一个可行的解决方案,但我一点也不为此感到自豪,一定有更好的方法。我正在使用 'hidden' 类向列表项添加一个 css 'display:none' 属性。
function sil_affiliate_preprocess_menu_link(&$variables) {
$affiliate = get_affiliate_from_session();
if ($affiliate && !$affiliate->show_aboutus) {
$real_path = drupal_lookup_path('source','customerservice/aboutus');
if ($variables['element']['#original_link']['link_path'] == $real_path) {
$variables['element']['#attributes']['class'][] = 'hidden';
}
}
}
:wq 全家福。