显示限制匿名用户访问的菜单项


9

我有一个网站,该网站使用“ 私人”模块来设置对内容的访问权限,当然我的某些页面具有菜单项。现在,如果我将页面设置为私人页面,则只有拥有适当权限的用户才能看到该页面,这很棒,而且是我想要的。

但是我对菜单项有一些问题,如果分配给它们的内容不是公开的(例如,分配给它们的页面是私有的),它们就会消失,这是可以的,但是我仍然希望能够显示那些菜单项在导航中,因此如果用户单击它们,它将带他们到登录页面,要求他们输入详细信息以查看该特定页面。

因此,基本上,我想更改菜单项的行为,使其始终对网站的匿名和注册成员可见,但是当您单击它们时,您将能够看到页面(如果已登录)或重定向到登录页面(如果是匿名用户)

我发现这种解决方案对我来说不是最佳解决方案,因为我有很多这样的页面,因此我正在寻找一种更好的方法。我什至尝试了菜单项可见性模块,但也无济于事!

请问我该如何实现?

路卡


我在github.com/bbinkovitz/derpl/tree/master/foreshadow_menu上有一些代码可能对您有所帮助。您可能必须更改一些值,或者以与我相同的方式命名菜单,但这可以帮助您入门。
beth,2012年

Answers:


4

您的问题很普遍。

这里是讨论如何在Drupal 6、7和8中实现这种技巧:http : //drupal.org/node/300607

Drupal 6(和7)删除了显示用户无权访问的菜单项的功能。但是,在某些情况下,即使用户无权访问菜单项,也希望显示菜单项。例如,如果您使用一种身份验证机制来尝试在显示403时获取身份验证,则您仍要显示菜单项,以便用户有机会提供登录凭据。

可在以下位置找到Drupal 7的解决方案:http : //drupal.org/node/300607#comment-4450062

如果您喜欢现成的模块-您可以在这里下载https://github.com/systemseed/always_visible


非常感谢你。希望他们有这个选项,内置的Drupal
卢卡

1

我遇到过类似的情况,页面必须出现在菜单系统中,但是内容应该只对已登录的用户显示。最终解决方案非常简单,并且可以继续工作。

节点模板会检查用户是否已登录,而不是控制内容访问。如果已登录,它将显示内容。如果不是,则会显示带有登录或注册链接的文本。

它们不会自动重定向,因此,如果这很关键,那么这不是解决方案。

简而言之,代码如下:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="https://drupal.stackexchange.com/user/login">log in</a> or <a href="https://drupal.stackexchange.com/user/register">register</a> etc etc.'
endif; 
?>

谢谢,但是由于许多原因,这不是一个好的解决方案,因为我使用的是另一种类型的模板系统,并且希望在列出内容(例如在Views中)时具有内容访问权限,因此应该尊重访问权限。

是的。希望您能找到答案。看来这将是一个非常常见的用例。
keva 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.