Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 13.04.2012, 19:16   #1
ms9
Продвинутый
 
Регистрация: 31.05.2010
Сообщений: 65
Question Single-новость в xml из tt_news

Список новостей получаю в 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 конкретную новость?
ms9 вне форума   Ответить с цитированием
Старый 15.04.2012, 13:34   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Не обязательно использовать XML вывод самого tt_news. Можно использовать list/single но вместо обычных шаблонов сформировать xml шаблоны (ведь шаблон это просто текст, куда подставляются значений маркеров).

Из отличий с HTML шаблоном будет только необходимость добавить во все выводимые поля обработку htmlspecialchars() через stdWrap свойства. Это нужно что бы получился валидный XML.
dmartynenko вне форума   Ответить с цитированием
Старый 17.04.2012, 14:19   #3
ms9
Продвинутый
 
Регистрация: 31.05.2010
Сообщений: 65
По умолчанию

Что-то я не осилил, как откючить шаблон с дизайном. Скорее всего счас попробую создать пустой шаблон для TV и замаплю место для вывода новостей без привязки к xml-вывода на основе type.
ms9 вне форума   Ответить с цитированием
Старый 17.04.2012, 14:24   #4
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Вот вариант для отдельной страницы:

Код:
# 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
  }
}
Вместо page можете использовать pageXML и typeNum=[число]. Так можно использовать конфиг tt_news (заданный через TS) на существующей странице, но вызывая ее как
http://example.com/news-list/?type=[число]
dmartynenko вне форума   Ответить с цитированием
Старый 17.04.2012, 18:15   #5
ms9
Продвинутый
 
Регистрация: 31.05.2010
Сообщений: 65
По умолчанию

Спасибо, у меня заработала Ваша конструкция, но пришлось добавить одну стоку: 10.defaultCode = SINGLE
ms9 вне форума   Ответить с цитированием
Старый 17.04.2012, 18:24   #6
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Нужно задавать не defaultCode=, с code=
defaultCode используется если ничего не задано для code.
dmartynenko вне форума   Ответить с цитированием
Старый 17.04.2012, 19:04   #7
ms9
Продвинутый
 
Регистрация: 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>
}
ms9 вне форума   Ответить с цитированием
Старый 17.04.2012, 19:16   #8
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

В целом подход верный, но что-то вы намудрили. У вас каждый RECORDS сформировал бы свои списки сначала заголовков, потом описаний и т.д. Но вы параметры неверно для RECORDS указываете.

И RECORDS и CONTENT выбирает записи последовательно, поэтому вам нужно внутри них вывести каждую новость. Для сложного вывода больше подходит CONTENT. Как выводить поля загруженной записи задается в CONTENT.renderObj

Посмотрите пример кода тут:
http://forum.typo3.biz/showthread.ph...hlight=sitemap
Начиная с:
### show_realty_objects
60 = CONTENT

Там решается похожая задача - вывести записи в виде XML Sitemap.
dmartynenko вне форума   Ответить с цитированием
Старый 17.04.2012, 19:24   #9
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Хотя я тоже ошибся, подумал что вы список выводите. Для вывода 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
  }
  ...
}
dmartynenko вне форума   Ответить с цитированием
Старый 17.04.2012, 19:28   #10
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Еще нужно не забыть htmlSpecialChars. Ведь HTML код из новости не всегда будет одновеременно и валидным XML. И в тексте заголовка тоже может встретиться символ & и другие. Так что htmlSpecialChars не помешает для всех полей.

Код:
conf.tt_news.stdWrap.stripHtml=0
conf.tt_news.stdWrap.htmlSpecialChars = 1
dmartynenko вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли возможность выводить главную новость дня в 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


Часовой пояс GMT +4, время: 05:48.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория