PHPド素人がYahoo!検索プラグインを開発〜リリースするまでのまとめ
- 本日Yahoo検索プラグインが公開されました。
Yahooプラグインとは?
一言で言えばYahooの検索結果に独自情報を付加できます。
プラグインを入れた人以外はそのままの検索結果が表示されますが、便利なので
今回の公開を機にユーザーも対応サイトも徐々に増えていくと思います。
早速簡単なプラグインを開発して、公開するところまでやってみました。
意外と簡単
私はperlプログラマですがphpは名前を聞いたことがあるだけで今回はじめて触りました。
そんな私でも2-30分でプラグインを開発して公開することができたので、
この喜びを一人でも多くの人に体験してもらいたいと思っています。
用意するもの
- Yahooアカウント
今回はエディタすら使いません!!
プラグイン作成に必要と思われるスキル
- HTMLの基本的な知識
- いずれかのプログラミング言語でif文を書けるレベル
- 自分でサイトやブログを作成した経験があれば尚良し
このブログを見ているなら、多くの人が上記にあてはまると思います。
せっかくなので是非チャレンジしてみてください!!
下準備
- Yahooアカウントを用意します。
- 自分が所有するサイトのプラグインを作る場合はサイトエクスプローラーで認証しておきます。
- アイコンがあったほうがいいので作成するサイトの16*16 85*65のアイコンを準備します。
http://developer.yahoo.co.jp/other/searchplugin/
に詳細情報があります。ブックマークしておきましょう。
ここまでについては解説しません。
Yahoo!検索プラグイン 開発ツール 開発ガイド
http://developer.search.yahoo.co.jp/
にて作業をすすめます。ここでYahooIDが必要です。
ソース全文
public static function getOutput() { $linkurl = Data::get('yahoo:index/dc:identifier'); $itemkey = 0; $match; if(preg_match('/luxury-la.com\/\d+\/\d+\/(.+?)\.html/', $linkurl, $match)){ $itemkey = $match[1]; } $ret = array(); /* If you leave these blank, the default title and summary will be shown */ $ret['title'] = Data::get('yahoo:index/rel:Posting/dc:title'); $ret['summary'] = Data::get('yahoo:index/rel:Posting/dc:description'); /* Now you fill in the rest. Use Data::get and Data::xpath to get data */ // Image if($itemkey){ $ret['image']['src'] = 'http://a248.e.akamai.net/f/248/37952/1d/image.shopping.yahoo.co.jp/i/g/' . $itemkey; }else{ $ret['image']['src'] = 'SM_VAL_DEFAULT'; } $ret['image']['alt'] = SM_VAL_DEFAULT; $ret['image']['title'] = SM_VAL_DEFAULT; // Deep links - up to 4 $ret['links'][0]['text'] = SM_VAL_DEFAULT; $ret['links'][0]['href'] = SM_VAL_DEFAULT; $ret['links'][1]['text'] = SM_VAL_DEFAULT; $ret['links'][1]['href'] = SM_VAL_DEFAULT; $ret['links'][2]['text'] = SM_VAL_DEFAULT; $ret['links'][2]['href'] = SM_VAL_DEFAULT; // Key Value pairs - up to 4 $ret['dict'][0]['key'] = SM_VAL_DEFAULT; $ret['dict'][0]['value'] = SM_VAL_DEFAULT; $ret['dict'][1]['key'] = SM_VAL_DEFAULT; $ret['dict'][1]['value'] = SM_VAL_DEFAULT; $ret['dict'][2]['key'] = SM_VAL_DEFAULT; $ret['dict'][2]['value'] = SM_VAL_DEFAULT; $ret['dict'][3]['key'] = SM_VAL_DEFAULT; $ret['dict'][3]['value'] = SM_VAL_DEFAULT; /* This is for infobar apps You can put a subset of HTML in here See the docs for more details */ $ret['infobar']['blob'] = SM_VAL_DEFAULT; return $ret; }
ソースの解説
$linkurl = Data::get('yahoo:index/dc:identifier');
でリンク先のURLを取得しています。
if(preg_match('/luxury-la.com\/\d+\/\d+\/(.+?)\.html/', $linkurl, $match)){ $itemkey = $match[1]; }
でURLからアイテムのキーを取得しています。
if($itemkey){ $ret['image']['src'] = 'http://a248.e.akamai.net/f/248/37952/1d/image.shopping.yahoo.co.jp/i/g/' . $itemkey; }
でアイテムのキーから画像のURLを作って渡します。
独自のプラグインを作るヒント
$ret['links'][0]['text'] = SM_VAL_DEFAULT; $ret['links'][0]['href'] = SM_VAL_DEFAULT;
をいじると関連リンクを4件まで設定できます。
トップページへのリンクを入れてもいいでしょうし、
少々プログラムの知識は必要ですが、カテゴリページ等にリンクすることも可能です。
$ret['dict'][0]['key'] = SM_VAL_DEFAULT; $ret['dict'][0]['value'] = SM_VAL_DEFAULT;
をいじるとキーバリュー形式で任意の値を4件まで表示できます。
商品ページであれば価格を入れる、とか
ブックマークされた数を入れる、とかあとはあなたのアイデア次第です。