27 Aug 2006 14:20
SB 「ちょっと一言」を全ページで表示する
現在このサイトは移転のため更新停止しています。
新しい記事はVERSIONFIVEにて更新されていきますのでそちらをご利用下さい。
また一部のエントリは新しいサイトに一部修正加筆されて再掲されています。[再掲されているエントリ一覧]
実はSerene Bach系の話題ははじめてのエントリだったりします。笑
自分はperlは全然わかりませんが、これからプラグインの妄想とかを書いていきたいと思います。Serene BachをCMS(Contents Management System)として使うための話題が中心になる予定です。C言語なら分かるので、ノリで無理矢理ファイルをいじったりしてみてます。ヲイ
ちなみにプラグインの希望は宵闇書房さまも書いていらっしゃいますので参考にどうぞ。
さて、Serene Bachに付属しているプラグイン「ちょっと一言(Topmemo)」はトップページにのみ表示される独自ブロックを追加し、一言メモを記述できるプラグインです。
これをすべてのページで表示できるようにすれば、テンプレートを逐一編集せずにブラウザから編集・表示できるパーツを追加できるようになるので、よりCMSっぽくなるのではないか、と。
で、続きにアイデアを載せておきます。
(2006/9/2追記)兼乃さんのご指摘により一部改正しました。
まぁ、あってる保証はございませんが。爆
- 処理をトップページ以外で行なうようにする部分をカット
- トップページのみの再構築処理を行なわないようにし、全再構築させる処理通知を表示
- 「ちょっと一言」と共存させる(プラグインレベル、モジュールレベル)
- 必要に応じてテンプレートを修正
ぶっちゃけ、1つ目だけやれば全ページで表示可能です。(編集後、再構築処理は必要です。)
てことで、プラグインレベルで共存(同時には使用できないが、双方をプラグインとして登録可能)させる方法を以下に示します。
作業は自己責任で行なってください。
準備
- pluginフォルダのMemo.pmをMemo2.pmとして別名保存
- plugin/resource/jaフォルダのmemo.html、memo.txtをmemo2.html、memo2.txtとして別名保存
1. モジュール名の変更
Memo2.pmの7行目
package sb::Plugin::Memo;
とあるので、これを以下のように変更する。
package sb::Plugin::Memo2;
同様に、33,38,41,66行目にある「Memo」の部分を「Memo2」に変更する。
2. リソースファイル参照の変更
Memo2.pmの26行目
'file' => 'memo.txt',
とあるので、これを以下のように変更する。
'file' => 'memo2.txt',
同様に84行目
sub TEMPLATE (){ 'memo.html' };
とあるので、これを以下のように変更する。
sub TEMPLATE (){ 'memo2.html' };
3. 内部処理の変更
Memo2.pmの51行目
return(0) if ($var{'mode'} ne 'page' or $var{'page'} !=0 or !$data);
とあるので、これを以下のように変更する。
return(0) if (!$data);
同様に114行目
$builder->build_top_page;
とあるので、これを以下のようにコメントアウトする。(コメントアウトしなくても消しても可)
# $builder->build_top_page;
4. 処理通知の変更
Memo2.pmの115行目
return $self->_open_memo('message'=>sb::Language->get->string('parts_editcomp'));
とあるので、これを以下のように変更する。
return $self->_open_memo('message'=>sb::Language->get->string('parts_editcomp') . sb::Language->get->string('parts_needmake') . sprintf(sb::Language->get->string('parts_link_bld'),$self->get_script_path));
5. memo2.txtの修正
memo2.txtをテキストエディタなどで開き、「name ちょっと一言」を「name ちょっと一言2」に変更する。
6. memo2.htmlの修正
memo2.htmlをテキストエディタなどで開き、8行目~10行目
<p class="note">トップページにのみ表示される<q><code><!-- BEGIN topmemo --></code></q>~<q><code><!-- END topmemo --></code></q>という独自ブロックを追加します。</p>
<p class="note">独自ブロック<q><code>topmemo</code></q>内では、メモを表示するための独自タグ<q><code>{sb_memo}</code></q>、メモの更新日時を表示するための独自タグ<q><code>{sb_memo_time}</code></q>が利用できます。</p>
<p class="note">「保存する」を実行した際にはトップページの再構築操作も行われます。</p>
とあるので、これを以下のように変更する。
<p class="note"><q><code><!-- BEGIN topmemo --></code></q>~<q><code><!-- END topmemo --></code></q>という独自ブロックを追加します。これはすべてのページで利用可能です。</p>
<p class="note">独自ブロック<q><code>topmemo</code></q>内では、メモを表示するための独自タグ<q><code>{sb_memo}</code></q>、メモの更新日時を表示するための独自タグ<q><code>{sb_memo_time}</code></q>が利用できます。</p>
<p class="note">「保存する」を実行した際に再構築操作は行われません。</p>
こんな感じでしょうか。
導入方法は他のプラグインと同じです。ただし、「ちょっと一言」と同時に登録は可能ですが、同時に利用することはできません。(独自ブロック名が被るため)また、編集後には全再構築作業が必要です。
つまり、ライブラリを共有した複数のSerene Bachを導入している方には、SB単位で使い分けることが可能となりますね。
間違っていたらどうぞコメントよろしくお願いします。
例として、一言メモをすべてのページで表示するプラグイン「ちょっと一言2」をノリでファイルを編集して作ってみました。mobileのThumbnailsをコレにしてみました。
7. ちょっと一言と共存させるには
(2006/9/2追記しました)
以下の変更を行うと「ちょっと一言」と共存が可能になるそうです。(sideblue weblogさまの兼乃さんにアドバイスをいただきました。)
Memo2.pmの7行目
'field' => 'topmemo',
とあるので、これを以下のように変更する。
'field' => 'topmemo2',
この作業により、以下の独自ブロックにこの「ちょっと一言2」が適用されます。
<!-- BEGIN topmemo2 --> ~ <!-- END topmemo2 -->
これでトップページのみ表示される「ちょっと一言」と、すべてのページで表示される「ちょっと一言2」が1つのSereneBachで併用可能となります。
sb,SereneBach | - | -