約1年前、フォーラム(phpBB)に登録したユーザーがサイト(modX)にログインできるようにする必要がありました。 当時、フォーラムはすでに機能しており、ユーザーは積極的にコミュニケーションをとっていました。
MODxBBソリューションはその
時点では存在せず、必要でした
空想する。
結果はこのようなものです<?php global $modx, $phpbb_root_path, $phpEx, $user, $db, $config, $cache, $template, $auth; $phpbb_root_path = $modx->config['base_path'] . 'forum/'; define('IN_PHPBB', true); $phpEx = "php"; include($phpbb_root_path . 'includes/functions_install.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); $user->session_begin(); $auth->acl($user->data); $user->setup('ucp'); $login = array(); if(isset($_POST['logoutForum']) && $user->data['user_id'] != ANONYMOUS) $user->session_kill();
コードは確かに完璧ではありませんが、完璧に機能しました。
フォーラムエンジンを変更するアイデアがなかった場合、このトピックはこれで終了していました。 インターネットをさまよい、XenForoをインストールすることにしました。 決定要因は次のような項目でした。
- すぐに使えるソーシャルパン
- phpBB 3.0フォーラムからユーザー、トピック、メッセージをインポートする機能
- コンフォートコード
- アクティブなコミュニティ
ダウンロード、インストール、インポート...さらに、古いフォーラムのリンクを使用してサイトにアクセスしたユーザーを新しいページにリダイレクトできるように、ID-Schnickを保存してインポートが行われました。
ここで、サイト自体で認証フォームを復元する必要がありました。 判明したように、XenForoコードは非常に明確であるため、これはそれほど難しくありません。
<?php $noauth=isset($noauth)? $noauth : '';
そして今、最も興味深い部分が始まります:modxParserActiveがどんな神秘的な関数であるかを説明します。
ライブラリ/ XenForo /フォルダーからApplication.phpファイルを開き、XenForo_Applicationクラスに新しい変数の定義を追加します
protected static $_modxParser = false;
次に、新しい関数を定義します
public static function modxParserActive() { self::$_modxParser = true; } public static function GetModxParser() { return self::$_modxParser; }
そして最後の仕上げ。 beginApplication関数で、コードをラップします
@ini_set('output_buffering', false);
次の条件で
if(!self::GetModxParser()){ …... }
はい、エンジンコードをクロールすることは最良のアイデアではないことを知っていますが、それがまさにポイントでした。 この投稿。 これまでのところ、これがmodxとXenForoの互換性の競合を回避することができた唯一の方法です。 実際、modxはob_end_cleanのみを使用してチャンク、スニペットを解析します。 そして、この関数は以前に呼び出されたため、modxは空のバッファーを受け取り、その後の結果をすべて受け取ります。