Loading....
最近の投稿:

Article

楽天APIで制限された場合のメッセージを表示~モバイル版~

今回は、前回予告した通り、モバイル版サイトでの
楽天API制限時に適切なエラーメッセージを表示する
改造方法をご紹介します。

楽天APIの結果をOK、NG、DENIEDの3種類に増やして、
OK(成功)の時のみ、本来の表示処理を行い、
DENIED(楽天からの制限や通信障害など)の場合は
「混んでいる為、後でやり直して下さい」といった旨の
メッセージを表示し、
NG(商品無しや楽天メンテナンス時等)の場合は、
「情報を取得出来なかったのでやり直して」といった旨の
メッセージを表示します。

それぞれのメッセージはifやelseif、elseで区切られていて、
ちょっと見ればすぐにわかると思いますので、
皆さん、日本語の部分を自分の好きな文言に変更して
使って下さい。

では、実際の改造コードです。

楽天API用ライブラリの修正

lib\mrakutenAPI.phpに対する修正

行番号 : 36
const NG = 1;
この行の直後に下記コードを追加します。
  const DENIED = 2;  // 楽天APIからアクセス拒否
行番号 : 53,90,131,171
(上記修正前は各52,85,122,158行目)
return self::NG;
各行にあるこのコードを下記コードに変更します。
      if( $xml->Header->Status == '' ){
        return self::DENIED;
      } else {
        return self::NG;
      }

トップページの修正

mindex\contents.phpに対する修正

行番号 : 7
if(isset($p->category)){
この行を下記コードに変更します。
if($ret == rakutenAPI::OK){
行番号 : 25-28

}else{
echo<<<TO_END
{$warn1}<br />
{$warn2}

この4行を下記コードに変更します。
} elseif($ret == rakutenAPI::DENIED){
echo<<<TO_END
<p style="text-align:center;">
ただいまアクセスが集中している為、商品情報を取得できませんでした。<br />
大変申し訳ございませんが、しばらく経ってからやり直して下さい。</p>
TO_END;
}else{
echo<<<TO_END
<p style="text-align:center;">
商品情報を取得できませんでした。<br />
しばらく経ってからやり直して下さい。</p>

カテゴリーページの修正

mcategory\contents.phpに対する修正

行番号 : 21
}
この行の直前に下記コードを追加します。
} elseif($ret == rakutenAPI::DENIED){
echo<<<TO_END
<p style="text-align:center;">
ただいまアクセスが集中している為、商品情報を取得できませんでした。<br />
大変申し訳ございませんが、しばらく経ってからやり直して下さい。</p>
TO_END;
}else{
echo<<<TO_END
<p style="text-align:center;">
商品情報を取得できませんでした。<br />
しばらく経ってからやり直して下さい。</p>
TO_END;

※2行ある「}」のみの行の間に追加します。

サブカテゴリーページの修正

msubcategory\contents.phpに対する修正

行番号 : 12
}else{
この行を下記コードに変更します。
} elseif($ret == rakutenAPI::DENIED){
行番号 : 14-16

<p style="text-align:center";>
キーワードを変更して検索し直してください。
<p>

この3行を下記コードに変更します。
<p style="text-align:center;">
ただいまアクセスが集中している為、商品情報を取得できませんでした。<br />
大変申し訳ございませんが、しばらく経ってからやり直して下さい。</p>
TO_END;
}else{
echo<<<TO_END
<p style="text-align:center;">
商品情報を取得できませんでした。<br />
しばらく経ってからやり直して下さい。</p>

商品詳細ページの修正

mitemdetail\contents.phpに対する修正

行番号 : 2
if( $ret != rakutenAPI::NG){
この行を下記コードに変更します。
if($ret == rakutenAPI::OK){
行番号 : 54
}else{
この行の直前に下記コードを追加します。
} elseif($ret == rakutenAPI::DENIED){
echo<<<TO_END
<p style="text-align:center;">
ただいまアクセスが集中している為、商品情報を取得できませんでした。<br />
大変申し訳ございませんが、しばらく経ってからやり直して下さい。</p>
TO_END;
行番号 : 61
(上記修正前は55行目)
echo "商品情報を取得できませんでした。";
この行を下記コードに変更します。
echo<<<TO_END
<p style="text-align:center;">
商品情報を取得できませんでした。<br />
しばらく経ってからやり直して下さい。</p>
TO_END;

検索結果ページの修正

misearch\contents.phpに対する修正

行番号 : 12
}else{
この行の直前に下記コードを追加します。
} elseif($ret == rakutenAPI::DENIED){
echo<<<TO_END
<p style="text-align:center;">
ただいまアクセスが集中している為、商品情報を取得できませんでした。<br />
大変申し訳ございませんが、しばらく経ってからやり直して下さい。</p>
TO_END;
行番号 : 20-22
(上記修正前は14-16行目)

<p style="text-align:center";>
キーワードを変更して検索し直してください。
<p>

この3行を下記コードに変更します。
<p style="text-align:center;">
該当する商品が見つかりませんでした。<br />
キーワードを変更して検索し直してください。</p>

今回の改造は以上です。
改造箇所、改造量ともに結構あるので、
充分気をつけて修正して下さい。

人気ブログランキングへ
人気ブログランキングへ参加しています。
応援をお願いします。


Comments (4 comments)

チカマオさん、こんにちは。
Lagです。

私もGoogleインデックス削除になりました。ロリポップ分全てです。そろそろと思っていても、さすがに凹みますね。

ちなみに私のアラジン用のドメインは今のところ他の事に使っていないのですが、アラジン以外のサイトやブログでもインデックスされなくなるんでしょうか?サブドメインで分けてもダメなのでしょうか?

また質問で申し訳ないのですが、よろしくお願いします。
PS。「アラレボ」への期待がますます高くなりました。

Lag / 4 月 1st, 2009, 22:56

アラジンサイト20本ががインデックス削除されてから10日ほどにな
りますが、未だに楽天のポイントが入ってます。すでにサイトは実態として自分でも削除しているというのに。
(恐るべしアラジンの超ロングテール+クッキー)

あーもったいないアラジン。

なおみ / 4 月 2nd, 2009, 04:33

Lag さん、こんにちは。

Lagさんのサイトもインデックス削除ですか・・・、残念ですね。m(_ _)m

他のサブドメインに波及するかどうかは、私も確実な事は言えません。
私個人的には真面目に作ったサイトに関しては大丈夫なんじゃないかと楽観的です(実際、本サイトと同じドメインでアラジンを運用しています)が、ドメイン全体でインデックス削除をくらったという話も結構読みますので、難しいところですね。
最終的にはご自身の判断に委ねるしかないところですが、慎重になるなら(凄く気合いの入れたサイトなら)別ドメインで運用するのがベストの様に思います。

アラレボは今最終的なバグ取りとレター作成中ですので、今しばらくお待ち下さい。

チカマオ / 4 月 2nd, 2009, 21:06

なおみ さん、こんにちは。

本当ですか、スゴイですね!!
楽天のクッキーが30日間有効な故の結果ですね。(^^

頑張ってアラジンを復活させようと思いますので、応援宜しくお願いします。

チカマオ / 4 月 2nd, 2009, 21:08

What do you think?

判らないphp命令やhtmlタグ等をここでお調べ下さい。

カスタム検索

緊急告知

本サイトより【アラジン】をご購入頂いた方は、お手数ですが下記アドレスまでメールを頂けないでしょうか。

サポート用メールアドレスのご連絡と、今後大規模改造が完成した際にはご連絡させて頂きます。

※メールには必ずInfotopからの購入完了メールに記載されている【注文ID】をご記載下さい。

chikamao@u3g.biz

QLOOKアクセス解析