今更やけどColdfusionでrssの出力。
今まで要件はなかったなぁ・・・。
Coldfusionのバージョンは「9.0.1」です。
Coldfusionにはfeed出力に便利なタグがあるんでこれを利用。
Coldfusionタグ:cffeed
お知らせなんかをrssで出力するcfcを作りました。
<cfcomponent output="false" displayname="outputFeed" hint="FEED出力コンポーネント"> <cffunction name="createNewsRss" access="public"> <cfargument name="argDsn" required="true" type="string" hint="データソース名"> <cfargument name="argNewsUrl" required="true" type="string" default="" hint="ニュース参照URL"> <cfargument name="argFilePath" required="true" type="string" default="" hint="FeedXML出力パス"> <!--- FEED項目マップ(このあとで取得するクエリーの列名を設定します) ---> <cfset columnMapStruct = StructNew()> <cfset columnMapStruct.publisheddate = "OPEN_DATE"> <!--- 公開日 ---> <cfset columnMapStruct.title = "TITLE"> <!--- 見出し ---> <cfset columnMapStruct.content = "CONTENTS"> <!--- 内容 ---> <cfset columnMapStruct.rsslink = "LINK_URL"> <!--- お知らせページのリンク先URL ---> <cfset columnMapStruct.categorylabel = "CATEGORY_NAME"> <!--- カテゴリーラベル ---> <!--- お知らせをDBから公開日が新しいもの順で取得します ---> <cfquery name="qryNews" datasource="#argDsn#"> select NEWS_ID ,TITLE ,CONTENTS ,CATEGORY_NAME ,('#argNewsUrl#' + NEWS_ID) as LINK_URL ,OPEN_DATE from NEWS_TABLE where OPEN_DATE <= <cfqueryparam value="#now()#" cfsqltype="CF_SQL_TIMESTAMP"> order by OPEN_DATE desc ,NEWS_ID desc </cfquery> <cfif qryNews.recordcount gt 0> <!--- Set the feed metadata. ---> <cfset meta.title = "pg-info"> <!--- サイト名など ---> <cfset meta.link = "https://pg.4696.info/"> <!--- サイトのURLなど ---> <cfset meta.description = "in 4696.info"> <!--- サイトの説明など ---> <cfset meta.version = "rss_2.0"> <!--- Feedを出力 ---> <cffeed action="create" query="#qryNewsList#" properties="#meta#" columnMap="#columnMapStruct#" xmlvar="rssXML" outputFile = "#argFilePath#rss.xml" overwrite = "Yes" > <!--- 確認用の画面出力 <cfdump var="#XMLParse(rssXML)#"> ---> </cfif> </cffunction> </cfcomponent>
これでお知らせをrss.xmlとして任意のディレクトリに出力することができます。
詳しくは、Coldfusionのcffeedのドキュメントを参照してください。
サンプルのまんま必要な箇所を作っただけなんで