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

时间:2009-08-11 01:19:56

标签: coldfusion rss feeds cffeed

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

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

2 个答案:

答案 0 :(得分:7)

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

http://cfrss.riaforge.org/

http://rssville.riaforge.org/

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

<cfhttp 
  url = "http://example.com" 
  resolveurl="no"
  throwOnError = "yes"
  timeout = "10" >
</cfhttp>

并解析结果:

<cfset feedData = CFHTTP.FileContent>
<cfset xmlData = XMLParse(feedData)>

循环:

<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>

输出:

<cfoutput query="result">
    <ul>
        <li><strong>#title#</strong> - #description#</li>
    </ul>
</cfoutput>

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

答案 1 :(得分:0)

我知道这有点晚了,但在我的工作中遇到了这种情况(Coldfuison 7并且不会升级)。但还需要从我们网站上的嵌入位置链接回原始帖子。

只是为了上面的答案添加一点,你可以添加这个链接回到文章(在我们的案例中的翻转者) 在循环中:

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

<cfset querySetCell(result,"guid",node.guid)>

在输出中:

<a href="#guid#">#title#</a>

我相信你也可以使用“链接”代替“guid”,但这对我有用。 我希望这可能会帮助其他需要链接的人。我对ColdFusion很新, 并且可能有更好的方法(在旧版本的CF上)。

相关问题