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

Аватар пользователя vkapas

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

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

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

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

Модули и темы:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя vkapas
vkapas 5 лет назад

Решение первого вопроса нашёл здесь 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;
}
?>

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

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

Аватар пользователя Pilotsamoleta
Pilotsamoleta 5 лет назад

Есть модуль названия не помню кажется similalterms чтото такое - он создает блок через вьюс.

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

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

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

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

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

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

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

Аватар пользователя VasyOK
VasyOK 5 лет назад

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

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

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

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

Аватар пользователя vkapas
vkapas 5 лет назад

Большое спасибо за помощь, буду разбираться.

Аватар пользователя vkapas
vkapas 5 лет назад

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

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

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

«Рекомендуемые товары» реализовал через связку  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.