Вы здесь

0
  • Есть множество commerce товаров плюс множество категорий и подкатегорий в таксономии.
  • Из таксономии сформировано меню с подкатегориями (4 уровня)
  • К каждому товару может быть приписана лишь одна категория (отсюда косяк с тем, что чтобы добавить к товару несколько категорий - было создано несколько товаров (одинаковых), каждый из которых был прикреплен к нужной категории
  • На страницах категорий и подкатегорий через views выводятся товары
  • При выборе категории выводятся товары также и из подкатегорий

И вот собственно где проблема: При выборе категории у которой в подкатегориях содержатся товары с одинаковым тайтлом ( по сути - это один и тот же товар) они выводятся друг за другом. Как можно избежать этого дублирования?

Версия Drupal: 
7.x
Связанные проекты: 
ViewsDrupal Commerce
Вопрос задан 04.02.2015 - 23:23

Ответы

0

К каждому товару может быть приписана лишь одна категория

Почему? Что мешает у одного товара иметь сколько угодно категорий?

(отсюда косяк с тем, что чтобы добавить к товару несколько категорий - было создано несколько товаров (одинаковых), каждый из которых был прикреплен к нужной категории

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

И вот собственно где проблема: При выборе категории у которой в подкатегориях содержатся товары с одинаковым тайтлом ( по сути - это один и тот же товар) они выводятся друг за другом. Как можно избежать этого дублирования?

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

Ответ дан 05.02.2015 - 23:00

Да, полностью согласен, очень хочется уйти от этого решения ]
Но тогда надо решить 2 других вопроса:
1) Url товара формируется из категорий и подкатегорий (полная цепочка где в конце идёт название товара). Соответсвенно если несколько категорий - несколько url для одного товара, чего быть не может. Но чувствую что где-то я тут не прав, может есть вариант переделать всё это.
2) При открытии карточки товара в меню из подкатегорий ставится класс active для категории (и подкатегорий), к которым приписан товар, соответственно и дерево в навигации открывается до нужного пункта. Опять таки если несколько категорий, то и несколько active пунктов в навигации.

Собственно вот сайт, о котором идёт речь: sadovichkov.ru

Комментарий оставлен 05.02.2015 - 23:29
0

Убрать дубли можно так:
1)Во вьюсе в Настройки запроса ставим галку - Уникальность (Distinct)
2) в template.php
function ТЕМА_views_pre_render(&$view)
{
$used_nids = array();

  if ($view->name == 'NAME_VIEWS')
  {
    if ($view->current_display == 'DISPLAY')
    {
      foreach ($view->result as $row)
      {
        if (!in_array($row->nid, $used_nids))
        {
          $new_view_result[] = $row;
          $used_nids[] = $row->nid;
        }
      }

      $view->result = $new_view_result;
    }
  }
}
Ответ дан 20.02.2015 - 16:13