Drupal 7 фильтр атрибутов Ubercart во views. Или копирование атрибутов ubercart в таксономию.

26.01.2015

Марина Лебедева

При написании этой статьи не пострадал ни один модуль.

Если Вы когда-нибудь работали с UBERCART 3 (вы понимаете как тяжело делать интернет-магазин на Drupal) и вам потребовалось сделать фильтр с views, то проблема с атрибутами товаров в фильтре будет Вам очевидна.

Многие предпочитают для drupal 7 — drupal commerce, но, попробовав его раз, понимаешь как ломается мозг тяжело с ним работать. А что говорить про клиентов…

Ubercart реализован как раз для тех, кто ценит время и себя.

Не буду перечислять все «за» и «против» этих решений. Они оба очень хороши.

Вернемся к главному: если вы читаете эту статью, значит столкнулись с проблемой атрибутов в фильтре views. Точнее, невозможность вывести эти атрибуты из ubercart во views.

Для решения этой проблемы был написан модуль backup_bike. Как и следует из перевода, он реализует некую подпорку для какого-то невидимого и очень весомого велосипеда.

Решение очень интересное и «элегантное»: мы дублируем все атрибуты из ubercart в словарь таксономии. Для большего удобство, все это автоматизировано и недоступно для пользователей. Чтобы не накрутили лишнего.

Первоначально, его требуется установить (но что я говорю об очевидном).

Все настройки данного модуля хранятся в разделе Конфигурация -> Интерфейс пользователя.

!Предварительно, надо создать словари терминов таксономии, для связки с атрибутами.

Основная идея примерно такая: вы создаете товар, атрибуты у него, создаете нужный словарь таксономии, который будет дублером атрибутов.

Устанавливаете связку между атрибутом и таксономией, заполняете атрибуты. Они автоматически копируются в таксономию.

В полях у товара делаете связку к этому словарю. Теперь, при указании атрибута, он автоматически выбирается и в таксономии.

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

У Вас будет ровно столько «парных выпадаек», сколько атрибутов у Вас в системе. Первый параметр: это атрибут из ubercart, второй — словарь таксономии. И так для каждого из атрибутов.


Выбираете атрибут -> термин (сохранится ровно столько связок, в каких значения элементов отличны от «No current set»), сохраняете.

Для корректного сохранения и удаления атрибут -> термин, надо немного подправить файл модуля uc_attribute.admin.inc, который находится в sites/all/modules/ubercart/uc_attribute.

Данная функция будет сохранять в словарь термина таксономии атрибут с таким именем и обновлять его при изменении.

Данная функция удаляет термин при удалении соответствующего атрибута.

И еще один небольшой момент:

В модуле backup_bike.module, в строчках 276, 280 необходимо поменять на названия добавленных полей у ноды.

Т.к. у меня 2 атрибута сохраняются, у меня 2 таких записи.

Например:


Самое важное:

При редактировании ноды товара (по умолчанию, машинное имя для товара product и только ноды с таким машинным именем будут сохраняться (изменить в строчке 216 backup_bike.module)) на странице товара атрибуты можно не отмечать, т.к. они будут сохраняться из атрибутов ubercart.

Т.е. из этих:


Изображение 4

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

На этом все. Спасибо за внимание!

Скачать данное «чудо» можно по этой ссылке.

  • Drupal

Комментарии

    1. Спасибо за Ваш комментарий! Ссылку уже поправили. Файл доступен для скачивания.

Добавить комментарий

Вы вернулись, чтобы дочитать статью? Кликните на меня, я найду то место, где вы остановились.