我正在 Drupal 中构建一个站点,我只想在使用我创建的视图的页面上显示辅助链接。我尝试在 views-view.tpl.php 中使用 $secondary_links 变量,但该变量为空。我怎样才能做到这一点?
3 回答
二级链接正确地写在 page.tpl.php 中,但如果我理解正确,最好的解决方案是不要让二级链接进入你的视图。
使用您的主题,辅助链接很可能会打印在它们应该显示的位置,无论显示什么,无论是您的视图、节点、首页等。视图被显示并且您呈现的所有其他内容都包含在页面模板,控制菜单的位置、区域和其他有趣的东西。
现在,如果你不想改变菜单的位置、样式和这些东西,你不应该在视图模板中打印二级菜单,你根本不应该对它做任何事情。
解决方案很简单
它使用了mac提到的东西,但方式不同:预处理函数。这些函数用于在您的 template.php 文件中,为您的变量添加一些逻辑。您可以更改变量或完全删除它们。我要做的就是通过将值设置为$primary_links
空文本字符串来删除主链接。
这将有效地删除主要链接,因此仅显示辅助链接。您也可以将辅助链接显示为主要链接,但这可能会使您的用户感到困惑。您只需要添加一些逻辑来控制何时发生这种情况并设置好。
您是否从主题设置中激活了辅助链接?那将是:
http://example.com/admin/build/themes/settings/name_of_your_theme
我相信一旦您激活了该选项,该变量就会被填充。
编辑:再想一想,我还要评论说我不确定主要和次要链接是否传递给视图模板。我相信这些会被传递到page.tpl.php
文件中。如果我是对的,并且由于某种原因您想将该变量添加到传递给视图模板的变量中,您将不得不使用预处理函数,如解释here。
编辑#2:确实,如果您只需要在特定视图模板中使用的二级菜单,另一种方法是简单地menu_secondary_links()
从模板中调用。这不是有史以来最优雅的解决方案,因为它在主题元素中放入了应该属于其他地方的东西,但是由您来决定视图中的菜单是核心功能还是样式元素。
!
您可以使用以下代码在任何视图上显示二级菜单
function YourTheme_preprocess_views_view(&$vars)
{
$menu_sec = menu_navigation_links('menu-secondary');
$vars['custom_menu'] = theme('links__menu-secondary', array('links' => $menu_sec));
}
或者您甚至可以根据需要使用其他预处理功能。
此外,您可以使用以下方法在 .tpl.php 文件中调用它:
<?php
$menu_sec = menu_navigation_links('menu-secondary');
print theme('links__menu-secondary',
array(
'links' => $menu_sec,
'attributes'=>array(
'class' => array('nav', 'nav-pills', 'p-f-subfilter'),
)
)
);
?>