Loading

ブログ - d3blog に人気記事一覧ブロックを

d3blog に人気記事一覧ブロックを

カテゴリ : 
要望・アイデアメモ
執筆 : 
masa 2012/4/19

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 でテンプレートをいじったり、自由にしてみよう。

  • トラックバック (0)
  • 閲覧 (14742)