Отображение похожих узлов

Сегодня я столкнулся с проблемой с Drupal.

Я хотел бы отобразить узел (Продукт) на странице, а под этим узлом я хотел бы отобразить 3 похожих узла (Продукты). Сходное существо: наличие того же идентификатора таксономии или прикрепленного к нему «продвинутого» тега.

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

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

Кто-нибудь знает самый простой способ сделать это?

Обновление:

Я пробовал оба ответа, но я не получаю никаких сопутствующих товаров. Выполняемый SQL-запрос (идентификатор термина = 1):

SELECT node.type AS node_type, node.title AS node_title, node.nid AS nid, node.created AS node_created FROM  {node} node INNER JOIN {taxonomy_index} taxonomy_index_value_0 ON node.nid = taxonomy_index_value_0.nid AND taxonomy_index_value_0.tid = :views_join_condition_0 WHERE (( (node.type IN ('product')) AND (taxonomy_index_value_0.tid AND '') AND( (taxonomy_index_value_0.tid IN ('1')) ))) ORDER BY node_created DESC LIMIT 10 OFFSET 0

Когда я вручную выполняю запрос и удаляю AND (taxonomy_index_value_0.tid AND '') из запроса, я получаю соответствующие продукты.

Кто-нибудь знает, что вызывает добавление кода в запрос и как это исправить?

Обновление 2: я удалил параметр "Разрешить использование нескольких терминов для одного аргумента" и теперь получаю соответствующие продукты. Я не знаю, что это значит для моего сайта.

Обновление 3: кстати, я использую Drupal 7.


person Bart    schedule 20.01.2011    source источник
comment
Похоже, вы на правильном пути, с чем конкретно у вас проблемы?   -  person mirzu    schedule 20.01.2011
comment
У меня возникли проблемы с отображением похожих товаров. Я не знаю, как лучше всего справиться с этой проблемой. Я не знаю, как обрабатывать параметры, если мне вообще нужно их обрабатывать.   -  person Bart    schedule 20.01.2011


Ответы (3)


Переопределите представление узла с помощью панелей. И создайте блок просмотра с «аргументом идентификатора таксономии», вам нужно выбрать параметры аргумента по умолчанию в качестве кода PHP и разместить этот код.

$node = node_load(arg(1));
if($node) {
    foreach($node->taxonomy as $term) {
        $term = $term->tid;
        return $term;
    }   
}

Я только что запустил сайт, используя магию панелей + просмотров. http://sgigulf.org/culture/synopsis-of-performers-showcased-by-sgi-gulf

person noussh    schedule 20.01.2011
comment
Не могли бы вы уточнить немного больше, пожалуйста? Я новичок в друпале. - person Bart; 20.01.2011
comment
С помощью панелей вы можете переопределить отображение узла по умолчанию. Перейдите в admin/build/pages, включите «просмотр узла», нажмите «Изменить» и добавьте вариант. нажмите «Правила выбора» и выберите тип узла, который вы хотите переопределить. Если вы все сделали правильно, вы должны получить пустую страницу для вашего узла. Теперь добавьте содержимое вашего узла с одной стороны и разместите свои представления с аргументом по умолчанию с помощью PHP-кода, упомянутого выше. Надеюсь, это поможет. - person noussh; 20.01.2011

Взгляните на модуль RelatedContent. Ссылки на модуль и пару туториалов ниже:

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

person sillygwailo    schedule 20.01.2011

У вас может быть несколько терминов, когда вы переходите на

$node = node_load(arg(1));
if ($node) {
    $ret = array();
    foreach ($node->taxonomy as $term) {
        $ret[] =  $term->tid;
    }   
    return implode('+', $ret);
}
return '';

«+» в implode — это ИЛИ. Если вы хотите И, вместо этого используйте ','

person yunzen    schedule 13.05.2011