ColdFusion MX 7的CFFEED组件/自定义标签?

Jas*_*rry 3 rss coldfusion feeds cffeed

我正在客户的网站上工作,并且不能更新到ColdFusion 8.我正在寻找的是通过自定义标签或组件类似于CF8的CFFEED功能,如果已存在某些内容,我并不特别热衷于编写自己的读取器/解析器.

我需要从博客中读取RSS2源并显示标题,描述和链接.我最好能够设置大约5-10分钟的缓存,这样我就不会对饲料进行锤击(我从饲料中提取的信息将显示在高流量网站上).

jyo*_*eph 7

如果您正在寻找开箱即用的东西,RIAForge上有一些项目,快速搜索这两个,但我猜你可以找到更多:

http://cfrss.riaforge.org/

http://rssville.riaforge.org/

如果你要自己滚动(我知道你说你不喜欢),你不能像这样提出饲料请求:

<cfhttp 
  url = "http://example.com" 
  resolveurl="no"
  throwOnError = "yes"
  timeout = "10" >
</cfhttp>
Run Code Online (Sandbox Code Playgroud)

并解析结果:

<cfset feedData = CFHTTP.FileContent>
<cfset xmlData = XMLParse(feedData)>
Run Code Online (Sandbox Code Playgroud)

依次通过:

<cfset result = queryNew("title,description")>  
<cfset items = xmlSearch(xmlData,"//*[local-name() = 'item']")>

<cfloop index="x" from="1" to="#arrayLen(items)#">

    <cfif structKeyExists(items[x],"title")>
        <cfset node.title = items[x].title.XmlText>
    <cfelse>
        <cfset node.title = "">
    </cfif>

    <cfif structKeyExists(items[x],"description")>
        <cfset node.description = items[x].description.XmlText>
    <cfelse>
        <cfset node.description = "">
    </cfif>

    <cfset queryAddRow(result)>
    <cfset querySetCell(result,"title",node.title)>
    <cfset querySetCell(result,"description",node.description)>

</cfloop>
Run Code Online (Sandbox Code Playgroud)

输出:

<cfoutput query="result">
    <ul>
        <li><strong>#title#</strong> - #description#</li>
    </ul>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

显然未经测试,但仍然是一个想法.使用类似的东西来获取我最新的美味书签.就缓存而言,有几种不同的方法可以解决这个问题.我可能会运行一个计划任务来命中此文件并将输出写入包含的单独文件.我确信有更好的方法,但那就是快速的肮脏,imo.