我正在使用Joomla 2.5,在我的网站的头部,我有一个包含以下代码的模块:
<?php
$user =JFactory::getUser()->guest;
if ($user->guest) {
echo 'Please sign up or sign in to view this'
}
else {
echo 'Here is the content';
}
?>
我尝试但没有工作的是在第一个if语句中添加变量$ member。如果此人未登录以向他显示回声,但也将$ member设置为== true。
为什么我要这样做?我认为如果我检查$ member的状态比调用Joomla API来确定用户是否登录,这将使网站加载更快。
确定访客是否是每个页面中的成员的调用大约是5-7。当我使用JFactory :: getUser()函数(上面的所有代码)5-7次时,它确实减慢了网站的速度。多数民众赞成为什么我想在第一次调用中创建$ member == true如果我错了认为这在站点性能/速度方面会更好。
我试过了:
<?php
$user =JFactory::getUser()->guest;
if ($user->guest) {
echo 'Please sign up or sign in to view this'
$member == true;
}
else {
echo 'Here is the content';
}
?>
我在头模块中有上面的代码。但是,当我在以后在同一页或文中其他模块,如果我使用的PHP代码它不识别$构件的状态,并始终判断在不登录的用户。
我做错了什么?我猜它的变量范围,我检查了我的PHP书但找不到错误。任何帮助表示赞赏。
答案 0 :(得分:1)
您已拨打$user->guest
,请尝试更改:
$user = JFactory::getUser()->guest;
到此:
$user = JFactory::getUser();
作为替代方案,您还可以使用以下内容:
$user =& JFactory::getUser();
if($user->id=0){
echo 'Please sign up or sign in to view this'
$member == true;
}
else {
echo 'Here is the content';
}
答案 1 :(得分:1)
您可以在一行中执行此操作,重构代码将是
$member = (JFactory::getUser()->id) ? true : false ;