仅向注册用户显示joomla文章,如果未登录,则显示登录屏幕

Han*_*ink 5 php joomla content-management-system joomla1.7

在1.6之前的Joomla中,我可以将菜单项设置为公共,其内容:例如注册的文章.

这导致人们在未登录时可以看到菜单中文章的链接,但是只要他们点击它就会得到一个登录组件.之后他们看到了这篇文章.

在1.7中,这些相同的操作导致这样的情况:当我单击链接时,组件屏幕保持为空.

当前端用户未以足够的权限登录时,如何获取注册文章以显示登录屏幕?以前太容易了,我现在似乎无法上班.

Han*_*ink 9

我要回答我自己的问题,因为我相信人们将来会需要这个,我的解决方案只涉及一些额外代码的规则,然后你可以设置每篇文章等......注册,你会看到一个登录字段当用户未登录时

在你的模板中,index.php将它放在顶部附近,它可以获得文章的访问级​​别.

$article =& JTable::getInstance("content");
$article->load(JRequest::getVar('id'));
$cAccLevel = $article->get("access");
Run Code Online (Sandbox Code Playgroud)

然后在组件上方添加一个模块位置,并仅在所需的访问级别> 1时显示

<?php if($cAccLevel > 1): ?>
    <jdoc:include type="modules" name="LOGIN_MODULE_POSITION" />
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

然后在模块管理器中将登录模块添加到LOGIN_MODULE_POSITION.

瞧...不需要路由等......一切都开箱即用,我选择了这样的注销框和动作字段:

.logout-button,
.actions{
    display:none;
}
Run Code Online (Sandbox Code Playgroud)

祝好运!


Sti*_*ero 5

  1. 从菜单管理器创建一个新菜单,说它被命名为"隐藏菜单".
  2. 添加只有注册用户才能访问的任何菜单项.
  3. 设置这些菜单项的必需访问级别(本例中为"特殊",但也可以是"已注册").不要为"隐藏菜单"创建模块.它不会显示在任何页面上,因此不需要模块.
  4. 创建"真实"菜单(例如,"主菜单")和将为所有用户显示的菜单项(例如"提交文章").菜单项的菜单项类型为"别名".它的"菜单项"参数将是"隐藏菜单"上的"提交文章"菜单项.此菜单项的访问级别将为"公共",因为我们希望每个人都能够查看和使用它.

  5. 为此菜单创建一个"mod_mainmenu"类型的模块,就像您对任何菜单一样.

  6. 创建登录模块并将访问级别设置为"公共".确保模块仅显示在"公共"菜单项而不是注册项目上,并选择可见位置.

现在,当访客(未登录用户)访问"提交文章"菜单选项时,它会将其重定向到空白页面,其中包含"仅限注册访问者"消息..如果他们成功登录,他们将被带到所需的页面(在这种情况下,"提交文章").如果已经登录,他们会直接去那里.