2005-11-08 Tue

NP_Lastmod|Google Sitemapsに最適

最近 Nucleus のフォーラムでよく目にしていた「Google Sitemaps」。恥ずかしながらつい先程まで、「Google Maps」と思い込んでいて「自分には関係のないことだ」とクールに振る舞っていたのですが、よーく見たら「Sitemaps」だったんですね。慌てて何の話なのかと調べまくると、とても親切な解説ページを発見。僕があーだこーだと書くと話がそれまくるのでこちらをご参照ください。
Google Sitemaps グーグル・サイトマップ(ベータ版)FAQとプロトコル全訳。新しいURL登録方法はSEOに必須になる?

ということで、当サイトも慌てて Google Sitemaps 用のスキンとプラグインを導入しました。で、ほんの少しつまずいたので、メモ。

Nucleus で Google Sitemaps 用の xml を作成するには、NP_Moblog で有名な cles さん作成の「Google Sitemaps 対応 Nucleus Skin - NP_cles()」を使用させていただきます。基本的にはこれだけで問題ないのですが、Sitemap.php にまみおさんの改造を施し、コメントを頂いた時に更新日時の更新をしてくれる「NP_Lastmod」も利用させてもらいました。ちなみに、記事の修正をしたときに、その時の日時を記録してくれる「NP_UpdateTime」の利用も考えたのですが、僕は誤字脱字が多いのでひっきりなしに修正していることもあり、今回は導入しませんでした。

で、NP_Lastmod は

<%Lastmod%>というテンプレート変数が使えるようになります。この変数はアイテムの一番新しいコメントの日時、コメントがないときは記事の公開日時(NP_UpdateTimeがインストールしてあれば、最終更新日時)をUTCで表示します。

寄ってらっしゃい [Google Sitemaps] - higuchi.com blog

ということなのですが、僕の場合

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in NP_Lastmod.php on line 62

というエラーが出てしまいました。

NP_Lastmod.php の62行目を見ると

if (mysql_num_rows($cr) > 0) { // NP_UpdateTime exists and update time recorded

とあります。さっぱり意味が分かりません。ということで、試行錯誤の結果、以下のようにコメントアウトすることで解決できました。

// if (mysql_num_rows($cr) > 0) { // NP_UpdateTime exists and update time recorded
// $lc = mysql_fetch_object($cr);
// $lastmod = $lc->ut;
// } else {
$lastmod = $item->timestamp;
// }

62行目から65行目、67行目をコメントアウトですね。最初66行目もコメントアウトしたのですが、エラーこそでませんが日付が古きよき時代の1970年代になってしまいました。お気をつけください。

Google Sitemaps は全て英語なんで、ニュアンスしか分かりませんが、まあなんとかなるでしょう。作成した自分のサイトマップのアドレスを登録するだけです。Google のアカウントが必要だと思いますが、Gmail とかもってたらそれで大丈夫です。登録した xml が正しく記述されていたら、なんか特別な html ファイル設置しろ的なことを言われますので、素直に従います。ファイルの中身は空っぽでいいみたいです。それを設置して、Google 様にその旨お伝えすればやっとこさ申請完了。僕はいまだによく分かってないんですが、失敗しても特に害はなさそうです。

最後になりましたが、Nucleus の様々な形で支えてくださっている cles さんhiguchi さんまみおさん。いつもありがとうございます。

2005-11-08 Tue / Category - Nucleus

このページの先頭に戻る

Copyright 2005 - Heartfield