2012-01-07 2 views
2

Мы имеем функцию тянуть RSS-каналы и отображать сообщение на странице ColdFusion с помощью этого кода:Функция cffeed: показать только последнее сообщение?

<cfset rssUrl = "rss1"> 
<cffeed action="read" source="#rssUrl#" query="fitness" properties="info"> 

<cfset rssUrl2 = "rss2"> 
<cffeed action="read" source="#rssUrl2#" query="nutrition" properties="info"> 

<cfif #fitness.PUBLISHEDDATE# gt #nutrition.PUBLISHEDDATE#> 
<cfset entries="fitness"> 
<cfelse> 
<cfset entries="nutrition"> 
</cfif> 

Выход осуществляется через:

<cfoutput query="#entries#"> 

Проблема, RSS канал имеет несколько постов и мы хотим только показать его. Любые мысли о том, как заставить его вытащить и отобразить только последнее сообщение? (Мы хотим, чтобы в фиде было несколько сообщений, поэтому прямо сейчас наше не идеальное решение состоит в том, чтобы установить максимальные столбцы на канал на 1)

+1

В стороне, хэштеги в вашем 'cfif' не нужны. Это то, что вам нужно: ''. – ale

ответ

2

cfoutput/query=".." будет охватывать весь запрос. Если вы хотите только сделать первый ряд, используйте:

<cfoutput> 
Title from row 1: #somequery.title[1]# 
</cfoutput> 

В основном - обозначение массива на колонке. Имеют смысл?

+0

Вы также можете просто добавить maxRows = "1" в свой код. Это «чувствует» неправильно, но оно работает. ;) –

+0

Gotcha по обоим пунктам. Есть ли какая-то фактическая причина, по которой maxRows нельзя использовать здесь? Честно говоря, это проще ... – Nietzsche

+0

Я бы выбрал опцию 'maxrows =" 1 "'. Меньше кода для изменения, если вы хотите изменить его, чтобы отобразить две строки. – ale

2

Нет ничего плохого в Ray's answer, но вот некоторые другие варианты.

<cfoutput query="#entries#" maxrows="1"> 

предлагает наименьшую нарушения в существующий код и, если вы решите изменить количество отображаемых строк (например, с помощью настроек пользователя) это легко изменить.

ИЛИ

При копировании объекта запроса, а не имя запроса (который на самом деле не копия, но копия по ссылке)

<cfset entries = fitness> 

вместо

<cfset entries = "fitness"> 

вы можете это сделать

<cfoutput> 
    #entries.columnName1# 
    #entries.columnName2# 
    <!--- etc. ---> 
</cfoutput> 

, который по умолчанию отображает только первую строку запроса.

Смежные вопросы