Google Sitemapsモジュール for ZenCart

Last modified 10/20/2005 15:00:57

ZenCartでショップを構築するのは非常に簡単なのですが、インターネットに公開した後の大きな問題の一つがgoogleがなかなかクロールしてくれないことです。
MSNなどはトップページのURLを登録しておけば以後ストーカーのようにほぼ毎日ねっちりとクロールしてくれるのに対しgoogleは数日に一度そっけなくトップページだけクロールしてあとは放置という状態が暫く続くことになる場合が多いようです。
特にzencartのテンプレートをほぼデフォルトの状態で使用した場合はgoogleに嫌われるようで各商品のページをなかなかクロールしてくれません。
ショップ運営者にとってこれは悩ましい限りです。

そんなショップ運営者の強い味方になりそうなのがgoogle sitemapsです。
Google Sitemapsはまだベータ版ということで完全に信用できるものではないですが、これでショップのサイトマップを登録しておけばgoogleが来てくれます。
実際に利用してみたところ数日で私のzencartのショップも膨大な商品ページがしっかり登録されていました。

と、いうことでまさにgoogle sitemaps様様なのですが、利用するのがかなり面倒なのが問題です。
まず、サイトマップをxmlで作成しなくてはならないのですが、googleが提供しているサイトマップジェネレータはオブジェクト指向プログラミング言語のpythonが必要です。pythonを持っていなれればインストールしなければなりません。
このジェネレータはwebサーバのログからサイトのURLを拾う方式です。よって膨大なゴミURLを拾ってくれることになります。これらゴミURLを排除するために設定ファイルにルールを記述する必要があります。これがかなり面倒です。そして訪問者が勝手に作った(または間違って入力した)URLなどは完全に排除しきれない場合があります。
google以外が提供しているサイトマップジェネレータにはpython以外の言語で作成されたものも存在しますがそれも利用するのが面倒であることには変わりありません。

そんなわけでzencart専用のサイトマップ作成モジュールを作ってみました。
このサイトマップはgoogle向けなので一般の訪問者用サイトマップと違い全てのページを登録する必要はないと考えました。トップページとカテゴリーと全ての商品ページのURLを登録します。ただし、無効のカテゴリーや商品のURLは登録されません。また、スペシャル商品(割引商品)については一般商品とは違う優先度を設定することを可能としました。
このモジュールはzencartの機能を利用してURLを取得するのでゴミURLを取り込むことはありませんし非常に高速です。私のサーバで500の商品ページを取り込むのに1秒掛かっていません。
このモジュールは小さなphpの1ファイルだけで出来ているので設置は非常に簡単です。

このモジュールはzencartの英語版のver.1.2.4, ver.1.2.5, ver.1.2.6で動作確認を行っています。
その他のバージョンでもver.1.2以上なら動く筈です。
なお、日本語版1.2.0でも動くことが確認されています。
そして、私の作ったzencart用URL書き換えパッチを適用したサイトでもそのまま利用できます。


インストール:

このモジュールのインストールは非常に簡単です。
なにせ1ファイルだけですから。
もちろんzencart側には何も変更は必要ありませんし、ましてやsqlでデータベースをいじったり拡張したりいうのもありません。

  1. gen_sitemap.phpをzencartのルートディレクトリに置きます。
  2. gen_sitemap.phpを編集します。

これですべて完了です。
アンインストールもgen_sitemap.phpを削除するだけです。


設定:

スクリプトファイルの最初の方が設定項目になります。変数$zenrootはzencartのルートディレクトリのpathを記述します。これはURLのpathではなくファイルシステムのpathです。最後にスラッシュを付けて下さい。

次の3つの変数は優先度(重要度)です。

$cpriorityはカテゴリーの優先度です。
$gpriorityは一般商品の優先度です。
$spriorityはスペシャル(割引)商品の優先度です。
優先度の最高値は1.0000で最低値は0.0001です。
一般商品よりもスペシャル商品を優先するなら$spriorityの値より$gpriorityの値を大きくします。 現在はカテゴリー毎または商品毎の優先度は設定できません。と、いうかそういう風にする予定は今のところありません。
googleもどこまでこの値を重要視しているか不明です。すくなくとも全て最高値の1にしても無効であるという記述がgoogle sitemapsのサイトにありました。


利用方法:

このモジュールの目的はgoogleが読みに来るsitemap.xmlファイルを生成することです。
そのsitemap.xmlを生成または更新する方法は3種類あります。

  1. ブラウザで http://your_zencart/gen_sitemap.php にアクセスする。
  2. コマンドラインでphpが利用できるなら "php gen_sitemap.php"
  3. UNIXなどでcronが利用できて且つコマンドラインでphpが利用できるならcronで自動実行できます。

3の場合はあなたの/etc/crontab(UNIXの種類によって違う場合があります)を編集して下さい。

7 1 * * * root /usr/local/bin/php /YOUR_ZENCART_ROOT_PATH/gen_sitemap.php
(上はFreeBSDの場合の/etc/crontab)

以上でsitemap.xmlがあなたのzencartのルートディレクトリに生成されます。また、gen_sitemap.phpを実行する毎に更新されます。UNIXの場合はsitemap.xmlファイルの所有者をapacheの所有(実行)権を持つユーザーにして下さい。初めてgen_sitemap.php実行する際に例えばrootで上の2の方法でsitemap.xmlを生成してから1の方法で更新しようとするとsitemap.xmlの所有者がrootであるため上書きできません。
ところでsitemap.xmlが生成されても、google sitemapsの方で登録しないとgoogleは訪れてくれませんしsitemap.xmlを読んでくれません。必ずgoogle sitemapsに登録しましょう。


サポート:

ZenCart日本語サイトのフォーラムでトピックを登録しています。
http://www.zen-cart.jp/bbs/viewtopic.php?t=1809

私に直接メールを送ってくださってもいいのですが返事を書けない場合があります。ZenCart日本語サイトの方ですと有志の方々が返答して下さる可能性が高いですのでメールよりもレスポンス早いかもしれません。


ダウンロード

Download gen_sitemap_v04.zip