Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2005-04-30 02:27:08

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

作りかけなんですけど、こちらの藤咲さんの希望に合うかもしれないんで上げておきます。
AmazonのWebサービス利用のプラグインです。ウチのClipやアイテムページの右サイドで使ってるやつです。参考にドウゾ。(ただし私はAWSの4.0で作ってるので、ネケトさんのNP_Amazonとは取得処理方法が色々違います。)

:!: 本当に作りかけなので、ソースに謎のfunctionが散乱してますが気にしないでください。
それから、藤咲さんのような「書庫サイト」向けです。たまにリンク貼るだけのサイトにはあまり向いてません(ただウチのアイテムページみたいに広告表示として使うのはアリ)。
あと、キャッシュはXMLで保存します。でもってそのファイル名はかなり長くなるので、
ながーいファイル名が使えないサーバーではアウトっす。(あとで何とかしようと思いつつそのまま・・・)
作りかけのまま数ヶ月放置してたので、説明忘れてることがあったらごめんなさい。


[size=150:238j4jom]このプラグインの説明

とりあえず、今使える部分(というか実験済みの部分)だけ説明します。
1. blog表示(うちのClipみたいな)の場合、1ページごとまとめてAmazonからデータを取得し表示します。Clipで言うと、10アイテム分(約10商品)一気に取得します。(NP_Amazonは1商品ごと)
なお、Amazonには1度に問い合わせできるのは10商品まで、かつ1秒間に1回より多く問い合わせをしてはいけない規約がありますので、1ページ内に10商品以上ある場合はデータ取得時その分の時間(1秒 * X)がかかります
で、一応NP_Amazonのように1アイテムごとも可能なようにはしてありますが、これはメインではないです。この用途の場合はNP_Amazonの方がいろいろできてオススメ。

2. ブラウズノードまたはキーワード検索の結果を表示できます(うちのアイテムページの右下。「Web開発」のブラウズノードは515206)。ただしこちらは1度に表示できるのは10件までです。(この場合のページ分割や10件以上表示の仕組みはまだ作ってないです。)


[size=150:238j4jom]使い方

1. 解凍したら、全てのファイルをプラグインディレクトリにアップロードしてください。
なお全てのファイルの文字コードはNucleusの設定にかかわらず変更しないでください。


2. このプラグインはmediaディレクトリにawsディレクトリを作成します。
自動で作れない環境の人はあらかじめ作っておいてください。

3. インストールしたらまず、プラグインオプションを設定して下さい。
   Amazon Subscription ID
    →トークンkeyを入力して下さい(必須)
   Amazon Associates ID
    →アソシエイトID(持っている場合)
   "No Image" Image -can be blank-
    →画像が存在しない場合の代替画像を用意している場合はここにそのURLを記入してください。
     s, m, l の3つあります。これらを記入しない場合はAmazonのno-image.gifを使用します。
   [all or some blogs mode] Category Name Format
    →blog表示で、複数blogモードの場合のカテゴリー名表示形式
   Show in quick menu
    →クイックメニューに管理画面(テンプレートを作成する画面)へのリンクを表示するか
   Delete tables on uninstall?
    →アンインストールの際、AWS独自のテーブルを消去するか

4. 続いて、左メニュー(クイックメニュー)のプラグインのところの「AWS」をクリックして管理画面に入って下さい。ここで商品表示のテンプレートを作成します。

【ヘッダー】と【フッター】、【関連商品ヘッダー】と【関連商品フッター】内ではテンプレート変数は使えません。

【アイテム】で使えるテンプレート変数
<%productgroup%>
   BookとかMusicとか(この辺参照)
<%producturl%>
   商品ページのURL
<%imageurl%>
   画像URL
<%imagesize%>
   画像のwidthとheight。
   height="128" width="130"  のように出力されます。
<%title%>
   商品タイトル
<%shorttitle%>
   商品タイトルが長い場合に省略表示(○○○...)します。
   <%shorttitle(20)%>のように文字数指定可能。指定しない場合は30byteで切り詰めます。
<%label_creator%>
   商品の種類に応じて【Creatorラベル】で設定した文字列が出力されます。
<%creator%>
   本なら著者、音楽ならアーティスト名。エレクトロニクスだと確かブランド名。
   なお、本などで○○著、△△訳、のように役割が別で
   複数いる場合は○○(著), △△(訳)のように表示されます。
<%creatorlite%>
   例えば本などで○○著、△△訳、のような場合、著者の方の名前だけ表示します。
   ※著者が複数いる場合は全部出る。
<%label_manufacturer%>
   商品の種類に応じて【Manufacturerラベル】で設定した文字列が出力されます。 
<%manufacturer%>
   出版社とかレーベルとかスタジオとかの名前
<%releasedate%>
   商品のリリース日
<%formattedprice%>
   ¥3,000 とか
<%availability%>
   「通常24時間以内に発送」などの情報
<%review%>
   Amazon.co.jpのレビューが存在する場合、【編集者レビュー】で設定した内容を挿入。
   存在しない場合は何も出力しません
<%similarproducts%>
   関連商品がある場合、【関連商品ヘッダー】【関連商品アイテム】【関連商品フッター】
   で設定した内容を挿入。存在しない場合は何も出力しません

<%formattedprice%>または<%availability%>をテンプレートに使用した場合、Amazonの規約によりその直後に改行 + 「(2005年4月29日 23:40時点の情報 Amazon.co.jpで詳細を見る)」という文字列を強制挿入しますのでご了承ください。<%availability%>がある場合は<%availability%>の後に、<%formattedprice%>のみの場合は<%formattedprice%>のあとに付けます。

【編集者レビュー】で使えるテンプレート変数
【アイテム】で使えるテンプレート変数全てと以下のものが使えます。
<%reviewsource%>
   「Amazon.co.jp 商品紹介」とかレビュー元
<%reviewcontent%>
   レビュー内容(300文字まで)

【関連商品アイテム】で使えるテンプレート変数
<%producturl%>
  関連商品の商品ページURL
<%title%>
  関連商品タイトル
<%imageurl%>
  関連商品画像URL
<%onload%>
  関連商品の画像URLは推測で出力するので、もし画像がそのURLに存在しない場合
  違うURLで試すスクリプトを onload="xxx" の形で出力
<%image%>
  <img src="[imageurl]" alt="[title]" [onload] /> とimg要素ごと出力

その他
・ 【各データが存在しなかった時】
   例えばテンプレートには<%creator%>と記述しているが、その商品にcreatorデータが存在しなかった場合に、代わりに出力する文字列。空欄可。
・ 【~ラベル】
   アイテムテンプレート内の<%label_creator%>, <%label_manufacturer%>に置き換わる文字列です。
   参考までに私の【Creatorラベル】の設定を。
     Default ・・・ Brand
     Book ・・・ Author
     Music ・・・ Artist
     DVD/Video ・・・ Actor (Creatorには監督名じゃなくて、主演俳優の名前が来るみたいです)
   キッチンとかソフトとかはCreatorやManufacturerとして何が来るのか
   データ取得してみないと正直わかりません。   

------------------------------------

5. 次にテンプレート又はスキンにプラグイン変数を記述します。(NP_Amazon的な使い方をする場合はスキンやテンプレートへの記述がなくてもOKです)

テンプレート記述方法(書庫サイト向け使い方)
※下の「スキン記述方法」の1と、2-1の方法を利用した時のみ有効になる記述です。
ShowBlogs等NP_AWS以外からこのテンプレートを呼び出したときは以下の記述は無視されます

「アイテムの本体」の任意のところに <%AWS(AWSのテンプレート名)%>
と書いておくと、投稿したアイテムに <!-- ASIN[12345678] -->というコメントが書かれていた場合(コレについては後で説明します)、その部分にAWSのテンプレートが展開されます。


スキン記述方法
1. アイテムスキンのみの書き方
<%AWS(Nucleusのテンプレート名)%>
と書いておくと、Nucleusのテンプレートに<%AWS(AWSのテンプレート名)%>が記述されていて、かつアイテムに <!-- ASIN[12345678] -->というコメントが書かれていた場合(コレについては後で説明します)、この部分にAWSのテンプレートが展開されます。

2. インデックススキンなど(アイテムスキンでも可能)
2-1. ブログ表示
<%AWS(blog,[ブログモード],[テンプレート],[表示数],[カテゴリーモード],[ページスイッチのタイプ],[並び順])%>
例)<%AWS(blog,@,default,5,,1)%>

ブログモード ・・・ 必須。「all」(全blogのアイテムを表示)、「@」(カレントブログのアイテムを表示)、
            「2」「1/3/4」(前者だとblogidが2のブログ、後者だとIDが1または3または4のブログの
            アイテムを表示)
テンプレート ・・・ 必須。Nucleusのテンプレートを呼び出す場合はそのままテンプレート名。
            AWSのテンプレートを直接呼び出す場合は「テンプレート名@aws
            のように、テンプレート名のうしろに@awsを付けて記述してください。
表示数 ・・・ 1ページあたりのアイテム表示数。デフォルトは10。
         ただしアーカイブスキンでのデフォルトは1ヶ月分です。
カテゴリーモード ・・・ カテゴリーの選択状態関係なく、「all」(全てのカテゴリーのアイテムを表示)
              「2」「1/3/4」(前者だとcatidが2のカテゴリー、後者だとIDが1または3または4の
              カテゴリーのアイテムを表示)
              「sub/5/7」(サブカテゴリーIDが5または7のアイテムを表示)
ページスイッチのタイプ ・・・ 「0」(非表示)、「1」(PrevとNextのみ)、「2」(phpBB風)。デフォルトは「2」。
並び順 ・・・ 「DESC」(降順)、「ASC」(昇順)。デフォルトはDESC。

2-2. ASIN指定表示
<%AWS(asin,[ASIN],[AWSのテンプレート名],[画像サイズ])%>
頭の'asin'とASINナンバーが必須。ASINは複数記述可能。スラッシュで区切って記述して下さい(ただし10個まで。10を超える場合は<%AWS(...)%><%AWS(...)%>・・・と分けて書いて下さい)。書いた順に表示します。テンプレートはAWSのテンプレートです(この場合2-1と違って@awsは付けない)。テンプレートを指定しなかった場合、管理画面でデフォルトに指定したテンプレートが使われます。
画像サイズは書かなければAWSテンプレートで指定してあるサイズが使われます。一時的に変更したい場合だけ「s,m,l」のうちいずれかを記述してください。

2-3. ブラウズノード、キーワード検索結果表示
<%AWS([タイプ],[ブラウズノードまたはキーワード],[サーチインデックス],[AWSのテンプレート名],[画像サイズ],[表示数])%>
例)<%AWS(browsenode,515206,Books,simple,,4)%>

タイプ ・・・ 必須。「browsenode」または「keyword」
ブラウズノードまたはキーワード ・・・ 必須。ブラウズノードの場合は1つだけ。
  キーワードの場合はスペースで区切って複数記述可能
  (この場合Amazonの仕様上AND検索になります)。
  ブラウズノードの値についてはaws/browsnode.inc.phpにある程度書かれていますので
  参考にしてください。
サーチインデックス ・・・ 必須。'Blended', 'Books', 'Classical', 'DVD', 'ForeignBooks',
   'Electronics', 'Kitchen', 'Music', 'MusicTracks', 'Software', 'Toys', 'VHS', 'Video',
   'VideoGames'  のいずれかを記述してください。コレがないとエラーが帰ってくるので(^^;
   なお、Blended(全てのジャンル)はキーワード検索のみ指定可能なようです。
AWSのテンプレート名 ・・・ AWSの管理画面で作成したテンプレート名を記述。指定しない場合は
   管理画面でデフォルトに指定したテンプレートが使われます。
画像サイズ ・・・ 一時的に画像サイズを変更したい場合は「s,m,l」のうちいずれかを記述
表示数 ・・・ デフォルトは10です。指定する場合は10以内にしてください。10を超える場合は<%AWS(...)%><%AWS(...)%>・・・と分けて書いて下さい。

------------------------------------

6. 最後にアイテム投稿時に以下を記述。

投稿アイテム記述方法
1. 書庫サイト的使い方をする場合(blog表示とか)
アイテムの本文に
<!--ASIN[B0002HTZJI]-->
のようにHTMLのコメントの形で記述してください(コメント内は改行しないでください)。
複数記述したい場合は
<!--ASIN[B0002HTZJI]-->
<!--ASIN[4766409124]-->
と分けて書いてください。ただし間にレビュー等のテキストを入れられるように1個1個別物として表示します(ヘッダーとフッターを共有しない)のでご了承下さい。

2. NP_Amazon的使い方
アイテムの本文か続き部分に
<%AWS(asin,[ASIN],[AWSのテンプレート名],[画像サイズ])%>
または
<%AWS(browsenode,[ブラウズノード],[サーチインデックス],[AWSのテンプレート名],[画像サイズ])%>
または
<%AWS(keyword,[キーワード],[サーチインデックス],[AWSのテンプレート名],[画像サイズ])%>
のいずれかを記述して下さい。
各項目については上のほうに書いてあるスキン記述の解説(2-2、2-3)と一緒です(テンプレート以降は省略可能)。
この場合の表示数指定はまだできるようにしてなかったと思います。ブラウズノードとキーワードは多分10個表示されます。あやふやですみません。
※この方法はスキンの方にAWSの記述が無くても使えます

------------------------------------
2005/06/11 0.22
・ファイルは全て文字コードをUTF-8のままにしておくよう説明を修正
・Creatorのrole((著)など)の部分がutf-8以外でNucleusを動かしていた場合文字化けするのを修正
・管理画面で「既定のテンプレートの更新」が出来ないのを修正(既にNP_AWSを使用している場合は添付のupdateTo022ファイルをダウンロードして実行してください)
・1アイテムに2つ以上コメント方式で記述していた場合にアイテムスキンでは最初の1つしかデータを取得していなかったのを修正
・商品ページのURLをAmazonから送られてくるURLそのままを使用するように変更(長いっすけど)
2005/05/07 0.21
・テンプレートの「複製」を行うとエラーが出るのを修正
2005/05/03 0.1->0.2
・各種バグ修正
・コメント方式の場合はアイテム「本文」のみに限定(追加の部分はダメ)
・AWSテンプレート変数 creatorlite, shorttitle 追加
・NP_Amazon式記述や、blog表示以外のスキンからの呼び出しではテンプレート名を省略可能だったことに気づいたので説明文修正。
・ブログ表示で1ページ内で10商品以上の表示を可能に
・アーカイブスキン対応。表示数を指定しない場合は1ヶ月分表示。
・コメント方式でも1アイテムに2つ以上書けるようにした。ただしそれらでAWSテンプレートのヘッダとフッタは共有できません(その代わりコメント記述は続けて書かなくても平気。本文内であればどこに書いてもOK)


Attachments:
zip NP_AWS0.22.zip, Size: 21.98 KiB, Downloads: 464
zip NP_AWS_updateTo022.zip, Size: 1.11 KiB, Downloads: 445

オフライン

#2 2005-04-30 02:33:56

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

書くの忘れてましたが、
初期のキャッシュ時間は6時間です。
変える場合は、
NP_AWS.phpを開いて88行目の$this->cachesecを変更して下さい(秒で記述)。

オフライン

#3 2005-04-30 04:05:30

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

ありがとうございます。暑くて眠れなかったので早速試してみてます。
が、うまくいきません。使い方を間違っている可能性があるので、ちょっと行ったことを整理してみます。

1~3まではOKです。
ただ、3のAmazon Subscription ID ってNP_Amazonでいう「Amazon Developer's Token:」と同じで良いのでしょうか?

4.テンプレートとして、【アイテム】に

<div class="leftbox"><img border="0" src="<%imageurl%>" <%imagesize%> alt="<%creator%>「<%title%>」" /></div>

のみ記述したものを作成。

5.テンプレートに記述追加
記事内容を表示するテンプレートに<%AWS(books)%>というコードを追加。

<h6><a name="<%itemid%>"><%title%><a></h6>
<div class="topleft"><%date%>
  <%AWS(books)%><%body%><%more%>
<%edit%></div><br style="clear:both;">

6.アイテム投稿
本文に

<!--ASIN[B0002HTZJI]--> ----以下感想-----

と記述。

結果
画像の表示がされず、ソースには<!--ASIN[B0002HTZJI]-->が表示されたまま。
一応NP_AWSをプラグイン一覧で一番上に持ってきてみています。
<%AWS(asin,[ASIN],[AWSのテンプレート名],[画像サイズ])%>
式の記述も
<%AWS(asin,B0002HTZJI,books,m)%>
として試してみましたがなにもなにも表示されません。(ASINコードは有効なものを使用しています)

スキン記述は行っていないのですが、それが原因でしょうか?
また、記事は「アーカイブスキン」で表示させています。月ごとをデフォルト表示にしているので、
indexスキンでは記事の内容は表示させません。
ただ、一応個別アイテムで見てみましたが、やはり表示されませんでした。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#4 2005-04-30 04:23:03

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

自己レスです。

藤咲 さんの発言:

1~3まではOKです。
ただ、3のAmazon Subscription ID ってNP_Amazonでいう「Amazon Developer's Token:」と同じで良いのでしょうか?

違いました… :oops:
取り直したらOKになりました!
とりあえずこれで今までの記事を書き直してみます。
Amazon投稿ボタンも作り替えないと…。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#5 2005-04-30 04:26:23

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

すいません、説明が間違っていました(説明を少し書き換えました)。
テンプレートだけではダメです。
スキン記述が必要です(でないと、1ページ分まとめて取得できないので)。

えっと、基本が
「スキンからAWSのテンプレートを呼び出す」だったんですね。
これをもっと広げて
「スキンからNucleusのテンプレートを経由してAWSのテンプレートを呼び出す」
ことが出来るように改良したのがコレなのです。

と言う説明でご理解いただけるでしょうか :oops:

オフライン

#6 2005-04-30 04:28:32

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

すみません、<%AWS(asin,B0002HTZJI,books,m)%> はOKだったんですが、
<!--ASIN[B0002HTZJI]-->はコメントのままでした…。
NP_Amazon式は記述量がおおくなるので、コメント版で動かしたいのですが、どの辺が問題なのでしょうか。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#7 2005-04-30 04:39:34

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

入れ違いましたね。
更に追記。アイテムスキンはNucleusのテンプレート指定だったようです :oops:
今から説明書き換えます・・・

オフライン

#8 2005-04-30 04:53:13

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

スキン記述が必要です(でないと、1ページ分まとめて取得できないので)。

了解です。
ということで、次は
<%AWS(blog,@,books,20,,0)%>
で「アーカイブスキン」に記述してみました。(月ごと表示をしたいため)

うう、しかしアーカイブスキンに記述してもインデックススキンと同じ展開方法(新しい順からxx件表示)に
なってしまいました。
できましたらアーカイブスキンで「xx月分全件」という表示に対応して頂けませんでしょうか。

それはそれとして、やはり表示されないんですがどの辺をチェックしてみれば良いでしょうか?
(アイテムスキンで試してみましたがやはり表示されません)


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#9 2005-04-30 05:17:33

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

うむむ?
とりあえず月表示の前に、表示可能にしないといけませんね。
うーんとアーカイブスキンでも商品表示がされないということですね?
一応私のClipの設定を書いてみますので参考にして下さい。

インデックススキンには
<%AWS(blog,@,00def/aws,10)%>
アイテムスキンには
<%AWS(00def/item/aws)%>

00def/awsと00def/item/awsはNucleusのテンプレート名です。

で、
00def/awsテンプレートには
<%AWS(default)%>
00def/item/awsテンプレートには
<%AWS(default/item)%>

defaultとdefault/itemはAWSのテンプレート名です。

藤咲さんのAWSテンプレートの記述は問題ないっす。
月表示についてはちょっと待ってて下さい。ShowBlogsと似てるのですぐ追加できると思います。

あ、ちょっと気づいたんですけど、スキンに書いた<%AWS(blog,@,books,20,,0)%> の"books"はNucleusのテンプレート名ですか?
AWSのテンプレート名だとしたら、アーカイブスキンの方はテンプレート名の最後に@awsを付けてください。アイテムスキンの方は・・・・・うーんバグ発見。
function _showItemの先頭あたりに
list($template, $tptype) = explode("@",$template);
を追加して下さい。で、こっちもテンプレート名の最後に@awsを付けて下さい。

Nucleusのテンプレートだとしたら・・・なんでだろ?

オフライン

#10 2005-04-30 05:28:10

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

あとスイマセン、表示数10または無指定にして試してもらえます?
やっぱ10以上の処理をしてないっぽいです。

オフライン

#11 2005-04-30 11:07:44

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

あ、ちょっと気づいたんですけど、スキンに書いた<%AWS(blog,@,books,20,,0)%> の"books"はNucleusのテンプレート名ですか?
AWSのテンプレート名だとしたら、アーカイブスキンの方はテンプレート名の最後に@awsを付けてください。アイテムスキンの方は・・・・・うーんバグ発見。

あ、booksってかいたからわかりにくかったですね。
こっちもNucleusのテンプレートを記入してます。

表示数は10件に変えてみましたが、結果は変わらずです…。

表示はされないんですが、mediaディレクトリにはきちんとxmlが取得できています。
しかし、 nucleus_plug_awsテーブルにはなにも値が入っていません。

function doTemplateVarの

if (!preg_match("/^<!--(?:\s+)?ASIN\[([A-Za-z0-9]+)\](?:\s+)?-->/", $item->body, $m)) {

行の下に、

echo 'nomatch';

を入れてみましたが、
<!-- ASIN[B0002HTZJI] -->
を入力しているアイテムでもnomatchが出力されています。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#12 2005-04-30 11:18:03

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

月表示についてはちょっと待ってて下さい。ShowBlogsと似てるのですぐ追加できると思います。

できれば月表示の表示数に「all」オプションがあるといいなぁ…と。
まぁ50とかにすればいいんですけど、なにか無駄なような気がして…。

ただ、10件以上の処理が入ってないんですよね。
ページの作りとして、あまりページスイッチを使いたくないのです。
また、1ヶ月にそこまで大量の本を読むのは難しいので(w)、1ページに30を超えることはさすがにないと思います。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#13 2005-04-30 13:57:47

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

あーと、10件以上についてはすぐは無理です big_smile

で、ページ分割有りでとりあえずアーカイブ対応するには、
ShowBlogsのwhereのitimeの処理のところを利用して下さい。
NP_AWSは816行目にその部分があります。
簡単ですので自分でできるようにこの機会に覚えましょう。
itimeのとこ追加するだけならallモードはそのまま使えるはずです。

それから、plug_awsテーブルはまだ使ってないので空でOKです。

最後に、

function doTemplateVarの

if (!preg_match("/^<!--(?:\s+)?ASIN\[([A-Za-z0-9]+)\](?:\s+)?-->/", $item->body, $m)) {

行の下に、

echo 'nomatch';

を入れてみましたが、
<!-- ASIN[B0002HTZJI] -->
を入力しているアイテムでもnomatchが出力されています。

ということはマッチしてないということなので^^;
条件を変えて試してもらえますか?
もしかすると\sがダメなのかな。コメント記号の次のスペース抜いてみたらどうなるでしょう?

:!: [追記]
多分先頭の^ですよ、いけないのは :oops:  消してください・・・
なんで気づかなかったんだろー。

オフライン

#14 2005-04-30 14:22:28

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

すぐは無理といいつつ。
10以上の場合の処理を考えてみました。

function _showBlogs内、918行目の
if (!count($asins)) return;
から、

974(?)行目の
if($type >= 1) echo $buf;
までを、以下に置き換えて試してみて下さい。ただしまず、10件で表示できるようになってからにしてください。
原因がわからなくなってしまうので。(あー行数はアーカイブの処理入れたら変わっちゃいますね。)

		if (!count($asins)) return;
		$chunkasins = array_chunk($asins, 10);
		while (count($chunkasins)) {
			$curasins = array_shift($chunkasins);
			$value_str = implode(",",$curasins);
			$filename = $this->_getCachefileName('asin','',$value_str);
			$cachefile = $this->getCacheDir().$filename.'.xml';
			$limittime = time() - $this->cachesec;
			
			if ($tptype == 'aws') {
				if (file_exists($cachefile) && intval(filemtime($cachefile)) > $limittime) {
					$datas = $this->_getCacheData($filename, $curasins);
				} else {
					$datas = $this->_getAmazonData('asin', $curasins);
				}
				$this->_showProducts(&$datas, $template);
				
			} else {
				if (file_exists($cachefile) && intval(filemtime($cachefile)) > $limittime) {
					$this->datas = $this->_getCacheData($filename, $curasins);
				} else {
					$this->datas = $this->_getAmazonData('asin', $curasins);
				}
				if ($this->datas['errors']) {
					echo '<p>Error: '.implode("<br />",$this->datas['errors']).'</p>';
					return;
				}
				
				$query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, UNIX_TIMESTAMP(i.itime) as timestamp, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl,' ;
				if (!$catblogname) {
					$query .= ' c.cname as category,' ;
				} else {
					$query .= ' concat('.$catformat.') as category,' ;
				}
				$query .= ' i.icat as catid, i.iclosed as closed' ;
				$query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'.$mtable ;
				if ($catblogname) {
					$query .= ', '.sql_table('blog').' as b ';
				}
				$query .= ' WHERE i.iauthor=m.mnumber and i.icat=c.catid';
				if ($catblogname) {
					$query .= ' and b.bnumber = c.cblog';
				}
				$query .= ' and i.idraft=0'.$where;
				$query .= ' ORDER BY i.itime '.$sort; 

				if ($pageamount > 0){
					$query .= ' LIMIT ' . $startpos .',' . $pageamount;
				}
				
				$this->inblog = 1;
				$b->showUsingQuery($template, $query, 0, 1, 1);
				$this->inblog = 0;
				
				$this->datas = "";
			}
		}
		
		if($type >= 1) echo $buf;

例のごとく試してません。

オフライン

#15 2005-04-30 14:30:08

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

さらに10件以上の場合の処理追加

753行目の

		if(!$pageamount || $pageamount > 10) $pageamount = 10;

を、

		if(!$pageamount) $pageamount = 10;

に変えてください。

オフライン

#16 2005-04-30 15:26:41

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

多分先頭の^ですよ、いけないのは :oops:  消してください・・・
なんで気づかなかったんだろー。 [/b]

画像がでました~。
とりあえずひとつ前進。

ShowBlogsのwhereのitimeの処理のところを利用して下さい。
NP_AWSは816行目にその部分があります。
簡単ですので自分でできるようにこの機会に覚えましょう。
itimeのとこ追加するだけならallモードはそのまま使えるはずです。

分かりました姐さん(まだいうか)。
やってみます~。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#17 2005-04-30 16:08:56

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

アーカイブスキンに対応するのはできたようなので、一応手順を…。
バージョンアップ前に使ってみる人がいるかもしれないですし。

function _showBlogsの先頭行に

global $manager, $blog, $CONF, $catid, $archive;

と、$archiveを追加。

$where .= ' and i.itime<=' . mysqldate($b->getCorrectTime());

行をコメントアウトして、入れ替えにShowBlogsから

if($archive){
        ~~~~~~中~~略~~~~~~~~
            $where .= ' and i.itime<=' . mysqldate($b->getCorrectTime());
        }

となっている部分をコピペで完了。

…あってます? 8)


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#18 2005-04-30 17:25:18

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

すぐは無理といいつつ。
10以上の場合の処理を考えてみました。

ということで10件以上の処理を試してみました。

1月に15件分のアイテムを用意し、スキンには20件表示で設定しました。
どのように表示されたかというと
10件画像付きで表示。
その下に残りの5件がNoImage画像で表示。
さらにその下に最初の10件がNoImage画像で表示。
その下にさっき画像が表示されなかった5件が画像表示。
という形になりました。
つまりアイテムが重複して倍の30件表示されてしまう状態です。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#19 2005-04-30 18:02:12

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

報告です。

Taka さんの発言:

複数記述したい場合は確か
<!--ASIN[B0002HTZJI]-->
<!--ASIN[4766409124]-->
と続けて書けばよかった気がするけどダメだったらごめんなさい。

これは最初に記述した方しか表示されませんでした。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#20 2005-04-30 18:39:09

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

えーまず、コメント方式での複数記述について。
途中からダメなの気づいてたんですが、書くの忘れてました。ごめんなさい。

次に、archiveについて。else追加でその中にコメントアウトした部分を入れればインデックススキンでも使えて素敵です。

ほんでもって、10以上。
オオボケかましてました。
$startposとかの値変えないとダメっすよねー。そりゃそうっすよねー。
でも単に$startposの値を変えるとページスイッチ表示の場合に困るので、ちょっとゴソゴソしないといけません。今日は無理かも。お待ち下さい。もしよろしければその辺いじってみといてください。

んでもって、実際使用にあたりコメント方式の複数記述は必要ですか?
Amazonには1度に10までしか問い合わせできないので、必要であれば計算を考え直さなきゃいけないので、これが一番後回しになるかと思います。

オフライン

#21 2005-04-30 19:33:03

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

Taka さんの発言:

archiveについて。else追加でその中にコメントアウトした部分を入れればインデックススキンでも使えて素敵です。

了解です。

Taka さんの発言:

ほんでもって、10以上。
オオボケかましてました。
$startposとかの値変えないとダメっすよねー。そりゃそうっすよねー。
でも単に$startposの値を変えるとページスイッチ表示の場合に困るので、ちょっとゴソゴソしないといけません。今日は無理かも。お待ち下さい。

お待ちしております。その間に地道にNP_Amazonで入力した記事を書き直しておきます lol

Taka さんの発言:

もしよろしければその辺いじってみといてください。

…がんばります。でも待ってます :oops:

Taka さんの発言:

んでもって、実際使用にあたりコメント方式の複数記述は必要ですか?
Amazonには1度に10までしか問い合わせできないので、必要であれば計算を考え直さなきゃいけないので、これが一番後回しになるかと思います。

ああ、そうか、計算変わりますものね…。うーん。でもあると便利かなぁ。
3巻まとめて紹介、ってのもあったりするので…。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#22 2005-05-01 13:34:10

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

自力でゴソゴソはかなり無理そうな気配ですが、とりあえず120件近くある記事をNP_AmazonからNP_AWSへ
変更してみました。
ちなみに、アーカイブ一覧では120件すべて表示しています。
(本当は1年ごとに区切って、<<前の年 | 次の年>> というナビゲーションをつけたいんですけど…)

で、NP_Amazonでは更新処理をコメントアウトしたとしてもクリックから8秒近くかかっていたのが、3秒程度で表示されるようになりました!
3秒というと長いと思われるかもしれませんが、体感では劇的な違いです。

真央さんとか、たしかNP_Amazonの速度関係で苦労されていたような記憶があるので、かなり
喜ばれる方は多いと思います。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#23 2005-05-01 13:50:10

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

スキンにカテゴリを指定したときにsqlエラーが出ました。
以下の部分、

$where .= ' and ((i.inumber=p.item_id and (p.categories REGEXP "(^|,)('.implode("|",$categories).')(,|$)" or i.icat IN ('.implode(",",$categories).')) or (i.icat IN ('.implode(",",$categories).') and p.item_id IS NULL))';

赤字の(がいらないのではないかと思います。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#24 2005-05-03 10:29:32

Taka
メンバー
From: 千葉
登録日: 2003-11-17
投稿: 264
ウェブサイト

Re: [beta] NP_AWS

トピック先頭の添付ファイルを0.2に入れ替えました。

・カテゴリーと、正規表現のところのバグ修正済み。
・コメント方式の場合記述できるのはアイテム「本文」のみに限定することにしました(moreの部分はダメ)。
・AWSテンプレート変数 creatorlite, shorttitle 追加(説明追記しています)。
・NP_Amazon方式や、(blog表示以外の)スキンからの呼び出しではテンプレート名を省略可能だったことに気づいたので説明文修正しました。
・ブログ表示において1ページ内で10商品以上の表示を可能にしました(キーワード検索結果等はまだダメ)。
・アーカイブスキン対応。表示数を指定しない場合は1ヶ月分表示になります。
・コメント方式で1アイテムに2つ以上書けるようにしました。ただしそれらでAWSテンプレートのヘッダとフッタは共有できません(その代わりコメント記述は続けて書かなくても平気。本文内であればどこに書いてもOK)

コメント方式でmoreをダメにした(というか実はもとからダメだったのに気づいてなかった)のは、パフォーマンス面が理由です。
とりあえずこれで落ち着くかな??

オフライン

#25 2005-05-03 17:26:54

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: [beta] NP_AWS

ありがとうございます。
いや、もう完璧です big_smile
「まとめてリクエストする」という事がこれほどパフォーマンスに違ってくるのかと、その思いつきに感嘆です。
(せいぜいリクエストを減らす事しか思いつかなかったもんなぁ…)

NP_Amazonにて大量の記事を書いている人には導入必須!とお勧めしておきますです。

あと一点質問があるのですが、NP_Amazon方式でASIN指定を記事内に記述した場合、スキンへの記述は
なしでもデータは表示されますよね。
その場合はNP_Amazonと同様に1件ごとのリクエストだと考えて良いんでしょうか?
つまり、

記事1
<%AWS(asin,1111111)%>
記事2
<%AWS(asin,1111112)%>
記事3
<%AWS(asin,1111113)%>

を表示する場合と

記事1
<%AWS(asin,1111111)%>
<%AWS(asin,1111112)%>
<%AWS(asin,1111113)%>

場合ではリクエスト数は同じでしょうか?
もし、下の場合にはリクエスト数が1であるならば、コメント方式と違うテンプレート(たとえば「買ったもの一覧」)
で表示したいときにもNP_Amazonの代替になるかなと考えているのです。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

Board footer