尝试将PHP添加到Joomla网站崩溃


Trying to add PHP to Joomla website crashed

我以前从未做过任何php编码,但是我正在使用chronoforums的论坛扩展,并且我正在尝试向论坛添加一些php,以便如果用户登录,它将显示欢迎:$user,如果没有,它将显示一个链接登录/注册。这是我尝试过的代码,但它使论坛页面崩溃。

<?php 
  $user = JFactory::getUser();
  $status = $user->guest;
  if($status == 1) {
      $url = "/forum/login";
      echo "<a href='"$url'">Login/Register</a>";
  } else { 
      echo "<p>Welcome: {$user->username}</p>";
  }   
?>   

错误:

    Fatal error: Class 'GCore'Extensions'Chronoforums'Helpers'JFactory' not found in D:'wamp'www'administrator'components'com_chronoforums'extensions'chronoforums'helpers'elements.php on line 72
Call Stack
#   Time    Memory  Function    Location
1   0.0008  687992  {main}( )   ..'index.php:0
2   0.1207  9311448 JSite->dispatch( )  ..'index.php:52
3   0.1248  9382296 JComponentHelper::renderComponent( )    ..'application.php:220
4   0.1318  9428368 JComponentHelper::executeComponent( )   ..'helper.php:335
5   0.1322  9495248 require_once( 'D:'wamp'www'components'com_chronoforums'chronoforums.php' )  ..'helper.php:355
6   0.1401  10315576    GCore'Libs'AppJ::call( )    ..'chronoforums.php:20
7   0.1402  10318272    GCore'Libs'AppJ->dispatch( )    ..'app_j.php:290
8   0.2263  14214704    GCore'Libs'View->renderView( )  ..'app_j.php:208
9   0.2267  14328112    include( 'D:'wamp'www'administrator'components'com_chronoforums'extensions'chronoforums'views'index.php' )  ..'view.php:69
10  0.2268  14328112    GCore'Extensions'Chronoforums'Helpers'Elements->header( )   ..'index.php:6

这是我添加代码的整个页面:

<?php
/**
* ChronoCMS version 1.0
* Copyright (c) 2012 ChronoCMS.com, All rights reserved.
* Author: (ChronoCMS.com Team)
* license: Please read LICENSE.txt
* Visit http://www.ChronoCMS.com for regular updates and information.
**/
namespace GCore'Extensions'Chronoforums'Helpers;
defined('_JEXEC') or die('Restricted access');
defined("GCORE_SITE") or die;
class Elements {
    function footer($data = array()){
        $topic = isset($data['topic']) ? $data['topic'] : null;
        $subscribed = isset($data['subscribed']) ? $data['subscribed'] : null;
        ?>
        <div class="cfu-navbar">
            <div class="cfu-inner">
            <span class="cfu-corners-top"><span></span></span>
            <ul class="cfu-linklist">
                <li class="cfu-icon-home"><a accesskey="h" href="<?php echo r_("index.php?option=com_chronoforums"); ?>"><?php echo l_('CHRONOFORUMS_BOARD_INDEX'); ?></a></li>
                <?php if('GCore'Libs'Authorize::authorized(''GCore'Extensions'Chronoforums'Chronoforums', 'make_posts')): ?>
                    <?php if(isset($subscribed)): ?>
                        <?php if(!empty($subscribed['Subscribed'])): ?>
                        <li class="cfu-icon-unsubscribe"><a title="<?php echo l_('CHRONOFORUMS_UNSUBSCRIBE_TOPIC'); ?>" href="<?php echo r_("index.php?option=com_chronoforums&cont=topics&act=unsubscribe&t=".$topic['Topic']['id']); ?>"><?php echo l_('CHRONOFORUMS_UNSUBSCRIBE_TOPIC'); ?></a></li>
                        <?php else: ?>
                        <li class="cfu-icon-subscribe"><a title="<?php echo l_('CHRONOFORUMS_SUBSCRIBE_TOPIC_DESC'); ?>" href="<?php echo r_("index.php?option=com_chronoforums&cont=topics&act=subscribe&t=".$topic['Topic']['id']); ?>"><?php echo l_('CHRONOFORUMS_SUBSCRIBE_TOPIC'); ?></a></li>
                        <?php endif; ?>
                    <?php endif; ?>
                    <?php if(0): ?>
                    <li class="cfu-icon-bookmark"><a title="Bookmark topic" href="">Bookmark topic</a></li>
                    <?php endif; ?>
                <?php endif; ?>
            </ul>
            <span class="cfu-corners-bottom"><span></span></span></div>
        </div>
        <?php
    }
    function header($data = array()){
        $forum = isset($data['forum']) ? $data['forum'] : null;
        ?>
        <div class="cfu-navbar">
            <div class="cfu-inner">
            <span class="cfu-corners-top"><span></span></span>
            <ul class="cfu-linklist cfu-leftside">
                <li class="cfu-icon-home">
                    <a accesskey="h" href="<?php echo r_("index.php?option=com_chronoforums"); ?>"><?php echo l_('CHRONOFORUMS_BOARD_INDEX'); ?></a>
                    <?php if(!empty($forum)): ?>
                    <strong>‹</strong>
                    <a href="<?php echo r_("index.php?option=com_chronoforums&cont=forums&f=".$forum['id']); ?>"><?php echo $forum['title']; ?></a>
                    <?php endif; ?>
                </li>
            </ul>
            <div class="cfu-rightside">
                <form action="<?php echo r_('index.php?option=com_chronoforums&cont=search'); ?>" method="post" name="searchform">
                <fieldset>
                    <input type="text" value="" size="20" id="cfu-search_keywords" name="skeywords" class="cfu-inputbox cfu-search cfu-tiny"/>
                    <input type="submit" name="forums_search" value="<?php echo l_('CHRONOFORUMS_SEARCH'); ?>" class="cfu-button2"/>
                    <input type="hidden" name="f" value=""/>
                </fieldset>
                </form>
            </div>
            <span class="cfu-corners-bottom"><span></span></span></div>
        </div>
<?php 
$user = JFactory::getUser();
$status = $user->guest;
if($status == 1){
$url = "/forum/login";
echo "<a href='"$url'">Login/Register</a>";
}
else
{ 
echo "<p>Welcome: {$user->username}</p>";
}   
?>   
        <?php
    }
}

由于您在GCore'Extensions'Chronoforums'Helpers中工作并且JFactory类在全局空间中,您只需为其添加前缀,例如

$user = 'JFactory::getUser();

或者,您可以在顶部添加一个use语句,例如

namespace GCore'Extensions'Chronoforums'Helpers;
use 'JFactory;

见 http://php.net/manual/language.namespaces.global.php