今更やけど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のドキュメントを参照してください。
サンプルのまんま必要な箇所を作っただけなんで