カスタムモジュールのRSSフィードを出力する

当サイトではなく *ListFreakサイトの話です。このサイトの中心となるモジュールは昔に自作したもので、XCL2.2に乗せ替えても無事に動いてくれましたが、RSSフィードが出力されません。/backend.phpを見ても例によってデリゲートに阻まれて何がどうなっているやら……でしたが、なんとなく出力可能になりました。
<?php

if (!defined('XOOPS_ROOT_PATH')) exit();

class 
Listfreak_BackendPreload extends XCube_ActionFilter
{
    function preBlockFilter() {
        $this->mRoot->mDelegateManager->add('Legacy_BackendAction.GetRSSItems','Listfreak_BackendPreload::getRSS');
    }

    function getRSS(&$eventArgs) {

        require_once XOOPS_ROOT_PATH.'/modules/listfreak/header.php';
        $root XCube_Root::getSingleton();
        $db $root->mController->mDB;
        $tf $root->mTextFilter;

        $sql 'SELECT ...';
        /* 最新の公開リストを10件取得 */
        if ( !$ret $db->query($sql,10,0) ) {
            echo $db->error();
            exit();
        }

        while ( $row $db->fetchArray($ret) ) {
            $eventArgs = array(
            'author' => XoopsUser::getUnameFromId($row['uid']),
            'title' => htmlspecialchars($row['title'], ENT_QUOTES),
            'link' => XOOPS_URL.'/list/'.$row['list_id'],
            'guid' => XOOPS_URL.'/list/'.$row['list_id'],
            'pubdate' => $row['created'],
            // $text, $html, $smiley, $xcode, $image, $br, $x2comat
            'description' => $tf->toShowTarea($row['foreword'], 10001false),
            'category' => ''
            );
        }
    }
}

各モジュールから'Legacy_BackendAction.GetRSSItems'めがけてデリゲートを追加していくと、まとめてpubdateで新着順にソートしてフィードを生成してくれます。サイトのロゴファイルがハードコードになっていて閉口しましたが、容易には変えられそうもないのでソースコードに合わせてロゴファイルを用意しました。

友達に伝える
作成: 2013/11/11 by:koji
更新: 2013/11/11 by:koji


XOOPSからAmazon SESを使う

Tech

$root = XCube_Root::getSingleton(); でよいのか

新規ユーザー登録(無料)

  • メールニュース[週刊起-動線]の購読
  • コメントなどの投稿
  • ココロミの利用
  • 一部コンテンツの購読

ログイン

コメント

タグ(キーワード)