Поиск Добавление атрибутов для категории каталога

KoNnY

Постоялец
Регистрация
14 Дек 2014
Сообщения
64
Реакции
7
Добрый день!

Помогите, пожалуйста, с поиском: возникла острая необходимость задавать и выводить атрибуты не только у товаров, но и у категорий. Может кто встречал нечто подобное или поделится своим решением?

Можно, конечно, добавить доп. поля для категории, но не хочется так изощряться. Лучшим решением видится клонирование функционала задания атрибутов у товара применительно к категории.
 
Покажите пример реализации такого функционала.
Как выводить атрибуты у товара в категории - я понимаю, а где отображать атрибуты у категории??
 
Покажите пример реализации такого функционала.
Как выводить атрибуты у товара в категории - я понимаю, а где отображать атрибуты у категории??
А в чем здесь собственно проблема? Ведь есть, например, модуль для добавления дополнительных изображений для категории - Для просмотра ссылки Войди или Зарегистрируйся
По сути это клон аналогичного функционала для товара (вкладка Изображения). И выводятся эти картинки рядом с описанием категории, настраивается такое же слайдшоу как и для карточки товара.

Для наглядности прикладываю макет, как будут выводиться атрибуты категории: Для просмотра ссылки Войди или Зарегистрируйся

Идеи типа "запили в поле Описание" не подходят. Нужно более рациональное решение
 
Если реализовывать полноценные атрибуты для категорий и по образцу с товарами, то это немалая работа. Готового модуля не встречал.
Предполагаю, что реализовывать стоит через создание еще одной таблицы для категорий со структурой как у "product_attribute", добавить в модель и контроллер работу с этой таблицей, добавить в админку раздел "Атрибуты" в 'Категории". Одно только хорошо, что все решения можно использовать от товаров.
 
Если реализовывать полноценные атрибуты для категорий и по образцу с товарами, то это немалая работа. Готового модуля не встречал.
Предполагаю, что реализовывать стоит через создание еще одной таблицы для категорий со структурой как у "product_attribute", добавить в модель и контроллер работу с этой таблицей, добавить в админку раздел "Атрибуты" в 'Категории". Одно только хорошо, что все решения можно использовать от товаров.
Воспользовался Вашим советом, делал все "под копирку" как у товаров: от создания таблицы до вывода конечного результата, просто копируя функции с attriburte меняя в них фразу "product" на "category". Все получилось, спасибо! Сейчас постараюсь провернуть то же самое и с производителями. Раньше хотел как атрибут задавать значение, но думаю можно также поступить как и с атрибутами, копируя и видоизменяя код.
 
Не удалось мне также легко провернуть с производителями, к сожалению... написал vqmod пока только для папки admin (добавление производителя), а вот с выводом в шаблоне не получается.
Выкладываю свой vqmod для добавления производителя к категории: Для просмотра ссылки Войди или Зарегистрируйся (тестил на OpenCart 1.5.6.4)

Ступор настал, когда дошел до правки файла catalog/model/catalog/category.php. Вот не знаю куда вставлять данный код из product.php
PHP:
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

        if ($query->num_rows) {
            return array(
               ...
                'manufacturer_id'  => $query->row['manufacturer_id'],
                'manufacturer'     => $query->row['manufacturer'],

....
 
Назад
Сверху