xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Описание

Модуль 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
Похожие записи

Комментарии RSS

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

не находил такой, но судя по видео это немного не то

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

непонятно причём тут feeds

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

Спасибо, нужно потестировать, до этого думал ставить http://drupal.org/project/web_widgets

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

попробуйте

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

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

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

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

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

Вопрос может не в тему, но как реализовать вот такое мультиполе в виде:

http://www.site.ru/files/photos/679867.jpg
http://www.site.ru/files/photos/679867.jpg
..

Вопрос может не в тему, но как реализовать вот такое мультиполе в виде:
[photos]
[url]http://www.site.ru/files/photos/679867.jpg[/url]
[url]http://www.site.ru/files/photos/679867.jpg[/url]
[url]http://www.site.ru/files/photos/679867.jpg[/url]
[/photos]

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании