ブログ - d3blog に人気記事一覧ブロックを
d3blog はとても使いやすいブログモジュールだ。
このサイト(つまりこの記事)も d3blog で構成されている。
でもなぜだか d3blog には人気記事一覧ブロックというようなものが存在しない。
何かやり方があるのだろうが、いくら調べても分からなかった。
仕方がないので、ブロックを作って追加してみることにした。
ずうっと欲しいと思っていたのだが、ようやく重い腰を起こすことに...(いつもながらに重すぎる腰だ)
まずはブロックを作る。
最新記事一覧(latest_entries)が機能的にとても近いので、これをコピーして作る。
(ブロックのコードは xoops_trust_path/modules/d3blog/blocks/ にある)
変更点はたったの4箇所。
最初の2箇所は関数名だ。
b_d3blog_latest_entries_show と b_d3blog_latest_entries_edit をそれぞれ
b_d3blog_popular_entries_show と b_d3blog_popular_entries_edit に書き換えるのだ。
次に利用するテンプレート名を変更する。
_block_latest_entries.html を _block_popular_entries.html に書き換える。
そして、最後の1箇所はソート条件。
published を counter に書き換える。
これでコードの書き換えは完了だ。
...
function b_d3blog_popular_entries_show($options) {
...
$opt_template = empty( $options[10] ) ? 'db:'.$mydirname.'_block_popular_entries.html' : trim( $options[10] );
...
$criteria->setSort('counter');
...
function b_d3blog_popular_entries_edit($options) {
...
同様にテンプレートを作る。
テンプレートは単純に block_popular_entries.html を block_popular_entries.html としてコピーする。
(テンプレートは xoops_trust_path/modules/d3blog/templates/ にある)
これでOK
次にブロックを登録する。
xoops_version.php を開いて、これもコピー&ペースト。
$m++;
$modversion['blocks'][$m]['file'] = 'blocks.php';
$modversion['blocks'][$m]['name'] = constant($constpref.'_POPULAR_ENTRIES');
$modversion['blocks'][$m]['description'] = constant($constpref.'_POPULAR_ENTRIES_DESC');
$modversion['blocks'][$m]['show_func'] = 'b_d3blog_popular_entries_show';
$modversion['blocks'][$m]['edit_func'] = 'b_d3blog_popular_entries_edit';
$modversion['blocks'][$m]['template'] = '';
$modversion['blocks'][$m]['options'] = $mydirname.'|5|25|Y/m/d|1|0|0|0|||';
$modversion['blocks'][$m]['can_clone'] = true ;
次に言語定数を追加する。
modinfo.php を開いて、これまたコピー&ペーストで追加する。
define ( $constpref.'_POPULAR_ENTRIES','人気のエントリ');
define ( $constpref.'_POPULAR_ENTRIES_DESC','人気エントリの一覧');
ここまで準備できたら、モジュールアップデートを行う。
そうすると、ブロックインストールできるようになるので、インストールして使う。
オプションの設定は最新エントリの一覧と同じだ。
たったの10分でできてしまった。
ここまで簡単にできるとは思っていなかったので、ありがたい。
とっととやれば良かった...
あとは altsys でテンプレートをいじったり、自由にしてみよう。