Yiiフレームワークで書かれたサイトにphpBBフォーラムを迅速に統合する方法に関するステップバイステップの説明
フォーラムをYiiフレームワークに統合するためのすべての指示をまとめました。これに続いて、記事の最後に機能するフォーラムと小さなボーナスを取得することが保証されます。
Yiiで書かれた有効なサイトが既にあると想定されている場合は、フォーラムをダウンロードしてインストールする必要があります。
- 公式のphpBB Webサイトからフォーラムをダウンロードします。必要に応じて、同じ場所に亀裂のあるアーカイブをダウンロードします
- フォーラムのアーカイブをサイトのフォルダーの「/ forum 」サブディレクトリに解凍します。クラックをダウンロードした場合は、クラックのダウンロード元のページに記載されている手順も実行します(ファイルを配置するディレクトリの指示がありますRussification、それらのディレクトリをクラックファイルで補完するだけで、上書きしないでください)
- ブラウザでyoursite.com/forum/index.phpを開くと、フォーラムのインストールページが表示され、インストールが実行されます。複雑なことは何もありません。 インストールが完了したら、サーバーからフォルダー「 / forum / install 」を削除します。
フォーラムのデバッグの便宜上、「 /forum/config.php 」ファイルの行のコメントを外すことをお勧めします。
@define('DEBUG', true); @define('DEBUG_EXTRA', true);
これにより、フォーラムテンプレートのキャッシュが無効になり、発生したエラーが表示されます。 - Yiiの拡張機能( オリジナルはこちら )をダウンロードしてインストールしますが、少し修正しました。
ダウンロード後、ディレクトリ「 / protected / extensions / phpBB 」に解凍し、「 /protected/ config / main.php 」ファイルに次を追加します。
'components'=>array( 'phpBB'=>array( 'class'=>'ext.phpBB.phpBB', 'path'=>'webroot.forum', ), 'user'=>array( 'class'=>'PhpBBWebUser', 'loginUrl'=>array('/site/login'),
- 次に、 ここですでに説明した指示に従ってすべてを行いますが、ここでは同じことを、不必要な言葉なしで書きます。
ユーザークラスがYiiサイトで既に使用されている場合は、次の手順を実行します。
- ディレクトリ「 / protected / components 」に、次の内容の新しいファイル「 PhpBBWebUser.php 」を追加します。
<?php class PhpBBWebUser extends WebUser{ private $_identity; public function login($identity, $duration=0) { $this->_identity = $identity; return parent::login($identity, $duration); } protected function afterLogin($fromCookie) { if ($this->_identity !== null) { if (Yii::app()->phpBB->login($this->_identity->username, $this->_identity->password) != 'SUCCESS') { Yii::log(" ({$this->_identity->username})", CLogger::LEVEL_ERROR); } } parent::afterLogin($fromCookie); } protected function afterLogout() { Yii::app()->phpBB->logout(); parent::afterLogout(); } }
- ユーザーモデル(Yii)に次の行を追加します。
protected function afterSave() { if ($this->isNewRecord) {
ユーザーがサイトのパスワードを変更できる場合、パスワード変更アクションに次の行を追加します。
Yii::app()->phpBB->changePassword($user_login, $user_new_password);
- フォーラムで登録と承認を終了する必要がある場合は、ファイル「 /forum/ucp.php 」で次の行を大文字と小文字に変更します。
case 'register': header('location: /site/registration'); exit(); case 'login': header('location: /site/login'); exit(); case 'logout': header('location: /site/logout'); exit();
あなたのサイトでのフォーラムの統合のこの部分で終了します
次に、iframeに頼らずに、二輪自転車を発明することなく、サイトのテンプレート内にフォーラムを表示することがいかに簡単かを説明します。
Yiiをフォーラムに直接接続します。
- 次の内容の新しいファイル「 /forum/yiiapp.php 」を作成します。
<?php
- ファイル " /forum/index.php "(フォーラムのメインページ)で、次の行を最初に追加します。
include "yiiapp.php"; $controller = new Controller('bbforum');
さらに、このファイルではpage_footer()がページの最後で呼び出されます。これは実際には作業結果の画面への出力です(他のフォーラムファイルでは、この機能は1つのファイルで複数回発生します)。 この関数は内容を表示し、最後にexit()を作成します。この関数を改良し、ファイル「 /forum/includes/functions.php 」を開き、そこにpage_footer()関数を見つけて最後に追加する必要があります。
function page_footer($run_cron = true) {
ここで最も興味深い行は
Yii :: app()-> controller-> renderPartialで、フォーラムスクリプトの処理結果全体をYiiに
渡して処理し、フォーラムのメインページがテンプレートのコンテンツ部分
//レイアウト/メインに表示されます!
フォーラムの各ページ(たとえば、
viewforum.php 、
viewtopic.php )でこのメソッドを使用する必要があります。
この後、フォーラム内でYiiサイトのすべてのクラスを使用できることを忘れないでください。
もちろん、上に書かれていることはすべて改善できますが、私の仕事はあなたに働き方を与えることでした;-)
したがって、Yiiプロジェクトの一般的なテンプレート内に、「あたかも」サードパーティのスクリプトを絶対に表示できます。upd:この記事の最新バージョン:
http ://ivan-orlov.com/ru/articles/integraciya-phpbb-v-yii-framework