Шаблон фильтра продукции по атрибутам

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

09.03.2011 19:19

Всем добрый вечер! У нас горит один проекта на Magento 1.5, меня попросили помочь, до этого с мажентой не работал. Ссылок на сайты нагуглил много, но времени на изучения очень мало, так как сдача демки на следующей неделе. Прошу отнестись с терпением, пока что :)

Создано n-е кол-во атрибутов по ним необходимо осуществить фильтрацию. Для них создан темплей, и прописан так
<block type="core/template" name="category-selection" template="catalog/category/selection.phtml">

В темплейте фильтры прописаны жестко (например так)
<li><input type="checkbox" class="styled" name="version[]" id="version1" value="9"><label for="version1">2 places (25)</label></li>
<li><input type="checkbox" class="styled" name="version[]" id="version2" value="7"><label for="version2">3 places (12)</label></li>
<li><input type="checkbox" class="styled" name="version[]" id="version3" value="8"><label for="version3">Ensemble 2 <br />et 3 places (8)</label></li>

Проблема именно в зашитости, необходимо все сделать динамично.Натолкнулся на тему (Атрибуты товаров в Magento (Attributes))
и возник вопрос какой тип блока необходимо указать и как в шаблоне обратится к модели, что бы вытянуть группы атрибутов и построить фильтр.

Извиняюсь если тема уже подымалась и благодарю за ответы.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

09.03.2011 19:27

Стандартные темы Magento отображают блок пошаговой фильтрации посредством класса Mage_Catalog_Block_Layer_View, который в файлах логической разметки сокращённо записывается как "catalog/layer_view".
Стандартная тема Default использует для этого блока шаблон отображения "catalog/layer/view.phtml".

#3 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

09.03.2011 19:34

Спасибо, а что подразумевается под пошаговой фильтрацией? У нас есть фильтр, проставляются значения, вызывается событие и подтягиваются результаты. Пошаговая для меня имеет немного другое значение...
Буду благодарен за разъяснения.

Спасибо.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

09.03.2011 19:39

Стандартная версия Magento фильтрует товары по шагам: сначала по одному параметру (по выбору посетителя), затем по второму с учётом первого (тоже по выбору посетителя).
Например, посетитель сначала фильтрует обувь по доступному на складе размеру, а затем по фасону.

Если вы хотите, чтобы посетитель сразу указал значения всех параметров - посмотрите на работу стандартного модуля «Advanced Search».

#5 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

10.03.2011 10:56

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

P.S. Ед. что там на аяксе все и js после выбора элемента фильтра, пробегается по всем элементам для составления запроса к серверу. Получается не совсем пошаговая, но теперь есть от чего отталкиваться. http://magento-forum.ru/topic/69/ - есть примеры как вытянуть атрибуту, думаю поможет.

Спасибо.

#6 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

10.03.2011 13:14

Начал копать и возникли сложности, то что тут http://magento-forum.ru/topic/69/ не работает.
Залез в базу. Мне получается сначала надо извлечь нужный атрибут сет т.е. обратится к таблице eav_attribute_set через модель.
Затем извлечь группы для нужного сета из таблицы eav_attribute_group и уже зная группы извлечь атрибуты и их свойста, но как это сделать нормально не знаю. Подскажите плиз.

P.S. кстати а что за метол $this->getData(...)?

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

#7 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.03.2011 13:22

1)
Если непонятно - начните с чего-нибудь более простого.
Например, создайте хотя бы модуль, который выводит на экран характеристики какого-нибудь товара.
Ну или "Hello World" для начала.
Нельзя понять сложное, не освоив простое.

2)
Насчёт getData смотрите класс Varien_Object

#8 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

10.03.2011 13:27

Просмотр сообщенияДмитрий Федюк (10.03.2011 13:22) писал:

1)
Если непонятно - начните с чего-нибудь более простого.
Например, создайте хотя бы модуль, который выводит на экран характеристики какого-нибудь товара.
Ну или "Hello World" для начала.
Нельзя понять сложное, не освоив простое.

2)
Насчёт getData смотрите класс Varien_Object


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

#9 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.03.2011 13:30

Как я понимаю, варианта два: либо учиться, либо отказываться от проекта.
Здесь за вас бесплатно никто работу делать не будет.

#10 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

10.03.2011 13:35

Просмотр сообщенияДмитрий Федюк (10.03.2011 13:30) писал:

Как я понимаю, варианта два: либо учиться, либо отказываться от проекта.
Здесь за вас бесплатно никто работу делать не будет.


Да я понимаю. Мне всего лишь на данный момент надо понять как связаны атрибуты и группы, зашел в даминку ndex.php/admin/catalog_product_set/edit/id/9/
там есть дерево в котором идет привязка атрибутов к группам, где то в базе эта связь должна быть отображена но где?

#11 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.03.2011 13:37

Хороший вопрос.
Прочитайте в Википедии статью про EAV - именно эту технологию хранения данных использует Magento.

#12 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

11.03.2011 16:39

Фильтр удалось реализовать. Возник вопрос... Сейчас фильтр один для всех категорий, и понятное дело у разных категорий фильтр будет отличатся. Как реализовать это переключение?
На данный момент в local.xml такой код
<block type="catalog/layer_view" name="category-selection" template="catalog/category/selection.phtml">

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

Спасибо.

#13 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

11.03.2011 16:57

Mage_Catalog_Model_Layer::getFilterableAttributes() 


#14 karelena
  • Группа: Пользователь
  • Сообщений: 1
  • Регистрация: 18.08.2011

21.08.2011 19:29

Дмитрий, подскажите, пожалуйста, как в принципе выводить фильтр?

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

Спасибо, Елена.

#15 core
  • Группа: Пользователь
  • Сообщений: 6
  • Регистрация: 08.08.2011

21.08.2011 23:07

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

Поделиться темой: