![]() |
Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
|
#1 |
|
Продвинутый
Регистрация: 31.05.2010
Сообщений: 65
|
Список новостей получаю в xml при помощи нижеследующего TS.
pid_list = 10 singlePid = 20 archiveTypoLink = 30 plugin.tt_news.displayXML { xmlLimit = 15 rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl title_stdWrap.htmlSpecialChars = 1 title_stdWrap.htmlSpecialChars.preserveEntities = 1 subheader_stdWrap.stripHtml = 1 subheader_stdWrap.htmlSpecialChars = 1 subheader_stdWrap.htmlSpecialChars.preserveEntitie s = 1 subheader_stdWrap.crop = 100 | ... | 1 subheader_stdWrap.ifEmpty.field = bodytext xmlLastBuildDate = 1 } rss2 = PAGE rss2 { typeNum = 110 10 > 10 < plugin.tt_news 10.pid_list > 10.pid_list = {$pid_list} 10.singlePid = {$singlePid} 10.defaultCode = XML 10.datetimeDaysToArchive = 1 10.displayXML.xmlFormat = rss2 config { disableAllHeaderCode = 1 additionalHeaders = Content-type:text/xml no_cache = 1 xhtml_cleaning = 0 } } Подскажите, пожалуйста, а возможно ли получить в xml конкретную новость? |
|
|
|
|
|
#2 |
|
Senior Member
|
Не обязательно использовать XML вывод самого tt_news. Можно использовать list/single но вместо обычных шаблонов сформировать xml шаблоны (ведь шаблон это просто текст, куда подставляются значений маркеров).
Из отличий с HTML шаблоном будет только необходимость добавить во все выводимые поля обработку htmlspecialchars() через stdWrap свойства. Это нужно что бы получился валидный XML. |
|
|
|
|
|
#3 |
|
Продвинутый
Регистрация: 31.05.2010
Сообщений: 65
|
Что-то я не осилил, как откючить шаблон с дизайном. Скорее всего счас попробую создать пустой шаблон для TV и замаплю место для вывода новостей без привязки к xml-вывода на основе type.
|
|
|
|
|
|
#4 |
|
Senior Member
|
Вот вариант для отдельной страницы:
Код:
# page content
# XML from tt_news
page {
typeNum = 0
10 >
10 < plugin.tt_news
config {
index_enable = 0
disableAllHeaderCode = 1
additionalHeaders = Content-type:text/xml
metaCharset = cp1251
no_cache = 1
xhtml_cleaning = 0
admPanel = 0
debug = 0
}
}
http://example.com/news-list/?type=[число] |
|
|
|
|
|
#5 |
|
Продвинутый
Регистрация: 31.05.2010
Сообщений: 65
|
Спасибо, у меня заработала Ваша конструкция, но пришлось добавить одну стоку: 10.defaultCode = SINGLE
|
|
|
|
|
|
#6 |
|
Senior Member
|
Нужно задавать не defaultCode=, с code=
defaultCode используется если ничего не задано для code. |
|
|
|
|
|
#7 |
|
Продвинутый
Регистрация: 31.05.2010
Сообщений: 65
|
Не смог прикрутить кастомный шаблон, конструкция из руководства
plugin.tt_news { templateFile = fileadmin/my_templates/tt_news.html } не сработала, поэтому пришлось извратиться вот так. page > page = PAGE page { config.disableAllHeaderCode = 1 config.additionalHeaders = Content-type:text/xml config.admPanel = 0 config.xhtml_cleaning = 0 10 = TEXT 10.value = Enter variable here 10.noTrimWrap = || | 10.wrap = <title>|</title> 20 = RECORDS 20 { source = {GPvar:tx_ttnews|tt_news} source.insertData = 1 tables = tt_news conf.tt_news > conf.tt_news = TEXT conf.tt_news.field=title wrap = <item><title>|</title> } 30 = RECORDS 30 { source = {GPvar:tx_ttnews|tt_news} source.insertData = 1 tables = tt_news conf.tt_news > conf.tt_news = TEXT conf.tt_news.field = bodytext conf.tt_news.stdWrap.stripHtml=0 wrap = <description>|</<description> } 40 = RECORDS 40 { source = {GPvar:tx_ttnews|cat} source.insertData = 1 tables = tt_news_cat conf.tt_news_cat > conf.tt_news_cat = TEXT conf.tt_news_cat.field = title wrap = <category>|</category> } # skipped 90 = RECORDS 90 { source = {GPvar:tx_ttnews|tt_news} source.insertData = 1 tables = tt_news conf.tt_news > conf.tt_news = TEXT conf.tt_news.field = crdate wrap = <pubDate>|</pubDate></item> } wrap = <?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel>|</channel></rss> } |
|
|
|
|
|
#8 |
|
Senior Member
|
В целом подход верный, но что-то вы намудрили. У вас каждый RECORDS сформировал бы свои списки сначала заголовков, потом описаний и т.д. Но вы параметры неверно для RECORDS указываете.
И RECORDS и CONTENT выбирает записи последовательно, поэтому вам нужно внутри них вывести каждую новость. Для сложного вывода больше подходит CONTENT. Как выводить поля загруженной записи задается в CONTENT.renderObj Посмотрите пример кода тут: http://forum.typo3.biz/showthread.ph...hlight=sitemap Начиная с: ### show_realty_objects 60 = CONTENT Там решается похожая задача - вывести записи в виде XML Sitemap. |
|
|
|
|
|
#9 |
|
Senior Member
|
Хотя я тоже ошибся, подумал что вы список выводите. Для вывода single рабочаю конструкция. Но очень усложненная. CONTENT был бы локоничней и понятней.
Вот так получилось бы тоже: Код:
# page content
# XML from tt_news
page {
typeNum = 0
10 >
10 < plugin.tt_news
10 {
templateFile = fileadmin/my_templates/tt_news.html
... tt_news setup
}
...
}
|
|
|
|
|
|
#10 |
|
Senior Member
|
Еще нужно не забыть htmlSpecialChars. Ведь HTML код из новости не всегда будет одновеременно и валидным XML. И в тексте заголовка тоже может встретиться символ & и другие. Так что htmlSpecialChars не помешает для всех полей.
Код:
conf.tt_news.stdWrap.stripHtml=0 conf.tt_news.stdWrap.htmlSpecialChars = 1 |
|
|
|
![]() |
| Опции темы | |
| Опции просмотра | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Есть ли возможность выводить главную новость дня в tt_news через SINGLE по умолчанию? | ov.lovyannikov | Общие вопросы | 15 | 15.11.2012 14:33 |
| tt_news и ссылки на категории в Single View | dmartynenko | Общие вопросы | 3 | 01.09.2008 19:42 |
| tt_news, single и меню категорий | NiKRON | Общие вопросы | 2 | 02.07.2007 15:00 |
| пропадание ссылки на новость tt_news | korolev | Общие вопросы | 9 | 24.03.2007 03:36 |
| как за место html страницы получить xml | -=STYDENT=- | TYPO3: SEO и статистика посещений | 2 | 12.07.2006 11:13 |