freoのRSSにページからの配信をするには
- 2012/06/25 23:45
- カテゴリー:更新通知
- タグ:freoテンプレート, freoPHP, freo配布物
freoのRSSではエントリーが更新したら配信されますが、ページが更新されても配信はできません。それをページからでも配信しようという方法です。
エントリー・ページ双方配信用phpファイル
- ダウンロード
※2012/7/21 20:58にfreoのver1.9.0対応版と差し替えました。
※2013/1/3 21:58にfreoのver1.15.0対応版と差し替えました。
ページ専用のRSSを配信する場合
- 上記エントリー・ページ双方配信用phpファイルをダウンロードして解凍したら feed_all/ フォルダ内の feed_all.php を page.php にリネームして、freoの libs/freo/internals/feed/ 内にアップして下さい。
※ファイル名はpageでなくてもかまいませんが2.でリネームする.xmlファイル名と一致させてください。 - RSS1.0の場合は templates/internals/feed/default.xml、RSS2.0の場合は templates/internals/feed/rss2.xml を同じフォルダ内にコピーして page.xml にリネームします。
※RSSをカスタマイズする必要があるならこの時点で こちらの記事 を参考にして修正しておいてください(なおページではカテゴリーはありませんので導入する必要はありません)。
※ファイル名はpageでなくてもかまいませんが1.でリネームした.phpファイル名と一致させてください。 - リネームした page.xml を開いてエディタで
entry ⇒ page
entries ⇒ pages
に一括置換します。
その後で
/view/{if $page.code}{$page.code}{else}{$page.id}{/if} ⇒ /page/{$page.id}
(ページパス調整プラグイン を導入している場合は/{$page.id})
に一括置換します。 - 置換が終わった page.xml をアップすると、http://(freoのURL)/feed/page にページ専用のRSSが表示されます。
※/pageはファイル名と同じものになります。
※Feed配信時の絞り込みについて にも対応しています(ページにはカテゴリーがないのでカテゴリーでの絞り込みはできません)。 - RSSを登録しやすくするためには templates/header.html の10行目あたりにある
<link rel="alternate" href="{$freo.core.http_file}/feed" type="application/rss+xml" title="RSS" />
の部分を、
<!--{if $smarty.request.freo.mode == 'page'}--> <link rel="alternate" href="{$freo.core.http_file}/feed/page" type="application/rss+xml" title="RSS" /> <!--{else}--> <link rel="alternate" href="{$freo.core.http_file}/feed" type="application/rss+xml" title="RSS" /> <!--{/if}-->
に変更(赤字の部分を追加)します。
※上記はページが表示されるときは feed/page をその他なら feed を使用するというように条件分岐していますので適宜アレンジしてください。
エントリーとページの両方を同じRSSで配信する場合(RSS1.0の場合)
- 上記エントリー・ページ双方配信用phpファイルをダウンロードして解凍したら feed_all/ フォルダ内の feed_all.php を rss.php にリネームして、freoの libs/freo/internals/feed/ 内にアップして下さい。
※ファイル名はrssでなくてもかまいませんが4.でリネームする.xmlファイル名と一致させてください。 - templates/internals/feed/default.xml を同じフォルダ内にコピーして page.xml にリネームします。
※RSSをカスタマイズする必要があるならこの時点で こちらの記事 を参考にして修正しておいてください(なおページではカテゴリーはありませんので導入する必要はありません)。 - リネームした page.xml を開いてエディタで
entry ⇒ page
entries ⇒ pages
に一括置換します。
その後で
/view/{if $page.code}{$page.code}{else}{$page.id}{/if} ⇒ /page/{$page.id}
(ページパス調整プラグイン を導入している場合は /{$page.id})
に一括置換します。 - 再度 templates/internals/feed/default.xml を同じフォルダ内にコピーしてrss.xml にリネームします。
※RSSをカスタマイズする必要があるならこの時点で こちらの記事 を参考にして修正しておいてください。
※ファイル名はrssでなくてもかまいませんが1.でリネームした.phpファイル名と一致させてください。 - 3.で置換した page.xml を開いて次の部分を rss.xml にコピーします。
page.xml の<dc:date>{$page_update|date_format:'%Y-%m-%dT%H:%M:%S+09:00'}</dc:date>
の部分を
rss.xml の<dc:date>{$entry_update|date_format:'%Y-%m-%dT%H:%M:%S+09:00'}</dc:date>
の下に、
page.xml の<!--{foreach from=$pages|smarty:nodefaults item='page'}--> <rdf:li rdf:resource="{$freo.core.http_file}/page/{$page.id}" /> <!--{/foreach}-->
の部分を
rss.xml の</rdf:Seq>
の上に、
page.xml の<!--{foreach from=$pages|smarty:nodefaults item='page'}--> <item rdf:about="{$freo.core.http_file}/page/{$page.id}"> ~(略)~ </item> <!--{/foreach}-->
の部分を
rss.xml の最終行にある
の上に、それぞれコピーして rss.xml をアップします。</rdf:RDF>
※page.xml はアップしなくて結構です。 - アップすると、http://(freoのURL)/feed/rss にRSSが表示されます。
※/rssはファイル名と同じものになります。
※Feed配信時の絞り込みについて にも対応しています(ページにはカテゴリーがないのでカテゴリーでの絞り込みをするとエントリーのみ表示します)。
※最終更新日時がエントリーとページの2つあるのでうまく表示できない場合があるかもしれません。
※RSSリーダーによってエントリーの日時順に表示後にページが日時順に表示される場合とエントリーとページの合体した日時順に表示される場合があるみたいです。 - RSSを登録しやすくするためには templates/header.html の10行目あたりにある
<link rel="alternate" href="{$freo.core.http_file}/feed" type="application/rss+xml" title="RSS" />
に、
を追加するか変更します。<link rel="alternate" href="{$freo.core.http_file}/feed/rss" type="application/rss+xml" title="RSS" />
※追加する場合はtitleを適宜アレンジしてください。
ccc
すみません。こちらのスクリプトですが、現行のfreo Ver 1.19.3 でも有効でしょうか?
試してみたのですが、6番の
で ページのみ&ページとエントリー双方 どちらのパターンも何も表示されませんでした・・・
追伸:現行バージョンでも正式に動作する場合、有償で設置お願いできませんか?