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.
In the menu editor type in the name of the menu item in the Title text box and then click Select next to Menu Item Type. In the popup that opens select Single Article. Then click Select next to Select Article and find and click on the name the desired one. Click Save to apply the changes.
Normally, you can leave this blank and Joomla will fill in a default value. The default value is the Title in lower case and with dashes instead of spaces. You may enter the Alias manually.
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!
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.
Create a module of type "mod_mainmenu" for this menu, just like you do for any menu.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With