suinさんのbulletin2。とても素性の優れたモジュールであることはパっと見でも判るのですが、実際に運用しないとバグ出しの協力も出来ないだろうと、一念発起してこのサイトのnewsと入れ替えてみました。
その際に見つけたバグについては、XUGJで報告しましたのでよろしく>suinさん
関連記事機能がとっても良い感じです。
今回の入れ替え手順をメモ代わりに書いておきます。
URI互換および、すでにnewsに対してついているコメントやイベント通知をそのまま流用するために、modules/newsをそのまま上書きして、モジュールアップデートをかける、という大技を使いました。こんなやり方でも、テンプレートやブロックはうまくいきますし、元のnewsモジュールが持っている(prefix)_storiesおよび(prefix)_topicsには影響ありません。
テーブルについては、空の(prefix)_news_stories および (prefix)_news_topics を用意してから、bulletin機能の「newsからのインポート」を利用したのですが、これが失敗でした。このインポートスクリプトは、記事番号をふり直すタイプだったので、コメントとのID不一致がおきてしまいました。
幸い、番号の抜けはそれほど多くなかったので、修正作業もそれほど大変ではなかったのですが、
今後、ある程度運用したnewsをbulletinに差し替える方には、(prefix)_news_storiesについて、(prefix)_storiesからINSERT SELECTでマニュアルインポートする方法をお勧めします。
あと、newsについていたコメントについては、以下のようなSQLを発行しないと、うまく記事につながりません。
update (prefix)_xoopscomments set com_exparams='page=article&' where com_modid=(newsのモジュール番号);
マニュアルにも書いてあるので当然ではありますが、XOOPS_ROOT_PATH/modules/news/.htaccess.rewrite は、.htaccessにリネームします。そうしないと、旧newsとURI互換になりません。
最後に、ルートコントローラbackend.phpの差し替えコードを示しておきます。
今までnewsで運用していたのなら仕方がないのですが、今後、RSSのURIを公開する際には、(bulletinの公開側)/index.php?page=rss としておいた方が良いでしょう。
XOOPS_ROOT_PATH/backend.php
<?php
define( 'BACKEND_DIRNAME' , 'news' ) ;
$_GET['page'] = 'rss' ;
require 'mainfile.php' ;
if( ! defined( 'XOOPS_TRUST_PATH' ) ) die( 'set XOOPS_TRUST_PATH in mainfile.php' ) ;
$module_handler =& xoops_gethandler( 'module' ) ;
$xoopsModule =& $module_handler->getByDirname( BACKEND_DIRNAME ) ;
$mydirname = BACKEND_DIRNAME ;
$mydirpath = XOOPS_ROOT_PATH.'/modules/'.BACKEND_DIRNAME ;
$mydirurl = XOOPS_URL.'/modules/'.$mydirname;
require $mydirpath.'/mytrustdirname.php' ; // set $mytrustdirname
if( @$_GET['mode'] == 'admin' ) {
require XOOPS_TRUST_PATH.'/modules/'.$mytrustdirname.'/admin.php' ;
} else {
require XOOPS_TRUST_PATH.'/modules/'.$mytrustdirname.'/main.php' ;
}
?>