3

クライアントのサイトで作業していますが、ColdFusion8に更新することはできません。私が探しているのは、カスタムタグまたはコンポーネントを介したCF8のCFFEED機能に似たものであり、何かがすでに存在する場合は、独自のリーダー/パーサーを作成することに特に熱心ではありません。

ブログからRSS2フィードを読み、タイトル、説明、リンクを表示する必要があります。できれば、フィードをハンマーで叩かないように、約5〜10分のキャッシュを設定できると思います(フィードから取得した情報は、トラフィックの多いサイトに表示されます)。

4

2 に答える 2

7

箱から出してすぐに何かを探している場合は、RIAForgeにいくつかのプロジェクトがあり、クイック検索でこれら2つが表示されますが、もっと見つけることができると思います。

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>

明らかにテストされていませんが、それでもアイデアです。これに似たものを使用して、最新のおいしいブックマークを取得しました。キャッシングに関する限り、それを処理する方法はいくつかあります。おそらく、スケジュールされたタスクを実行してこのファイルをヒットし、含まれている別のファイルに出力を書き込みます。もっと良い方法があると思いますが、それは素早いn汚い、imoです。

于 2009-08-11T01:25:24.820 に答える
0

これが少し遅れていることはわかっていますが、私の仕事でこの状況に遭遇しました (Coldfuison 7 であり、アップグレードされません)。ただし、Web サイトに埋め込まれた場所から元の投稿にリンクする必要もありました。

上記の優れた回答にもう少し追加するために、これを追加して記事に戻るリンクを追加できます(この場合はタンブラーで)ループスルーで:

<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」の代わりに「link」を使用することもできると思いますが、これでうまくいきました。これが、リンクを戻す必要がある他の誰かに役立つことを願っています。私は ColdFusion にかなり慣れていないので、(古いバージョンの CF で) これを行うためのより良い方法があるかもしれません。

于 2013-06-18T20:10:59.873 に答える