2009-08-11 2 views
3

저는 클라이언트의 사이트에서 작업 중이며 ColdFusion 8로 업데이트하는 것은 옵션이 아닙니다. 내가 찾고있는 것은 사용자 정의 태그 나 컴포넌트를 통해 CF8의 CFFEED 기능과 비슷한 것으로, 뭔가가 이미 존재하는 경우 독자/파서를 작성하는 데별로 관심이 없습니다.ColdFusion MX 7 용 CFFEED 구성 요소/사용자 정의 태그?

블로그에서 RSS2 피드를 읽고 제목, 설명 및 링크를 표시해야합니다. 가급적이면 피드를 망치는 일이 없도록 약 5-10 분의 캐시를 설정할 수 있습니다 (피드에서 가져온 정보는 트래픽이 많은 사이트에 표시됨).

답변

7

당신이 상자 밖으로 무언가를 찾고 있다면 RIAForge,이 두 가지를 가져 빠른 검색에 몇 가지 프로젝트가있다,하지만 난 당신이 더 찾을 수 같은데요 :

http://cfrss.riaforge.org/

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

당신이 (당신이 당신이 선호하지 않는 것을 알고있는) 자신의 압연 가입해서, 당신은 너무 같은 공급에 대한 요청을 만들 수 없습니다

및 분석 결과 :

<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 더러운 것입니다.

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"대신 "link"를 사용할 수도 있습니다. 그러나 이것은 저에게 효과적이었습니다. 이것이 링크해야하는 다른 사람에게 도움이되기를 바랍니다. ColdFusion에 익숙하지 않은 입니다. 이전 버전의 CF에서 더 좋은 방법이 될 수 있습니다.

관련 문제