Drupal → Модуль Views Datasource — вывод данных в XML, JSON, RDF или XHTML

06.06.2012

Описание

Модуль Views Datasource это набор плагинов для Views, позволяющих выводить данные в одном из четырёх форматов:

  1. XML (Raw XML, OPML, Atom)
  2. JSON (Simile/Exhibit JSON, Canonical JSON, JSONP/JSON in script)
  3. RDF (FOAF, SIOC, DOAP)
  4. XHTML (hCard, hCalendar, Geo)

Установка и использование

Установка стандартная — распаковать в sites/all/modules, включить нужные модули.

Дальше создаём представление. Добавляем дисплей Page. Выбираем формат дисплея, например XML data document:

Настраиваем формат:


Добавляем нужные поля. Label у поля служит именем элемента.

Результат:

Например мне с помощью этого модуля удалось практически без кодинга создать xml трансляцию для Яндекс.Автообъявления.

Подводные камни

Пропадают имена элементов в XML

Если сайт локализован, то label-ы у полей (имена элементов) переводятся на текущий язык и из них удаляются все не латинские символы. Issue.

Чтобы этого избежать я добавляю к именам нижнее подчёркивание (скриншот), а затем в hook_preprocess_views_views_xml_style_raw() делаю простой str_replace():

$vars['xml'] = str_replace('_>', '>', $vars['xml']);

Вывод значений multi-value поля

Чтобы вывести все значения поля в виде:

<element-name>value1</element-name>
<element-name>value2</element-name>
...

можно в настройках поля в качестве разделителя прописать токен [element-name-separator] (скриншот), а затем в hook_preprocess_views_views_xml_style_raw() сделать preg_replace():

$vars['xml'] = preg_replace('#\[([a-z-]+)-separator\]#isU', '</$1><$1>', $vars['xml']);

Если прописать в разделителе xml теги, то они будут удалены при генерации xml. Issue #1079946 и #985380.

Вывод значений multi-value поля типа Image

Баг #1319714 не позволяет выводить больше одного значения поля типа Image.

Решение — поставить модуль Image URL Formatter и в настройках поля (Views) выбрать форматтер Image URL (скриншот).

Написанное актуально для
Views Datasource 7.x-1.x-dev
Похожие записи

Комментарии

А services_views как аналог не рассматривал?

Гость
08.06.2012, 11:20

Если мне представление views нужно отразить на другом сайте , есть ли что нибудь полегче чем feeds модуль?

Гость
08.06.2012, 11:45

Ну а каким образом тогда отразить вьюху с одного друпал сайта на другом?

вандам
08.06.2012, 17:41

андед, а можно при помощи этого модулька вывести в xml адреса нескольких допустим предприятий для яндекс карты? ну то есть подготовить в нужном яндекс картам формате файлик xml

А если мне надо вывести мультиполе в виде:

Антиблокировочная система (ABS)
Кондиционер
Легкосплавные диски
Магнитола

как это реализовать?

А если мне надо вывести мультиполе в виде:
[equipment]
[item]Антиблокировочная система (ABS)[/item]
[item] Кондиционер[/item]
[item] Легкосплавные диски [/item]
[item] Магнитола [/item]
[/equipment]

Как это реализовать?

Добавить комментарий