ブログサイトのrss設定

大抵のCMSであれば、簡単にRSSフィードを出す事ができる。

もちろん、DrupalでもRSSはデフォルトで出せる。しかし、かつて関わっていたkizasiのBlogramにブログを登録したら、なぜかブログの指し先がフロントページにならなかった。

RSSデフォルト設定のままだと起きてしまった不具合

気がついたら、ブログのURLがrss.xmlを指してしまっていた。

kizasi-rss.png

ブログのURLは本来https://takayuki.hagihara.tokyoで良いはずなのだが、ブログのURLにrss.xmlが入ってしまい、リンクを踏むとrssデータが表示されてしまう。人間が読むものではない。

なぜURLがrss.xmlになるのか、Drupalの設定を確認

Drupalのデフォルトのランディングページは/nodeで、実際にはFrontpageというビューがその内容である。

コンテンツの編集をした時に、「フロントページへ掲載」をチェックすると、/nodeにそのコンテンツが表示されるようになっている。まず「リスト上部に固定」指定されているコンテンツが出て、それ以外は新しい方から古い方に10件表示する。普段は意識しないが、ああ、そうなっていたのかと分かる。

このビューにはフィードというディスプレイがあり、それを選択するとrssの設定がフロントページと同じ設定になっている事が分かる。同ソート条件で10件itemを出す。ここでPreviewを確認すると、確かに/rss.xmlがchannelのlinkに設定されている。これがトラブルの原因であることがわかる。

Google(英語)で検索すると、同様の問題にひっかかった人がいたようで、issueにもなっていたが、仕様通りという結果でクローズされていた。その是非は後述するとして、とりあえずは問題解決に取り組んだ。

フィードのデフォルトの設定で、リンクされているディスプレイが「なし」になっている。「なし」になっていると、そのフィードのパス(/rss.xml)がrssヘッダーのxml:baseとchannelのlinkに設定されるという事象だ。

rss-rss.png

このchannelのlinkがkizasiのブログのエントリーのリンクになるわけで、この設定の故におかしなことが起きてしまうのが分かる。

ディスプレイにリンクを「ページ」に変更して問題をFix

このディスプレイの設定をページに変えると、当該ビューのページのパスは/nodeになっているので、xml:baseとchannelのlinkがhttps://takayuki.hagihara.tokyo/nodeに変わる。デフォルトでは、ランディングページが/nodeになっているので正しく動作するようになる。

rss-node.png

この設定でkizasi側で見直してみると以下のように変わる。

kizasi-node.png

kizasiはtakayuki.hagihara.tokyoで登録しようとすると、/rss.xmlの存在を確認してきているようだ。そのため、RSSのURLの欄は/rss.xmlが出てきて、そのchannelの情報に基づいてタイトルとlinkを拾ってそれぞれブログタイトルとブログのURLに設定しているように見える。

本当はブログのURLの方で、/nodeを取れればそれに越したことは無いが、とりあえず良い事にした。

フィードの設定再考

設定したらすぐ使えるようになっていた方が良いという考え方に立てば、最初からフィードの「ディスプレイにリンク」はページになっていた方が良いように見える。しかし、rssは必ずしもFrontpageに表示されるものと一致しているのが良いとは限らない。人間が見るのは主に本文だけど、rssで大事なのはコメント追加リンクはいらないだろうし、逆にタグは重要な情報だが、デフォルトでは出てこない。

そう考えると、例えば、kizasiに知らせたい、あるいはkizasiが取得したいと思う情報を適切にrssに流せた方が良いだろう。

真剣にrssを考えるのであれば、デフォルトのFrontpageビューを利用するのではなく、参考にした上で、手を入れた方が良いのだろう。

何でもできるというのは、手がかかるという話でもある。仕組みが分かれば柔軟性があって良いが、何も考えずに使うには難があるなあと感じたのであった。

 

タグ