Show a joomla article to registered users only, or

2019-02-13 23:24发布

In Joomla prior to 1.6 i could set a menu-item to public, and its contents: an article for example to registered.

This lead to a situation where people could see the link to an article in the menu when not logged in, but got a login component whenever they clicked it. And after that they saw the article.

In 1.7 these same actions lead to a situation where when I click the link the component screen just stays empty.

How do I get registered articles to show a login screen when the front end user is not logged in with sufficient rights? It was soo easy before and I can't seem to get it to work now.

5条回答
啃猪蹄的小仙女
2楼-- · 2019-02-13 23:46

If what you want is just to show a content if the visitor is a registered user, you can use this code:

$user =& JFactory::getUser();

    <?php
   if( !$user->guest ){ ?>

       [[what ever you want to do ]]
   <?php endif; ?> 

Hope that helps!!

查看更多
叼着烟拽天下
3楼-- · 2019-02-13 23:59

Im gonna answer my own question, because Im sure people will need this in the future, and my solution only involves a few rules of extra code and then you can set every article etc... to Registered and you'll see a login field when a user is not logged in.

In your templates index.php place this near the top, it gets your article's access level.

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

Then add a module position above your component, and only show it when your needed access level is > 1

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

Then add a login module in your module manager to LOGIN_MODULE_POSITION.

Voila... no routing needed etc... everything works out of the box, I chose to style away the logout box and action field like this:

.logout-button,
.actions{
    display:none;
}

Good luck!

查看更多
Luminary・发光体
4楼-- · 2019-02-14 00:04

Go menu CONTENT, create or edit a section to the items you want to protect.

You'll see an option: Access Level

There is 3 options:

Public, Registered and Special

Set it to: Registered

Then you'll need to change your articles for this section and that's all.

查看更多
虎瘦雄心在
5楼-- · 2019-02-14 00:08
  1. Create a new menu from menu manager, say it is named "hidden menu".
  2. Add any menu items that will be accessible only to registered users.
  3. Set the required access levels of these menu items ("Special" in this example, but it could also be "Registered"). Do NOT create a module for the "hidden menu". It will not be displayed on any page, so it doesn't need a module.
  4. Create your "real" menu (for example, "main menu") and the menu item that will display for all users (for example "Submit an Article"). The menu item will have a menu item type of "Alias". It's "Menu Item" parameter will be the "Submit an Article" menu item on the "hidden menu". The Access Level for this menu item will be "Public", since we want everyone to be able to see and use it.

  5. Create a module of type "mod_mainmenu" for this menu, just like you do for any menu.

  6. Create a login module and set the access level to "Public". Make sure the module is displayed only on the "Public" menu item and not the registred item, and select a visible position.

Now, when a guest (non-logged-in user) accesses the "Submit an Article" menu choice, it redirects them to blank page with the "Only for registred visitors" message. . If they log in successfully, they are taken to the desired page (in this case, "Submit an Article"). If there were already logged in, they go there directly.

查看更多
不美不萌又怎样
6楼-- · 2019-02-14 00:12

First of all you have to update your joomla installation to 2.5 (it's the latest version of joomla), 1.7 is no more supported by Joomla community.

There are several ways to set your viewing rights. K2 is a useful CCK component to do the job, also a useful technique that I use to follow is to "link" your article's categories in a menu and set specific permissions to the menu items

查看更多
登录 后发表回答