2009-08-11 27 views
3

我正在客戶端的網站上工作,並且更新到ColdFusion 8不是一個選項。我正在尋找的東西類似於CF8的CFFEED功能,通過自定義標籤或組件,並且如果已經存在,我並不特別熱衷於編寫我自己的讀取器/解析器。ColdFusion MX 7的CFFEED組件/自定義標籤?

我需要閱讀博客中的RSS2訂閱源並顯示標題,說明和鏈接。最好我可以設置一個大約5-10分鐘的緩存,所以我不會敲擊飼料(我從飼料中提取的信息將顯示在高流量的網站上)。

回答

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> 

顯然未經檢驗的,但一個想法仍然。使用類似這個來獲得我最新的美味書籤。就緩存而言,有幾種不同的方式來處理這個問題。我可能會運行一個計劃任務來打這個文件並將輸出寫入一個包含的單獨文件。我相信有更好的方法,但這是骯髒的,快速的。

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上)。