Как я использую контекстные фильтры и отношения, чтобы показать связанные статьи?

8

Итак, я пытался выяснить это большую часть дня. В какой-то момент он работал в превьюере, но теперь, похоже, не работает вообще.

Вариант использования: каждый опубликованный узел с типом контента «Статья» поставляется с полем Таксономия для включенных тегов. То, что я пытаюсь сделать, это создать блок, который появится под статьей с серией миниатюр, которые ссылаются на другие статьи. Эти статьи в свою очередь связаны на основе тегов, используемых в каждой статье.

Итак, вопрос в следующем:

  1. Что было бы хорошим способом настроить это с помощью контекстных фильтров и представлений, чтобы само представление автоматически видело field_tags, используемые в качестве ссылки на термин таксономии в статье, и позволяло ли оно автоматически отображать выходные данные на основе тегов каждой статьи?

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

Джон Райли
источник
Это, наверное, самый простой способ, я пытался сделать то же самое, и иногда мы переосмысливаем вещи. ;) drupal.stackexchange.com/questions/69426/…
kyletaylored

Ответы:

1

Я реализовал то же самое в одном проекте в Drupal 7 для отображения продуктов того же каталога.

Вы можете создавать представления содержимого статьи и можете создавать контекстные фильтры для тегов. Он будет отображать всю статью этих тегов.

Вы можете следовать ниже шаг:

  • Добавьте контекстный фильтр тегов. Установлен переключатель «Задать значение по умолчанию».
  • Выберите «Идентификатор термина таксономии из URL» в раскрывающемся списке типов.
  • Установлен флажок «Загружать фильтр по умолчанию со страницы узла».
  • Установлен флажок «Ограничить термины по словарю».
  • В разделе Vocabularies установите флажок Vocabularies (теги), который вы хотите добавить фильтр в представления.
  • В разделе more установлен флажок «Разрешить несколько значений», чтобы несколько тегов могли использовать фильтр для термина.

Вы можете найти изображение ниже для справки.

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

  • Добавить контент: Nid контекстный фильтр в представлениях.
  • Установите флажок «Предоставить значение по умолчанию» и выберите «Content id from url» в раскрывающемся списке типов.
  • Под разделом more в контекстном фильтре установлен флажок «Исключить».

показать связанный продукт в представлениях той же категории

Джаендра Каинтола
источник
0

Вы пытались использовать подобное по условиям ?

(править) Проблема с аргументами таксономии Views заключается в том, что таксономия теперь содержится в поле, а не в каком-либо коде модуля таксономии voodoo. Из-за этого некоторые из API таксономии в Drupal 6 недоступны в Drupal 7.

Я использую модуль Context с аргументами Views из Context . Я сделал патч, который портировал его на Drupal 7. Это дает еще один параметр в контекстном фильтре в представлениях, чтобы получить аргументы, основанные на контексте или загруженных объектах и ​​сущностях в то время.

Это особая функция:

function taxonomy_node_get_terms($node, $key = 'tid') {
static $terms;
  if (!isset($terms[$node->vid][$key])) {
    $query = db_select('taxonomy_index', 'r');
    $t_alias = $query->join('taxonomy_term_data', 't', 'r.tid = t.tid');
    $v_alias = $query->join('taxonomy_vocabulary', 'v', 't.vid = v.vid');
    $query->fields( $t_alias );
    $query->condition("r.nid", $node->nid);
    $result = $query->execute();
    $terms[$node->vid][$key] = array();
    foreach ($result as $term) {
      $terms[$node->vid][$key][$term->$key] = $term;
      }
  }
return $terms[$node->vid][$key];
}

Он не должен был быть удален из ядра Drupal. Он найдет термины таксономии, которые вы используете, если вы передадите ему текущий объект узла.

Адам С
источник
Нет, я посмотрю, хотя. Моя главная проблема заключается в том, что я не хочу чрезмерно зависеть от модулей, поскольку это может иногда вызывать небольшую нестабильность в производственной среде.
Джон Райли
Подобные термины просто создают представление, которое можно клонировать. затем просто отключите его, когда закончите.
Итак, где именно я загружаю эту функцию? Нужно ли где-то модифицировать модуль таксономии?
Джон Райли