[РЕШЕНО] Ubercart: блок "Рекомендуемые товары" с помощью Views и Taxonomy... и CCK

Главные вкладки

Аватар пользователя vkapas vkapas 27 мая 2013 в 2:32

Дано: интернет-магазин на D6 + Ubercart. Каталог товаров сделан с помощью Таксономии.

Требуется: сделать блок "Рекомендуемые товары" ("Вас может заинтересовать", "Советуем посмотреть") с помощью Views. В этом блоке нужно выводить товары из этой же категории, то есть товары с этим же термином (или терминами, если у текущего товара их несколько).

Проблема: как это реализовать с помощью Views? Когда-то делал что-то подобное с помощью Аргументов, но за давностью лет всё вылетело из головы. Наведите в нужную сторону. Где какие связи поставить?

Бонус: в идеале требуется настраиваемый блок "Рекомендуемых товаров". Такой, чтобы для определённых товаров можно было изменять "Рекомендуемые товары" вручную. С помощью Views такое возможно?

Комментарии

Аватар пользователя vkapas vkapas 27 мая 2013 в 18:30

Решение первого вопроса нашёл здесь http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-cre....

Вкратце: в представление добавляем Аргумент Таксономия: ID термина (ID термина таксономии) и настраиваем поля:

Если аргумента нет, то: Предоставить аргумент по умолчанию
Настройки аргумента по умолчанию
Тип аргумента по умолчанию: PHP-код

<?php$node = node_load(arg(1));
if ($node) {
foreach($node->taxonomy as $term) { $terms[] = $term->tid; }
return implode('+', $terms);
} else { return; }?>

Разрешить несколько терминов в аргументе: галка, если для вас это актуально
Устранить дубликаты: галка

При определённых условиях в "Рекомендуемом блоке" может появиться товар, на странице которого этот блок расположен. Так как это не есть хорошо, его оттуда нужно убрать. Для этого:

Добавляем второй Аргумент Материал: Nid (ID материала), выбираем условие
Если аргумента нет, то: Предоставить аргумент по умолчанию
Настройки аргумента по умолчанию
Тип аргумента по умолчанию: PHP-код

<?php$node = node_load(arg(1));
if($node){
return $node->nid;
} else {
return null;
}?>

И в условиях Аргумента в самом низу ставим галку Исключить аргумент. Готово!

Однако второй вопрос по-прежнему актуален.

Аватар пользователя VasyOK VasyOK 27 мая 2013 в 12:14

"vkapas" wrote:
Бонус: в идеале требуется настраиваемый блок "Рекомендуемых товаров". Такой, чтобы для определённых товаров можно было изменять "Рекомендуемые товары" вручную. С помощью Views такое возможно?

Возможно так:
1-й блок "Похожие товары" через таксономия + similarterms
2-й блок "В комлекте с этим товаром рекомендуем". Через рефернес задаем что мы рекомендуем и выводим это с помощью viewfield на странице товара.

Еще можно сделать чекбокс в товаре и выводить только один из этих блоков в зависимости от того нажат ли этот чекбокс. Модулем context либо прописав условие в node.tpl.php для ноды товара.

Аватар пользователя vkapas vkapas 27 мая 2013 в 15:05

VasyOK wrote:

Возможно так:
...
2-й блок "В комлекте с этим товаром рекомендуем". Через рефернес задаем что мы рекомендуем и выводим это с помощью viewfield на странице товара.

Не поясните про референс и viewfield?
VasyOK wrote:

Еще можно сделать чекбокс в товаре и выводить только один из этих блоков в зависимости от того нажат ли этот чекбокс. Модулем context либо прописав условие в node.tpl.php для ноды товара.

Поясните, пожалуйста, подробнее, как сделать такой чекбокс? Не имел раньше опыта работы с Context.

Аватар пользователя VasyOK VasyOK 28 мая 2013 в 11:50

Задача не для новичка. Заходите на страницы модулей и там ищите документацию. Также часто в архиве с модулем есть Ридми.

Инструкции вот:
viewfield
http://drupal.org/node/1210142

context
http://www.youtube.com/results?search_query=drupal+7+context&oq=dru&gs_l...

Как сделать поле чекбокс в типе материала вам рассказать? Создайте поле, тип "Логический". Дальше разберетесь.

Аватар пользователя vkapas vkapas 24 августа 2013 в 1:11

Пожалуй, отпишусь в эту тему конечное решение, возможно, кому-то ещё пригодится.

Отображение дополнительных товаров в итоге разделил на две части: Похожие товары и Рекомендуемые товары.

«Похожие товары» выводятся отдельным блоком так, как написано в первом сообщении темы.

«Рекомендуемые товары» реализовал через связку Viewfield + CCK Node Reference (в D6 — в составе CCK, для D7 используется References) и BackReference (создаёт обратные ссылки (которые CCK Node Reference по умолчанию не создаёт), например — с ноды B на A, если с A на B ссылка установлена). Ссылку на подробную инструкцию выше давал VasyOK, за что ему огромное спасибо, продублирую: http://drupal.org/node/1210142.

Так как мне попался самописный шаблон, вывод «рекомендуемых товаров» сделал с помощью несложного кода
<?php print $node->field_references_view[0]['view']; ?>
(вместо references_view, естественно, указываем своё название поля, созданного с помощью Viewfield)

Вывод легко настраивается с помощью Views.