Обработчик отношений Views 3

#drupal #drupal-views #drupal-views-relationship

#drupal #drupal-просмотры #drupal-views-relationship

Вопрос:

Я пытаюсь написать обработчик отношений для Views 3 в Drupal 7, но мне не удается даже начать.

В принципе, у меня есть куча узлов различных типов, к которым прикреплено одно и то же поле. Это поле является ссылочным полем, ссылающимся на контакт Civicrm, но это не важно, поскольку по сути, эти поля содержат просто целые числа.

Теперь, допустим, у меня есть узел с типом контента ‘story’, и его поле ссылки содержит целое число, ну, скажем, 55. Кроме того, существуют узлы типа контента ‘news’, которые также содержат ссылочный идентификатор 55.

Я хочу создать блочное представление, расположенное на странице истории, которое считывает nid узла в качестве своего аргумента, а затем с помощью отношения обнаруживает все другие узлы, которые содержат то же ссылочное целое число, что и он сам.

(На мой взгляд, sql выглядит примерно так: SELECT n.nid FROM node n INNER JOIN node n2 ON n.reference = n2.reference [Предполагая, для простоты, что данные поля хранятся в таблице узлов]).

Как мне создать обработчик представлений, который обслуживает эти отношения? Единственная документация, которую я могу найти, — это views api, который предназначен для версии 2, а не 3, и, кроме того, совершенно бесполезен. Чтение обработчиков представлений различных модулей также не помогает, а руководства по просмотру в Интернете практически отсутствуют.

Ответ №1:

Что вы делаете и в чем проблема? Похоже, у вас есть все, что вам нужно прямо здесь … nid в качестве аргумента и поле ссылки в качестве отношения. На что настроены ваши фильтры? и какой тип отображения вы используете? Вы могли бы просто заставить блок отображать некоторую информацию без сортировки, аргументов или связей, а затем с помощью модуля devel вы можете изменить файл tpl для блока на dpm ($ views) и посмотреть, к какой информации у вас есть доступ.

Сообщите нам, что вы настроили на данный момент и каковы ваши результаты, если таковые имеются. Помните, что вы можете использовать nid в качестве аргумента в предварительном просмотре, поэтому, если nid равен 213, вы можете ввести 213 в поле предварительного просмотра (убедитесь, что для отображения установлен блок, о котором вы говорите) и посмотреть, что появится.

Удачи.