Drupalで個別ページのHEADに全体RSSのLINK情報が入るようにしてみる
Drupalでは、トップページにはRSSへのリンクがHEADに入りますが、個別のページには入らないようですね。これは意図的な仕様なのでしょうか? ちょっと謎。
とりあえず影響が少ないであろうcommentrssに手を入れて、個別のページでもHEADに <link rel="alternate" type="application/rss+xml" title="RSS" href="http://drupal.cre.jp/rss.xml" />が入るようにしてみました。
個別のページにRSSが入らないことに気がついたのは、2007-02-24にPing一括配信サービス Pingoo!にping(weblogUpdates.ping)が送れないとエラーが出て、Pingoo!にログインしてエラーメッセージを確認すると「headタグ内にてRSSファイルが指定されていません。ご利用のブログを再度確認してください。」となっていたためでした。
あわてて確認してみますと、確かに、個別のページには <link rel="alternate" type="application/rss+xml" title="RSS" href="http://drupal.cre.jp/rss.xml" /> が入っていないわけです。
おそらくはエラーチェックを強化して「送信されたページの中にLINKタグでRSSへのリンクが書かれていない場合には不正な登録とみなす」とか、そんな風にしてみたのでしょうかね。一時間後にはpingできるようになっていましたので、同様に個別ページに入れていないblogツールは色々あったのかも知れません。
その時には、更新Pingがエラーになるのは解決したので緊急ではないと思い放置していました。しかし2007-02-26にアクセスログを何の気なしに眺めていて、不思議な現象に気がついたんですね。Google DesktopでFeedをチェックしている人で、コメントのRSSやタクソノミーのRSSだけをチェックしているようにみえる人がいたのでした。
どうやら全体のRSSは個別のページのHEADには入らないものの、コメントのRSSだけはcommentrssモジュール(DrupalのコメントRSS(commentrss)モジュール導入)が、すべてのページのHEADに入れているようでした。
そしてログを検討した感じですと、ページをみて「このblogのRSSを登録しよう」としたときに、トップ以外で自動でRSSを取得抽出したせいなのではないかと考えられました。自動で便利なソフトを利用して「これから当該サイトを巡回するようにしよう」とした人が、コメントのRSSとかタクソノミーのRSSのみをチェックしているという不幸な出来事が発生しているわけです。これは機会損失なのでまずいと焦りました。
さてどこでLINKのデータを書き換えているのだろうと読んでみますと、drupal_add_linkという関数でHEADにLINKタグを投入するようになっていました。
node.moduleを読むと、全体RSSは、node_page_defaultの時だけしか入らないようになってるようですね。node.moduleを書き換えるかなあと思いましたが、コアのモジュールに手を入れるのは、アップグレードが面倒かもしれないと思い直しまして、commentrssに寄生することにしてみました。
drupal_add_link(array('rel' => 'alternate',
'type' => 'application/rss+xml',
'title' => t('All comments'),
'href' => url('crss', NULL, NULL, TRUE)));
の前に
drupal_add_link(array('rel' => 'alternate',
'type' => 'application/rss+xml',
'title' => t('RSS'),
'href' => url('rss.xml', NULL, NULL, TRUE)));
を追加しただけです。いちおうまあ、これでnodeとtaxonomyのHEADに全体RSSが入るようになったようです。
しかし、これだとトップページに二重に出てしまうんですな。まあ不具合がなければこれでもいいか。抑止するならnode.moduleのnode_page_defaultで、drupal_add_linkしている部分をコメントアウトすればいいはずですね。
この記事へのトラックバックURL:
ここのサイトで使っているdrupalのデフォルトでは、RSSへのリンクは個別の投稿画面などには出ない。
Pingoo!に登録できないのがそのためらしいので、直してみた。せっかくphpなのにほとんど
最近のコメント
6時間 49分前
2週 3日前
2週 3日前
2週 6日前
4週 3日前
5週 4日前
6週 4日前
7週 6日前
7週 6日前
8週 3日前