サンプルプラグインを手入力した(RandomEntry)
MT4LP5の連動書籍『Movable Type プロフェッショナル・スタイル[MT4.1対応]』の、TrackB Session3の[4]にある、「プラグインを開発しよう(ページ223~226)」のページにある、RandomEntryプラグインのコードを入力してみた。
どっかにコードが落ちていても、コピペしてるとあんまり意味がないとも思った...。このコードはひとつひとつ打って噛み締める。なので探さずに手打ち。
MT4LP5時の講師と、Mプ本の同セクションの著者はCHEEBOWさん。イケメンです(とtwitterで発言したら「なんもでませんよ」と返された)。
参考。環境は
- CPU:Core2Duo 2.66GHz(FSB:1333MHz)
- MEM:2GB
- OS:Windows Vista(Home Premium SP1)。
- ローカル環境:XAMPP Version 1.6.3a
※ 数ヶ月前よりXAMPP環境を導入している。当時はPentium!!!の700MHz、メモリ384MBという、非力、いやもはやアンティークなマシンで作業やってて、再構築時にタバコが何本も吸えた。我慢ならず、2007年末マシンを買い替え。今はエントリ一個の再構築くらいすぐに終わる。遅いマシンは、買い換えたほうが、体にも精神面でも健康的。作業効率もぐっとアップする。
あと、レンタルサーバーでこういう実験しちゃ駄目。
動作を確認したコード
以下コードに「randomentry.pl」というファイル名をつけてプラグインのフォルダへ放り込めばOK。なお、returnの直後に、謎のダブルクォーテーションがついてたので、外した(2箇所) (2008/04/29 修正:シングルクォーテーション2個かなこれは)。ほか、ちょこっとだけ、オリジナルと異なる箇所がある。
package MT::Plugin::RandomEntry;
use strict;
use base qw(MT::Plugin);
require MT::Entry;
our $VERSION = '0.1';
my $plugin = new MT::Plugin::RandomEntry({
id => 'RandomEntry',
key => 'random_entry',
name => 'RandomEntry',
version => $VERSION,
description => '<MT_TRANS phrase=\'This Is RandomEntry Sample(MT4LP5 Book)\'>',
});
MT->add_plugin($plugin);
sub init_registry
{
my $plugin = shift;
$plugin->registry({
tags => {
block => {
'RandomEntry' => \&_hdlr_random_entry,
},
},
});
}
sub _hdlr_random_entry {
my ($ctx, $args) = @_;
my $blog_id = $ctx->stash('blog_id');
my $count = MT::Entry->count({blog_id=>$blog_id}) or return '';
my $idx =int(rand($count));
my $terms = {blog_id =>$blog_id,status=>MT::Entry::RELEASE};
my $args={offset=>$idx,limit=>1};
my $entry =MT::Entry->load($terms,$args) or return '';
local $ctx->{__stash}{entry} =$entry;
local $ctx->{current_timestamp} =$entry->created_on;
local $ctx->{modification_timestamp} =$entry->modified_on;
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
defined(my $out = $builder->build($ctx,$tokens)) || return $ctx->error($ctx->errstr);
return $out;
}
1;
使い方
たとえば、以下のようにする。
<MTRandomEntry>
<h3><MTEntryTitle></h3>
<h4><MTEntryDate></h4>
<MTEntryBody>
<MTEntryMore>
</MTRandomEntry>
機能
公開されているエントリをひとつ、ランダムにピックアップする。
このあと
これ、いじり勉強ベース。パーラー見習い。
- カテゴリ:215プラグイン関係
トラックバック(0)
このブログ記事を参照しているブログ一覧: サンプルプラグインを手入力した(RandomEntry)
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.5)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.4)
- memo:perlでプラグイン Image::ExifとImage::Info
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.3)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.2)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(GPS Ready)
- MT4:エントリのURLをQRコードで自動生成する
- MT4.2:QRコード画像を生成するプラグイン(改)
- 嵌りメモ(perlのxampp環境でのファイル吐き出し実験)
- MT4.2:QRコード画像を生成するプラグイン
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)
- 管理画面を拡張する(メニューとメソッド追加)
- MT4.1:追加したファンクションタグのみへモデファイア追加
- MT4.1:エントリの既存DBへアクセスしてデータ取得
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)開発の話
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)配布
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン(改)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(プラグイン設定編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(ブログ毎編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(カテゴリ編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(エントリ編)
- MT4.1:カテゴリの並べ替え(オリジナルプラグイン+ハッシュ変数)
- サンプルプラグインを手入力した(AddField)
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン
- サンプルプラグインを手入力した(RandomEntry)
- 最小単位のプラグインを生成するサンプル(ファンクション、ブロック、モデファイア、コールバック)
コメントする