pico に amazon.co.jp からの書影イメージを表示

旧サイトではmylinksモジュールをカスタマイズしてミニ書評モジュールにしていました。具体的には、リンクURLに含まれるASINを抽出してamazonに問合せをして書影を得ていました。mylinks モジュールのコンテンツをpicoに移行するにあたって、同等の機能をpicoのソースコードを修正することなく実現するために、Smartyプラグインを作りました。その結果が右に表示されている、書影+題名のブロックです。

下のようなファイルを作って XOOPS_TRUST_PATH/modules/pico/smarty_plugin に置きます。



<?php

require_once XOOPS_TRUST_PATH.'/.../apaapi.php';

function 
smarty_function_archit_amazon$params , &$smarty )
{
  
$amazon = new Amazon();

  
// $params['function']で分岐
  // ItemLookup
  
$options = array(
  
'IdType' => 'ASIN',
  
'ResponseGroup' => 'Medium' );
  
$amz_ret $amazon->ItemLookup($params['asin'], $options);
  
$amz_item =& $amz_ret['Item'][0];

  
// ai stands for Amazon Item. put in an array to avoid variant name contamination
  
$smarty->assign('ai', array(
  
'Url' =>$amz_item['DetailPageURL'],
  
'MImgU'=>$amz_item['MediumImage']['URL'],
  
'MImgH'=>$amz_item['MediumImage']['Height']['_content'],
  
'MImgW'=>$amz_item['MediumImage']['Width']['_content'],
  
'Title'=>$amz_item['ItemAttributes']['Title']
  ));

  
// ItemSearch

}
?>

Amazon()は、PEARのService_Amazonクラスのオブジェクトです。上記のように書くだけで、テンプレートのほうからは下記のように呼び出すことができます(smartyの命令として解釈されることを防ぐために、<>を全角にしています)。Smartyプラグインを使うときには、編集画面の「本文フィルター」で「Smarty(XoopsTpl)」にチェックを入れるのをお忘れなく。

<{archit_amazon asin="4534045468"}>
移行にあたっては、上記のプラグインと下記の表示コードをまとめて全ての(amazonにリンクしている)文書の冒頭に入れました。
<div class="amz_midimglink" style="width:<{$ai.MImgW}>px;">
  <a href="<{$ai.Url}>">
    <img src="<{$ai.MImgU}>" style="height:<{$ai.MImgH}>px; width:<{$ai.MImgW}>px;" alt="<{$ai.Title}>" /><br />
    <{$ai.Title}>
  </a>
</div>

これらのコードをまとめてテンプレートファイルとすれば、記事に次のような1行を差し込むだけで、そこに書影が現れます。

<{include file="db:`$mydirname`_inc_amazon.html" asin='4309205836'}>

友達に伝える
作成: 2013/9/12 by:webmaster
更新: 2013/10/9 by:koji


ユーザーの新規登録画面に初期値をセットする

Tech

サイト全体でタグを管理するため、pico のタグを letag でも管理する

新規ユーザー登録(無料)

  • メールニュース[週刊起-動線]の購読
  • コメントなどの投稿
  • ココロミの利用
  • 一部コンテンツの購読

ログイン

コメント

タグ(キーワード)