amazonアソシエイトが重いのを解消

  • 2023.08.07 Monday
  • 14:43

前回の投稿から10年以上立ってますが…。



サイトリニューアルしたけど、一部のページが表示されたあともずっと読み込み中のままぐるぐる矢印が回ってた問題、何が重いのか分からなかったが、やっと判明。



受賞作候補作のアマゾンリンクつけてるページが重かったわけだが、amazonアソシエイトの画像リンクについてくる1px画像が原因だった。



Amazonアソシエイトのリンクがとても重い


いつまでたってもサイトが表示されないときの対処法



ためしにいくつかのページで1px画像を削除したら、すぐ表示完了した。


しかしアマゾンリンクは年度ごとに少ないときでも5個、多いとき(コミック巻数多いなど)は数十個ある。1つ1つ修正するのはうんざりなので、CMSの強みで一括でできないか考えた。



以下のMODXのスニペットを作った。


アソシエイトの画像リンクは



<a href="http://www.amazon.co.jp/gp/product/**ほげほげ**&tag=アソシエイトID"><img border="0" src="画像のURL&tag=アソシエイトID" ></a><img src="http://ir-jp.amazon-adsystem.com/**ほげ**" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />


という形なので、ページに書き出すときにaタグで囲まれている部分のみ取り出せばいい。
スニペット名は a取り出す

phpの正規表現でこう書く。


$output = preg_match("/<a(.*?)<¥/a>/", $output, $match);
print $match[0];


preg_matchの使い方はこちらを参考



【PHP】文字列を正規表現で検索する関数の使い方を解説



画像ダグを記載してるテンプレート変数に
[+TV変数:a取り出す+]
として無事1px画像をページに書き出さないようにできました。



この1px画像、デザイン上も邪魔なのでcssで非表示にしてたんですが、元から書き出さないほうがスマート。



ajaxsearch1.9.2でも、全角スペースで検索させる

  • 2012.02.17 Friday
  • 13:03
毎度のことながらAjaxSearchはアップデートごとにファイル構成とかマイナーチェンジされます。

検索するときの区切り文字はスペースですが、日本語の全角スペースをいれると全角スペース含みの文字列として検索するので、これをなんとかしたいです。

過去記事
ajaxsearch1.8.4で全角スペースでも検索させる
で対処法を書きましたが、AjaxSearch1.9.2には
assets/snippets/ajaxSearch/classes/search.class.inc.php のファイルがありません…。またかよ。

classes/の中を見ると
ajaxSearchInput.class.inc.php というのがあやしい。
開いてみると223行目あたりに

$searchString = $this->_stripTags($searchString);

というのがあるので
このすぐ下に

// zenkakuhankaku space
$searchString=mb_convert_kana($searchString, s, "UTF-8");

と入れてあげれば、全角スペースは自動で半角に変換して検索してくれますw

-------追記--------
こちらからダウンロードできるAjaxSearch1.9.2c は全角スペース問題は解決されていますので、修正する必要はありません。

ロリポでAjaxSearch1.9.2を動かす modx1.0.5J-r10 およびr5

  • 2012.02.17 Friday
  • 13:00
G研サイトをmodx1.0.5J-r5からr10にアップデートしたのを機に、サイト内検索をつけようとAjaxSearch1.9.2を使ってみた。

以前記事に書いたが
ロリポップでAjaxSearch 1.8.1を動かす
このときはmodxもまだ0.9あたりだったので、この情報はもうかなり古い。

でmodx1.0.5J-r10でAjaxSearch1.9.2bを使ってみたのだけど、いきなりエラーで動かないorz
日本公式フォーラムで質問したところ対処法を教えていただいたので、メモ。

assets/snippets/ajaxSearch/classes/ajaxSearch.class.inc.php
78行目あたりの
set_time_limit($asCfg->cfg['timeLimit']);
を削除orコメントアウトすることで動くようになりました。
※コメントアウトするには行頭に//をつける。

ロリポサーバーの人はお試しください。
※ちなみにさくらサーバーでは上記の処理をしなくても動きました。
ためしにコメントアウトしたファイルをさくらサーバーでも使ってみましたが、問題なく動きました。
さくらはどっちでもokみたいです。



ファイルサイズを計算してくれるスニペット

  • 2011.11.18 Friday
  • 13:20
 便利なスニペットを見つけたのでメモ。

pdfファイルとかzipファイルをアップしてダウンロードしてもらうとき、ファイルサイズが書いてあったほうがありがたいよね。
管理してるサイトで、実は今まで手動で書いてたのだが^^;
今後pdfのアップが増えることになったので、自動で計算できないかなぁ? と検索したらスニペットありました。

SNIPPET: filesize

スニペットコール

[[filesize? &file=`filename` &unit=`unit` ]]

Where:

filename - the path to file (for example: assets/file/index.htm)
unit - the maximum unit (for example: KB)
ポイント
・filenameは最初に/なしでOK
・unitはKBにしても1MB超えると表示は
1.19 MBみたいに出力してくれます。

便利です。

IE背景消え対策

  • 2011.08.25 Thursday
  • 18:39
mootoolsとjQueryを一緒に使う方法でめでたく内容量に差があるボックスの高さをそろえるは完成したのだけど、IEで見てみたら、いろんなとこで背景やらボーダーやら消えまくり…。

ああーまたかよー、とがっくり。
IEはfloat使うと高確率で、ボックスの背景が消える。それも一回読んで、一瞬表示されるのに全部読み込みが終わると見えなくなってる、というなぞIE仕様。

参考サイト:IE6で背景が表示されない際にチェックすること

前にもやったけど、結局背景・ボーダーが消える要素に
position: relative;
をつけてやれば、ほとんど解決する。その要素にposition使ってなければだけど。

背景・ボーダーが消える要素にwidth指定という手もあるのだが、
floatを使って、入れ子のボックスにpadding、marginなんかを指定している場合、
すごくややこしいことになるので、position: relative;が使えないときの最後の手段にしてます。

しかし
position: relative; とそのまま書くのは、どうも釈然としない。IEにしか必要ないんだからなおさら。

というわけで
参考サイト:CSSハック一覧 -- IE, Firefox, Safariなどなど:
を参考にIEハックで書くことに。

position/*¥**/: relative¥9;

これでIE7,IE8のみに適応される。IE6以下はもう無視w。
こう書いておけば実際に必要なpositionと区別できるのでわかりやすいです。

ちまちまと各要素にIEハックをつけて、ようやく完成しました。へろへろ。