*PHP [#c7dc8331]
まさか最初がPHPになろうとは。~
#contents

**なぜPHPか [#ae3b8078]
それは、このPukiWikiがPHPで書かれているからです。~
PukiWikiはさまざまな機能を有していますが、これらの多くはPHPで記述された機能追加ファイルによって実現されています。~
これをプラグインといいます。~
PukiWikiのインストール時にもとから用意されているプラグインにはこれらがあります。→[[プラグインマニュアル>PukiWiki/1.4/Manual/Plugin]]~
これだけでは足りず、自分独自の機能を追加したい場合、その機能を有したプラグインを作成する必要があります。~

**amazonプラグインを作りたい [#uf5114fc]
***参考ソース [#q449e64a]
[[ブラキチ]]先生に以前作っていただいたPHP~
 <?php
 // PukiWiki - Yet another WikiWikiWeb clone.
 // $Id: ruby.inc.php,v 1.6 2005/05/07 07:41:31 henoheno Exp $
 //
 // Ruby annotation plugin: Add a pronounciation into kanji-word or acronym(s)
 // See also about ruby: http://www.w3.org/TR/ruby/
 //
 // NOTE:
 //  Ruby tag works with MSIE only now,
 //  but readable for other browsers like: 'words(pronunciation)'
 
 define('PLUGIN_TARGET_USAGE', '&target(URL){link name};');
 
 function plugin_target_inline()
 {
 	if (func_num_args() != 2) return PLUGIN_TARGET_USAGE;
 
 	list($url, $body) = func_get_args();
 
 	// strip_htmltag() is just for avoiding AutoLink insertion
 	$body = strip_htmltag($body);
 
 	if ($url == '' || $body == '') return PLUGIN_TARGET_USAGE;
 
 	return '<a href="' . $url . '" target="blank">' . $body . '</a>';
 
 }
 ?>

***実現したいHTML [#y7e269fa]

-商品個別リンク

 <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=hinatamitsuru-22&o=9&p=8&l=as1&asins=4062633760&fc1=000000&IS2=1&lt1=_blank&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

 <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=hinatamitsuru-22&o=9&p=8&l=as1&asins=4061859765&fc1=000000&IS2=1&lt1=_blank&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>


→つまり商品番号のところだけ違うわけですね。
-サーチボックス小

 <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=hinatamitsuru-22&o=9&p=20&l=qs1&f=ifr" width="120" height="90" frameborder="0" scrolling="no"></iframe>

-サーチボックス大

 <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=hinatamitsuru-22&o=9&p=27&l=qs1&f=ifr" width="180" height="150" frameborder="0" scrolling="no"></iframe>

***作ってみたPHP [#l53f6ad8]

-商品個別リンク

 <?php
 // 
 //  amazonの商品個別リンク用プラグインです。
 //  2007/02/14 日向充
 
 define('PLUGIN_AMAZON_SHOUHIN_USAGE', '#amazon_shouhin(product_id)');
 
 //function plugin_amazon_shouhin_inline()
 function plugin_amazon_shouhin_convert()
 {
 	if (func_num_args() != 1) return PLUGIN_AMAZON_SHOUHIN_USAGE;
 
 	list($product_id) = func_get_args();
 
 	if ($product_id == '') return PLUGIN_AMAZON_SHOUHIN_USAGE;
 
 	return '<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=hinatamitsuru-22&o=9&p=8&l=as1&asins=' .
 	 $product_id . '&fc1=000000&IS2=1&lt1=_blank&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr"' .
 	' style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>';
 }
 ?>

|できたー!→|#amazon_shouhin(4062633760)|#amazon_shouhin(4061859765)|#amazon_shouhin(4163238107)|#amazon_shouhin(4061851004)|#amazon_shouhin(4087472159)|#amazon_shouhin(4062748355)|#amazon_shouhin(4575508462)|#amazon_shouhin(4396330472)|#amazon_shouhin(4061859765)|#amazon_shouhin(4924978094)|#amazon_shouhin(4087475468)|#amazon_shouhin(4087742946)|#amazon_shouhin(4061814710)|
苦労した点~
+function plugin_amazon_shouhin_inline()ではなく、function plugin_amazon_shouhin_convert()を使うんですね。
+UTF8,LFはだめで、SHIFT-JIS,CR+LFなんですね。
 →"headers already sent"などのエラーが出る。(ググって解決)

分かったこと~
+"."は連結なんですね。
+func_num_args()はCのargcみたいに、プログラム名を含む訳ではないんですね。(引数が1つなら1)
+list($product_id) = func_get_args();で引数を変数に格納。
------
-[[プログラミング]]
-[[PHP]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS