0

我正在使用 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 代码时,它无法识别 $member 的状态,并且总是将用户确定为未登录。

我究竟做错了什么?我猜它与变量范围有关,我检查了我的 PHP 书,但找不到错误。任何帮助表示赞赏。

4

2 回答 2

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';
}
于 2013-08-30T15:23:34.027 回答
1

您可以在一行中执行此操作,重构代码将是

  $member = (JFactory::getUser()->id) ? true : false ;
于 2013-08-31T02:46:02.303 回答