Drupal Views: Получить узлы с такой же таксономией, что и текущий узел - PullRequest
2 голосов
/ 13 октября 2010

У меня есть Content-Type с таксономическими терминами. Это список выбора, поэтому он может иметь только одну таксономию - по крайней мере, из этого словаря. Теперь мне нужно построить представление, в котором перечислены все узлы с одинаковой таксономией.

Думал, что это не будет слишком сложно, так как звучит довольно просто. И все же я не могу заставить его работать. Есть идеи? Я пытаюсь избежать написания модуля для этого.

Ответы [ 5 ]

10 голосов
/ 13 октября 2010

Хотя это было технически возможно с представлениями 2, как описано в некоторых других ответах, представления 3 имеют встроенную интеграцию.

Вы можете создать аргумент для идентификатора термина таксономии и затем выбрать «Предоставить аргумент по умолчанию» . Это даст вам возможность для «Идентификатор термина таксономии из URL» и «Загрузка аргумента по умолчанию со страницы узла ...»

Это позволит вам взять таксономию страницы и передать ее в качестве аргумента в ваш блок просмотра.

Примечание: Views 3 в настоящее время находится в Alpha 3, но, по моему опыту, находится в относительно стабильном состоянии, и я использую его на рабочих сайтах. Если у вас есть функции, подобные приведенной выше, которые вы считаете полезными, пожалуйста, используйте его, протестируйте и отправляйте сообщения об ошибках / исправлениях, если у вас возникнут какие-либо проблемы!

4 голосов
/ 13 октября 2010

Этот ответ работает в Views версии 2 или выше. Для начала необходимо установить приложение Views (http://drupal.org/project/views_attach). Пожалуйста, прочитайте о приложении View, прежде чем продолжить. Вложение просмотров лучше всего объясняется этим видео http://mustardseedmedia.com/podcast/episode37

Теперь перейдем к просмотру вложений. Пожалуйста, включите модуль представления просмотров, прежде чем продолжить. По существу, Views attach присоединяет представление в конце узла. В нашем случае, на наш взгляд, будет список других статей с таким же термином.

Нам, по сути, нужно будет «передать» таксономический термин узла в представление. Пусть имя вашего словаря будет называться MyVocab.

Шаги, чтобы сделать представление.

  1. Позволяет вызвать представление display_other_articles_with_same_taxonomy.
  2. Добавить отображение типа Node Content (доступно после включения просмотра видов). Это отображение, подобное отображению блоков и страниц, но со специальной возможностью присоединения к узлу.

Выполните следующие настройки в Node Content Display

Node content settings
Node types: [select the content types you are interested in seeing the list of nodes with same taxonomy term]
Build modes: Teaser, Full node
Arguments: token
Show title: No

Вы должны выбрать Use tokens from the node the view is attached to в разделе Аргументы. Пусть токен будет [term-id]. Это "ID термина верхней таксономии" . Это очень важно!! По сути, вы будете передавать термин таксономии узла из MyVocab (см. http://groups.drupal.org/node/11788#comment-38332). Если он имеет наименьший вес, словарь таксономии будет первым словарем в разделе таксономии формы редактирования вашего узла Добавить аргумент Taxonomy: Term Id.

Добавьте интересующие вас поля, например, Node: Title. Убедитесь, что Node: Title превращен в гиперссылку, отметив Link this field to its Node

Так что это представление будет делать:

  1. Возьмите термин таксономии из словаря MyVocab в узле, который в данный момент просматривается
  2. Передать это в качестве аргумента представлению display_other_articles_with_same_taxonomy
  3. Список всех узлов, которые имеют такой же термин таксономии, что и отображаемый узел.

Вот и все!

Если вы используете Views 3 (в настоящий момент в alpha3 на момент написания) и , вам нужен блок (сейчас статьи имеют одинаковый термин таксономии в конце тела узла), вы можете сделать это следующим образом:

  1. Забудьте о представлениях прикрепите ... его не требуется
  2. Добавить вид блока. Он должен содержать тот же аргумент, поля и фильтры, что и приведенные выше инструкции для дисплея Node Content.
  3. Вам нужно немного изменить настройки аргумента Taxononomy: Term Id: в Action to take if argument is not present: выберите [x] Provide Default Argument. Выберите [x] Taxonomy Term ID from URL. Теперь убедитесь, что [] Load default argument from term page не выбран, [x] Load default argument from node page, thats good for related taxonomy blocks. Также [x]Limit terms by vocabulary и выберите словарь Series.
  4. Убедитесь, что вы назвали блок и поместили его в соответствующий регион.

Примечание: Этот ответ является подмножеством ответа, который я предоставил на Как просто показать блок NodeQueue на включенных узлах? В этом сценарии требовалось, чтобы соответствующие статьи были явно выбраны и перечислены в определенном порядке. Он немного сложнее и использует Nodequeues, которые нам здесь вообще не нужны.

2 голосов
/ 13 октября 2010

Использовать отношения

  1. Узел 1 -> Отношение 1 -> Термин // Это будут отношения-> Таксономия-> Термин
  2. Термин -> Отношения 2 -> Узел 2 // Это будут отношения-> узел-> узел
  3. Аргумент NID для фильтрации NODE 1
  4. Поля или полный просмотр узла в Отношении 2 (вы увидите поле выбора в форме добавления поля, чтобы определить, какой NODE использовать)
1 голос
/ 13 октября 2010

Просмотров дает вам возможность добавлять фильтры. Щелкните знак «плюс» в области фильтров пользовательского интерфейса администратора представлений, выберите в списке таксономию, отметьте термин или идентификатор и введите значение, по которому необходимо выполнить фильтрацию.

РЕДАКТИРОВАТЬ (для явных инструкций):

  1. Сначала добавьте необходимые поля, которые вы хотите отобразить, в разделе полей, которые вы хотите отобразить из узлов, которые вы пытаетесь отфильтровать, таких как заголовок узла и т. Д.

  2. В разделе Аргументы щелкните знак плюса и выберите Таксономия

  3. Проверьте таксономию: термин и нажмите Добавить

  4. Нажмите Обновить

В вашей области предварительного просмотра проверьте это, добавив аргумент и нажав кнопку предварительного просмотра. Если это не работает, к вашим узлам не присоединена таксономия, поврежден модуль представлений или вы не выполнили указания.

0 голосов
/ 07 августа 2012

Только одна вещь о:

Режимы сборки: тизер, полный узел

Лучше попробуйте это:

Режимы сборки: полный узел

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

...