いまさら聞けない? 初心者向けPlagger設定覚え書き その7

いまPla その7です。
今回はその4から進めてきた SmartFeed の話を一端切り上げてWidgetの使い方とWidget::Simpleを使った簡単なWidget pluginの作り方についてみていきたいと思います。今回のWidgetというお題はしげふみメモさんにリクエストいただきました!(おおげさ)
今回のお話は「しげふみメモ:PlaggerのCOOKPADレシピ印刷用Widget」を参考にさせていただいてます。


Widgetっていうのは抽出してきたエントリに情報を付け加えるためのアイテムです。例えばWidget::HatenaBookmarkUsersCountというWidgetを使うことでそのエントリが何人のユーザにブックマークされているかわかるようにしてくれます(ただしPlaggerが実行されたときのユーザ数になります)。このほかにもはてブに登録するためのアイコンをくっつけたり(Widget::HatenaBookmark)、Googleページランクを調べたり(Widget::Simpleのgoogle_pagerankプラグイン)することができます。

こんな風にくっつけることができます。(GIGAZINE風)


このほかにもWidgetプラグインとかWidget::Simpleのプラグイン(これはassetsの中にyamlとしてあります)とかがあります。

書き方も簡単でconfig.yaml

  - module: Widget::HatenaBookmark

  - module: Widget::Simple
    config:
      widget: google_pagerank

とかするだけです。


Widget::Simpleのプラグインは簡単に作ることができます。試しにGoogleのキャッシュへのリンクを生成するためのプラグインを作ってみました。
google_cache.yaml

link: http://www.google.com/search
query: 
  q: my $p = $args->{entry}->permalink; $p = "cache:" . $p; $p
content: Google Cache

たったこれだけです。

基本的にはどこかへのリンクを作ることになりますのでそれにエントリの情報を付け加えて適当なものにするという指定をしています。このファイルをassetsの下にある plugins/Widget-Simple/ に保存します。以下解説。

link
リンクを張る基本になるURLを書きます。ここではGoogleの検索後のURLですね。
query
linkで指定した基礎URLに追加する文字列を指定します。ただ指定するだけではなくqueryの下位に「xxx: yyy」とすることで展開されて「?xxx=yyy」となります。xxxはサーバに渡される変数名、yyyがその変数に代入されるものになります。複数ある場合には並列にいくつでもかけます。またここでPerlの書式を使って文字列をいじることができます。ここではエントリのpermalinkの前に“cache:”という文字列を追加しています。最後に使う変数を書いておきます。(ここでは$p)
append
ここでは使っていませんが、単純にlinkで指定したURLの後ろにくっつけるときに使います。ただし上の例でlinkを「http://www.google.com/search?q=cache:」としてpermalinkをつなげようとしたら失敗しました。“?x=y”のような場合はqueryを使った方が無難そうです。
content
リンクになる文字列や画像を指定します。

ここでは使いませんでしたが、“content_dynamic”というのもあります。単純にcontentで指定するのではなく、permalinkなどを使うときに用います。permalinkの場合は

[% entry.permalink %]

と指定すれば展開されてエントリのpermalinkになります。


ファイルを作るまでもないときにはconfig.yamlのなかで指定することも可能です。

  - module: Widget::Simple
    config:
      link: http://www.google.com/search
      query:
        q: my $p = $args->{entry}->permalink; $p = "cache:" . $p; $p
      content: Google Cache

先ほどのgoogle_cache.yamlの内容をWidget::Simpleのconfigにあたえてやればこれで同じように動きます。限られたサイトだけに使いたい場合やテスト時に使ってみると良いと思います。


いまPla シリーズ

//d.hatena.ne.jp/toshi123/20060912#p1" title="引用元:Muibrog">いまPla その1:基本的yamlの書き方、Filter::EntryFullTextの使い方についてです。
//d.hatena.ne.jp/toshi123/20060913#p1" title="引用元:Muibrog">いまPla その2:CustomFeed::Configの使い方についてです。これで個人ニュースサイトもばっちり?
//d.hatena.ne.jp/toshi123/20060914#p1" title="引用元:Muibrog">いまPla その3:同じサイトから2パターンの以上の領域を抽出したいときにはどうするか。こんどこそばっちり?
//d.hatena.ne.jp/toshi123/20060915#p1" title="引用元:Muibrog">いまPla その4:メールを送る以外の出力方法、2つ以上のサイトをひとまとめにする方法についてです。
//d.hatena.ne.jp/toshi123/20060916#p1" title="引用元:Muibrog">いまPla その5:ひとつのフィード・サイトから複数の出力を行う方法。 SmartFeedに関する試行錯誤(誤解していました)
//d.hatena.ne.jp/toshi123/20060919#p1" title="引用元:Muibrog">いまPla その6:SmartFeedに関する誤解と正しい解釈。config.yamlに書いた順番と実行される順番の違い。
//d.hatena.ne.jp/toshi123/20060919#p2" title="引用元:Muibrog">いまPla その7:Widgetつくっちゃえばいいじゃない。使い方と作り方。