MODx&Vbulletin 3.8.x-最新のフォーラム投稿

最近、 vbulletinとMODxユーザーをマージする方法を書きましたが、フォーラムとサイト間の接続がユーザーのみである場合、これをどのように使用しますか? この合併を実際に応用したいのですが、ウォームアップのために、サイトのフォーラムから最後のN個のメッセージの出力を引き出します。



それと同じくらい簡単



これはいつでも実装できることをすぐに言いたいのですが、この記事は以前の記事に依存しません。



まず、サイトでのメッセージの表示方法をテーブルの形で決定する必要がありますか? 原則として、これらは日付、時刻、著者、トピック、セクションを示すレコードの連続した行です。 別のオプションは、メッセージの最初のM文字で、訪問者に完全に興味を持たせます。

したがって、 forum_last_messagesチャンクを作成し、その中の各エントリのビューに入ります。

 <div id="post_[+postid+]" class="forum_message"> <a href="[+forumlink+]/showthread.php?p=[+postid+]">[+threadtitle+] ([+replycount+])</a>  <span id="user">[+lastposter+]  [+postdate+]</span> <p>/[+forum+]</p> [+shortmessage+] </div>
      
      





実際、div_クラスをforum_messageクラスで指定したため、後でCSSスタイルで美しくし、ニーズに合わせて内部のテキストをフォーマットできます。 次に、指定された最後のメッセージ、その名前、およびその中の応答の数を含むスレッドの表示を示すフォーラムへのリンクを挿入します。 また、必要に応じて、ロッジの最後の洪水を飾ることができます。

次は、セクションの名前を持つ段落です-タグを置かないように作られています
 <br />
      
      



-同じCSSスタイルで、 .forum_message p {}



セレクターを使用してこの特定の段落をフォーマットできます。 それでは、トリミングしたフォーラムメッセージのプレースホルダーを挿入してください。 個人的には、私はそれを必要としませんでしたが、私はそれをしました-テンプレートエンジンはそれを正常に処理し、空のスペースに置き換えます。



今、最も興味深いと同時にシンプルです。 フォーラムへの1つのリクエスト、1つのMODxメソッド、1つのサイクル、 forum_last_messagesスニペットの準備できました!



 <?php
グローバル$ modx、$ vbulletin;

 $ forumlink = 'http:// URLTOYOUFORUM';
 $ forum_base =(空($ vbulletin-> config ['Database'] ['dbname']))?  'FORUMBASE':$ vbulletin-> config ['データベース'] ['dbname'];
 //ここで明確にする必要があります:ほとんどの場合、フォーラムとサイトのベースは異なるため、フォーラムベースの名前を知る必要があります 
 $ forum_prefix =(空($ vbulletin-> config ['Database'] ['tableprefix']))?  'vb_':$ vbulletin-> config ['Database'] ['tableprefix'];

 $ count =(empty($ count)||($ count <2))?  10:$カウント;  //出力するメッセージの数、デフォルトは10


 $ sql = 'トピックとしてt.title、t.lastpostid、t.lastpost、t.lastposter、t.forumid、t.replycount、t.dateline、f.titleをフォーラムとして選択
 FROM ``。$ Forum_base.'``。$ Forum_prefix.'thread` t、 ``。$ Forum_base.'``。$ Forum_prefix.'forum` f
 WHERE t.`visible` = 1
 AND t.`open` = 1
 AND f.forumid = t.forumid
およびt.forumid NOT 
 IN(
     SELECTフォーラムID
     FROM ``。$ Forum_base.'`.` '。$ Forum_prefix.'forumpermission`
 )
 ORDER BY t.lastpost DESC 
 LIMIT '。$ Count。'; ';
 $ res = $ modx-> db-> query($ sql);

 $ txt = '';

 while($ f_res = $ modx-> db-> getRow($ res、 'assoc')){
 //配列要素は明確に理解されています
 $ txt。= $ modx-> parseChunk( 'forum_last_messages'、 
    配列(
         'forumlink' => $フォーラムリンク、
         'postid' => $ f_res ['lastpostid']、                       
         'threadtitle' => $ f_res ['topic']、                         
         'replycount' => $ f_res ['replycount']、
         'lastposter' => $ f_res ['lastposter']、
         'フォーラム' => $ f_res ['フォーラム']、
         'postdate' => date( "H:i"、$ f_res ['lastpost'])//日付形式
         )、
     '[+'、
     '+]'
     );
 }

 return txt;
 ?>


コードは見苦しくてシンプルだと思う:)



シリーズハンドラーでは、最後のメッセージのテキストがスレッドテーブルに保存されていないという単純な理由で投稿テキストをトリミングしませんでした。それを取得するには、パフォーマンスに影響する投稿テーブルもプルする必要があります。



そのため、現在[!Forum_last_messages?Count = `17`!]を使用しています。サイトでは、フォーラムの最新の最新トピックのリストを取得しています。



ちなみに、フォーラムへのリクエストは、匿名の投稿についてはすべてのトピックを選択し、閉じたトピックは1つではありません。 正直なところ、これは欠陥であり、5番目のホイールでもあります。フォーラムとの合併があり、ユーザーがログインしている場合、ユーザーがアクセスできるトピックとそうでないトピックを簡単に見つけて選択できるからです。 しかし、フォーラムの個人アカウントにアクセスしてお気に入りのトピックの購読を確認する方が簡単な場合は、そのようなジェスチャーを実行する必要がありますか?



All Articles