• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Форматирование вывода характеристик товара для разных категорий.

Yuri_ts

Новичок
Все знают, что на табе с характеристиками атрибуты товара выводятся в виде двухколоночной таблицы - атрибут и его значение. Выглядит не очень красиво и информация воспринимается тяжело, особенно если атрибутов у товара много.
Есть ли достаточно простой способ для категории (где товары однотипны и набор атрибутов одинаковый) сделать шаблон вывода в виде таблицы? Как например здесь http://procase.ru/details/em338f.html
Для разных категорий, соответственно разные шаблоны и набор атрибутов - пример с того же сайта
http://www.procase.ru/details/e1708.html

Или есть плагин который позволяет сделать такой функционал.
Теоретически можно скрыть стандартные табы использовать разный набор кастомных табов для каждой категории созданных при помощи YITH WooCommerce Tab Manager Premium, но не совсем понятно как "доставать" значения кастомных атрибутов.
 

Yuri_ts

Новичок
Я видел несколько подобных решений
WooCommerce Group Attributes (дешево и есть 3 шаблона вывода атрибутов, можно выводить один атрибут в разных группах)
JC WooCommerce Advanced Product Attributes ( можно менять значения арибутов на картинки)
но они фактически только добавляют заголовки групп к выводимым атрибутам, но не позволяют вывести в виде сложной таблицы.
Плагина который поддерживал бы группы и подгруппы атрибутов, что было бы решением проблемы, найти пока не удалось
 

Yuri_ts

Новичок
Не понял смысла ответа. Причем тут создание и отличия? Речь идет только о выводе. Или утверждается, что древовидное меню можно создать, а добавить древовидный функционал для атрибутов нельзя? Т.е. сгрупировать в одноуровневую структуру можно, что делается выше приведенными плагинами, а в 2 или 3 уровня уже ни как?
 

artemkomarov

Специалист
Местный
Да именно это и имелось ввиду. Однако нет ни чего не возможного) к примеру если очень хочется то можно изменить один из плагинов и групировать группы атрибутов, тем самым создавая дерево атрибутов как в вашем примере.
 

Yuri_ts

Новичок
Это не отпадание вопроса. Тема вывода атрибутов поднималась на форуме пару раз. Было предложено 2 решения - по одному атрибуту и переделыванием одного из плагинов (таблица атрибут-значение и эти пары выводятся в 2 колонки с заголовками в виде групп)
Атрибуты можно выводить как угодно по 1шт с любым форматированием. И сделать это в виде таблицы.
Но для примера на скриншоте при этом потребуется 17 запросов к базе, а при выводе групп и подгрупп и значений - 4.

upload_2017-9-12_13-52-57.png

И чем больше атрибутов, тем значительнее будет разрыв, а следовательно и скорость отображения.
Кроме того это очень не гибкое решение...
 

artemkomarov

Специалист
Местный
Но для примера на скриншоте при этом потребуется 17 запросов к базе, а при выводе групп и подгрупп и значений - 4.
Интересная теория подсчитывать количество запросов по количеству атрибутов. А если атрибуты в группе то их уже не надо с базы данных брать так по вашему? Откуда тогда появятся значения атрибутов? Ладно извините увлекся. Вообщем рабочее решения я описал выше.
 

Yuri_ts

Новичок
Это не теория подсчета, а описание решения в посте на форуме. А по поводу появятся не появятся значения атрибутов - перед написанием ответа лучше было подумать почему 4 запроса, а не 2 или 3. Не конструктивные ответы приводят только в флуду.

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

artemkomarov

Специалист
Местный
Не конструктивные ответы приводят только в флуду.
Согласен. Поэтому давайте я напишу как это на самом деле работает.

Группа есть кастомный post_type которая хранит масив id или slug атрибутов в мета поле.
Затем на странице продукта осуществляется запрос get_attributes и get_attribute_options соответственно продукту или для каждого продукта если он вариативный. Метод get_attribute использует функцию wc_get_product_terms которая кэширует запрос и вызвает функцию get_terms которая возвращает все taxonomy связанные с продуктом. Мы берем и сохраняем все id атрибутов продукта.

Затем мы запрашиваем все группы атрибутов где значение мета полей совпадают с нашими текущими в продукте. Ну и переписываем вывод атрибутов согласно их группе.

Ни каким образом количество атрибутов не может быть равно количеству запросов!
Наличие групп ни коем образом не сокращает количество запросов а напротив его увеличивает!

Я надеюсь понятно расписал.

А решение я повторюсь уже написал! Просто делаете этот post_type возможным для наследования и выводите наименование родительской группы, и все.
 
Последнее редактирование:
Сверху Снизу