メインコンテンツまでスキップ

KurocoでRSSを取得するにはどうしたら良いですか?

バッチ処理で定期的にRSSを取得し、Kurocoのコンテンツに追加or更新することで対応が可能です。

RSSフィードの取得

バッチ処理に次のようなSmartyコードを記述すると、RSSフィードの内容を連想配列で取得できます。

{get_file var='rss_xml' url='https://www.diverta.co.jp/RSS.rdf' save=false}{* RSSの内容を取得 *}
{xmltojson var='rss_json' xml=$rss_xml}{* XMLをJSONに変換 *}
{assign var='rss_feed' value=$rss_json|@json_decode}{* JSONを連想配列に変換 *}
ヒント

取得・変換したRSSの内容は以下の記述を追加してテストすることで確認できます。
test:{$rss_feed|@debug_print_var}

Kurocoコンテンツの更新

複数のコンテンツを一括で更新する場合、 bulk_upsert APIを使うとリクエスト数・処理時間の削減が出来ますので、必要に応じてご利用ください。

また、id_reference_allow_list のパラメータに設定した項目名をリクエストボディのtopics_idのフィールドに指定すると、 topics_idの代わりに任意の項目をキーとしてコンテンツを追加・更新できます。
例えば、以下の例ではext_1が同じコンテンツが存在する場合、更新として処理されます。

{* RSSデータをKurocoコンテンツのフォーマットに変換 *}
{assign_array var='body' values=''}
{assign_array var='body.list' values=''}
{foreach from=$rss_feed.entry item='entry'}
{assign_array var='topics' values=''}
{assign var='topics.topics_id' value='ext_1'}
{assign var='topics.subject' value=$entry.title}
{assign var='topics.ext_1' value=$entry.id}
{assign var='topics.ext_2' value=$entry.updated}
{assign var='body.list.' value=$topics}
{/foreach}

{* コンテンツの一括更新 *}
{api_internal
var='response'
status_var='status'
endpoint='/rcms-api/1/topics/bulk_upsert'
method='POST'
queries=$body
member_id=1}

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。