私のサイトには phpbb3 が統合されています。
https://wiki.phpbb.com/External_Loginで説明されているように、ヘッダー Web ページにログインがあります。
すべて正常に動作しますが、もう少し先に進みたいと思います。ウェブサイトのヘッダーにナビゲーション バーを配置したいのですが、ウェブサイトのヘッダーに新しいメッセージとユーザー プロファイルを表示できます。私はこのコードを使用しています:
<?php
define('IN_PHPBB', true);
$phpbb_root_path = '../phpbb3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
<div class="registro">
<?php
if ($this->_rootref['S_USER_LOGGED_IN']) {
?>
<div class="navbar" style="background-image:url('../img/opaco.png');">
<div class="inner"><span class="corners-top"><span></span></span>
<?php
if (!$this->_rootref['S_IS_BOT'] && $this->_rootref['S_USER_LOGGED_IN']) {
?>
<ul class="linklist leftside">
<li class="icon-ucp">
<a href="<?php
echo (isset($this->_rootref['U_PROFILE'])) ? $this->_rootref['U_PROFILE'] : '';
?>" title="<?php
echo ((isset($this->_rootref['L_PROFILE'])) ? $this->_rootref['L_PROFILE'] : ((isset($user->lang['PROFILE'])) ? $user->lang['PROFILE'] : '{ PROFILE }'));
?>" accesskey="e"><?php
echo ((isset($this->_rootref['L_PROFILE'])) ? $this->_rootref['L_PROFILE'] : ((isset($user->lang['PROFILE'])) ? $user->lang['PROFILE'] : '{ PROFILE }'));
?></a>
<?php
if ($this->_rootref['S_DISPLAY_PM']) {
?> (<a href="<?php
echo (isset($this->_rootref['U_PRIVATEMSGS'])) ? $this->_rootref['U_PRIVATEMSGS'] : '';
?>">
<?php
echo (isset($this->_rootref['PRIVATE_MESSAGE_INFO'])) ? $this->_rootref['PRIVATE_MESSAGE_INFO'] : '';
?></a>)<?php
}
if ($this->_rootref['S_DISPLAY_SEARCH']) {
?> •
<?php
}
?>
</li>
</ul>
<?php
}
?>
<ul class="linklist rightside">
<?php
if (!$this->_rootref['S_IS_BOT']) {
if ($this->_rootref['S_DISPLAY_MEMBERLIST']) {
?><?php
}
if (!$this->_rootref['S_USER_LOGGED_IN'] && $this->_rootref['S_REGISTER_ENABLED'] && !($this->_rootref['S_SHOW_COPPA'] || $this->_rootref['S_REGISTRATION'])) {
?><li class="icon-
register"><a href="<?php
echo (isset($this->_rootref['U_REGISTER'])) ? $this->_rootref['U_REGISTER'] : '';
?>"><?php
echo ((isset($this->_rootref['L_REGISTER'])) ? $this->_rootref['L_REGISTER'] : ((isset($user->lang['REGISTER'])) ? $user->lang['REGISTER'] : '{ REGISTER }'));
?></a></li><?php
}
?>
<li class="icon-logout"><a href="<?php
echo (isset($this->_rootref['U_LOGIN_LOGOUT'])) ? $this->_rootref['U_LOGIN_LOGOUT'] : '';
?>" title="<?php
echo ((isset($this->_rootref['L_LOGIN_LOGOUT'])) ? $this->_rootref['L_LOGIN_LOGOUT'] : ((isset($user->lang['LOGIN_LOGOUT'])) ? $user->lang['LOGIN_LOGOUT'] : '{ LOGIN_LOGOUT }'));
?>" accesskey="x">
<?php
echo ((isset($this->_rootref['L_LOGIN_LOGOUT'])) ? $this->_rootref['L_LOGIN_LOGOUT'] : ((isset($user->lang['LOGIN_LOGOUT'])) ? $user->lang['LOGIN_LOGOUT'] : '{ LOGIN_LOGOUT
}'));
?></a></li>
<?php
}
?>
</ul>
<span class="corners-bottom"><span></span></span></div>
</div>
<?php
} else
//user is not logged in
{
include('loginGeneral.php');
// this is a login form
}
?>
</div>
ユーザーが登録していない場合はカスタムログインフォームを使用しますが、ユーザーが登録している場合は、一部変更されたナビゲーションバーを表示します。
そのコードは、サイトのphpbb3メニューにいるときに機能します。つまり、フォーラム内でサーフィンしているときは、ウェブサイトのヘッダーにナビゲーションバーを表示できますが、たとえばホームページにいるときは
致命的なエラー: 2 行目の C:\wamp\www\esp\cabecera.php のオブジェクト コンテキストではないときに $this を使用する
ファイルがいくつかのファイルをロードし、コード全体で $this->_rootref を変更する可能性があると思いますが、少し迷っています。
編集済み:私はまだこれにこだわっています。誰か助けてください。$this->_rootref を $_rootref に置き換え、おそらくいくつかのインクルードを追加する必要があると思いますが、どれがわかりません。ありがとう