1

我以前从未做过任何 php 编码,但我正在使用来自 chronoforums 的论坛扩展程序,并且我正在尝试向论坛添加一些 php,以便如果用户登录,它将显示 Welcome: $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>‹&lt;/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
    }
}
4

1 回答 1

0

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

$user = \JFactory::getUser();

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

namespace GCore\Extensions\Chronoforums\Helpers;

use \JFactory;

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

于 2013-10-07T04:19:25.100 回答