Была задача вытащить данные из стороннего xml и вывести эти данные вьюсом, расскажу как делала, вдруг кому-то пригодится.
Использовала модули Feeds и Feeds XPath Parser, так же установила обязательные для них Data, Chaos, Job Scheduler, а Schema и Views у меня уже были включены.
Лента в вьюсе.
После включения всех этих модулей на странице /admin/build/feeds появится новый импортер Fast feed. Можно использовать настройки по умолчанию.
При клике создается нода, ниже содержания надо добавить ссылку на xml и загрузить ее например через кнопку импорт. Появляется новая таблица admin/content/data/view/feeds_data_feed_fast.
После этого во вьюсе появляется вывод Fast feed, который забирает данные из этой таблицы.
Дальше просто настроить поля вывода.
У меня поле описание вылезло как текстовый код html без форматирования, что бы вывести его корректно, надо зайти в admin/build/data и поменять настройку поля, см. скриншот:
В результате получилось тоже самое, что во встроенном модуле Aggregator, но поля можно настраивать и менять местами.
Заодно, раз уж установила такую кучу модулей решила посмотреть что еще они умеют.
Создание из ленты новых нод
Надо создать новый тип материалов, куда будут публиковаться данные, потом на /admin/build/feeds надо создать новый парсер с настройками:
на /admin/build/feeds/edit/new_parser/settings привязать новый тип
на /admin/build/feeds/edit/new_parser/parser XPATH XML PARSER Parse XML using XPath.
на admin/build/feeds/edit/new_parser/processor NODE PROCESSOR Create and update nodes from parsed content.
на admin/build/feeds/edit/new_parser/mapping создать соответствия, например такие
После этого создаете новую ноду через /node/add/feed-node
И прописываете поля для сбора данных, а также адрес ленты для трансляции.
Я пробовала на своей ленте, код xml такой
<rss version="2.0" xml:base="http://indonet.ru" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>Индия по-русски ~ путеводитель-энциклопедия - Индия</title>
<link>http://indonet.ru/taxonomy/term/8/0</link>
<description>Индия - государство в южной Азии на полуострове Индостан. Путеводитель по Индии, маршруты, статьи, фото Индии, рассказы и другие материалы на индийскую тему</description>
<language>ru</language>
<item>
<title>Наводнения в Индии- 2013 в фото</title>
<link>http://indonet.ru/blog/achadidi/4981</link>
<description><!-- google_ad_section_start --> <p><a class="lexicon-term" href="http://indonet.ru/category/bedstvie"><cite title="Стихийные бедствия: наводнения, засухи, пожары, обвалы, сход лавин, сели и другие природные чрезвычайные происшествия">Наводнение</cite></a> в Индии сейчас на первых полосах сми, а я вам его просто покажу. Хотя нет, не просто, я хочу узнать ваше мнение.<br />
Итак, наводнение в Индии уже унесло жизни нескольких тысяч человек согласно данным индийских источников, а также повлекло массовую гибель населения другого гималайского государства - Непала. </p> <!-- google_ad_section_end --><p><a href="http://indonet.ru/blog/achadidi/4981" target="_blank">читать далее</a></p></description>
<comments>http://indonet.ru/blog/achadidi/4981#comments</comments>
<category domain="http://indonet.ru/category/indiya">Индия</category>
<category domain="http://indonet.ru/category/bedstvie">бедствие</category>
<category domain="http://indonet.ru/category/foto">фото</category>
<category domain="http://indonet.ru/category/ecologiya">экология</category>
<pubDate>Mon, 29 Jul 2013 13:21:16 +0000</pubDate>
<dc:creator>achadidi</dc:creator>
<guid isPermaLink="false">4981 at http://indonet.ru </guid>
</item>
Соответственно поля в ноде должны быть такими как на скриншоте
После обновления ленты ноды начинают создаваться.
Вложение | Размер |
---|---|
screenshot_15.png | 11.79 КБ |
screenshot_16.png | 10.53 КБ |
screenshot_18.png | 10.81 КБ |
Комментарии
Единственное, что отличает вывод ленты через вьюс таким путем, это то, что мне не удалось сделать из него rss снова, впрочем может это и от лукавого Вьюс ругается: Стилю RSS-лента нужно указать стиль строки, но он не выбран.