How can I execute a different code in my plugin depending on if the user is logged in or not in Joomla? Basically I want to do this:
<?php
if (loggedin) {
// Do something
}
else {
// Do something else
}
?>
Joomla Stack Exchange is a question and answer site for Joomla! administrators, users, developers and designers. It only takes a minute to sign up.
Sign up to join this communityI usually do something like this:
<?php
$user = JFactory::getUser();
if ($user->guest) {
// User is not logged in
} else {
//User is logged in
}
?>
Take a look at the Joomla Documentation.
You can either use this:
$user = JFactory::getUser();
if($user->id != 0)
{
// you are a member
}
else
{
// you are a guest
}
or this:
$user = JFactory::getUser();
if($user->guest)
{
// you are a guest
}
else
{
// you are a member
}
Bother are the same with most likely nano seconds in performance, in regards to speed.
Besides the direct programmatic method to conditionally show different contents (JFactory::getUser()->guest), there's an alternative to create a Guest group to identify this specific set of users; in this way, the content can be managed either at the CMS level with the regular administrative tools or in a plugin with Access Control List controls:
How do you hide something from logged in users? http://docs.joomla.org/How_do_you_hide_something_from_logged_in_users%3F
Associated routine to check if the user belongs to the Guest group:
$user = JFactory::getUser();
$groups = JAccess::getGroupsByUser(user->id, false);
if (in_array(MY_GUEST_GROUP, $groups))
{
echo 'Only visible for guests';
}