Opencart: Вывод атрибутов вместо описания в категориях. Opencart 2 атрибуты в категории


Выводим атрибуты товара в категории при наведении на товар.

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

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

Данная статья как и многие остальные на нашем сайте по большому счету пишется как заметка для самого себя, но я буду рад если и Вам пригодится данная информация.

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

Все действия мы будем проводить на opencart 1,5...

Первым делом нам нужно внести некоторые изменения в контролер категории ( Если Вы добавляете для акций , поиска, производителей ... То все делаете по аналогии)

Открываем файл :

catalog/controller/product/category.php

catalog/controller/product/category.php

И в нем после строчки:

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',

Добавим:

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

С контролером закончили, теперь приступим к файлу category.tpl нашего активного шаблона в магазине:

catalog/view/theme/ВАШ_ШАБЛОН/template/product/category.tpl

catalog/view/theme/ВАШ_ШАБЛОН/template/product/category.tpl

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

<div> <div> <?php if($product['attribute_groups']) { ?> <table> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <tbody> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <tr> <td><?php echo $attribute['name']; ?>:</td> <td><span><?php echo $attribute['text']; ?></span></td> </tr> <?php } ?> </tbody> <?php } ?> </table> <?php } ?> </div> </div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<div>

  <div>     

<?php if($product['attribute_groups']) { ?>

    <table>

    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>

  

    <tbody>

    <?php foreach($attribute_group['attribute'] as $attribute) { ?>

    <tr>

<td><?php echo $attribute['name']; ?>:</td>

                                <td><span><?php echo $attribute['text']; ?></span></td>

  

    </tr>

    <?php } ?>

    </tbody>

    <?php } ?>

    </table>

    <?php } ?>

    </div>

      </div>

Указанным выше куском кода мы выводим все доступные атрибуты товара.

Если же Вам нужно выводить именно определенные выборочные атрибуты то вместо вышеуказанного куска кода мы добавляем следующий код:

<div> <div> <?php if($product['attribute_groups']) { ?> <table> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <tbody> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <?php if(in_array($attribute['attribute_id'], array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28))) { ?> <tr> <td><?php echo $attribute['name']; ?>:</td> <td><span><?php echo $attribute['text']; ?></span></td> </tr> <?php } ?> <?php } ?> </tbody> <?php } ?> </table> <?php } ?> </div> </div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<div>

  <div>     

<?php if($product['attribute_groups']) { ?>

    <table>

    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>

  

    <tbody>

    <?php foreach($attribute_group['attribute'] as $attribute) { ?>

<?php if(in_array($attribute['attribute_id'], array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28))) { ?>

    <tr>

<td><?php echo $attribute['name']; ?>:</td>

                                <td><span><?php echo $attribute['text']; ?></span></td>

  

    </tr>

<?php } ?>

    <?php } ?>

    </tbody>

    <?php } ?>

    </table>

    <?php } ?>

    </div>

      </div>

Обратите свое внимание на список циферок в коде 12, 13, 14, 15,.....   это как раз и есть наши выбранные указанные атрибуты, то есть здесь мы через запятую добавляем ID атрибута.

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

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

Чтобы наши атрибуты красиво смотрелись нам нужно добавить для них немного стилей, в данном примере стили я буду указывать именно те что я использовал для своего сайта, Вам же скорей всего придется их немного подправлять под себя!

И так в данном примере я вывожу атрибуты именно при наведении на товар, то есть изначально они скрыты, а как только наводим указатель мышки на товар появляются нужные нам атрибуты. пример Вы можете посмотреть на фото в статье!

И так добавляем в файл стилей вашего шаблона код стилей:

/*Окно при наведении в категории*/ .product-grid > div > div .buy-buttons { position: absolute; display: none; left: 0px; right: 0px; z-index: 10; background: #fff; box-shadow: inset 0px 0px 0px 1px #e8e8e8; } .product-grid > div > div:hover .buy-buttons { display: block; padding-top: 10px; padding-bottom: 10px; margin-left: 3px; margin-right: 3px; border-left: 1px solid #6caddf; border-right: 1px solid #6caddf; box-shadow: 0px 1px 0px 0px #6caddf; } .buy-buttons-text { padding-left: 15px; } .buy-buttons-text table { width: 100%; } .buy-buttons-text tr { } .buy-buttons-text tr td { font-weight: 700; color: #028298; } .buy-buttons-text tr td span { font-weight: 700; color: #747474; padding-left: 10px; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

/*Окно при наведении в категории*/

 

.product-grid > div > div .buy-buttons {

position: absolute;

display: none;

left: 0px;

right: 0px;

z-index: 10;

background: #fff;

box-shadow: inset 0px 0px 0px 1px #e8e8e8;

}

.product-grid > div > div:hover .buy-buttons  {

display: block;

padding-top: 10px;

padding-bottom: 10px;

margin-left: 3px;

margin-right: 3px;

border-left: 1px solid #6caddf;

border-right: 1px solid #6caddf;

box-shadow: 0px 1px 0px 0px #6caddf;

}

 

.buy-buttons-text {

padding-left: 15px;

}

.buy-buttons-text table {

width: 100%;

}

.buy-buttons-text tr {

}

.buy-buttons-text tr td {

font-weight: 700;

color: #028298;

}

.buy-buttons-text tr td span {

font-weight: 700;

color: #747474;

padding-left: 10px;

}

Вот в принципе и все.

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

Общим пробуйте если что не получается или Вы хотите предложить другое решение пишите в комментариях!

web-stydia.com

Вывод атрибутов вместо описания в категориях. — LOCO.RU

catalog\controller\product\category.php, 199

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..', 'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']), 'price' => $price,

catalog\view\theme\default\template\product\category.tpl, 76

<div> <?php if($product['attribute_groups']) { ?> <table> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <thead><!--названия групп--> <tr> <td colspan="2"><?php echo $attribute_group['name']; ?></td> </tr> </thead><!----> <tbody> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <tr> <td><?php echo $attribute['name']; ?></td> <td><?php echo $attribute['text']; ?></td> </tr> <?php } ?> </tbody> <?php } ?> </table> <?php } ?> </div>

Выводить атрибуты в строчку:

catalog\view\theme\default\template\product\category.tpl, 76Заменяем этот код:

<div> <?php if($product['attribute_groups']) { ?> <table> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <thead><!--названия групп--> <tr> <td colspan="2"><?php echo $attribute_group['name']; ?></td> </tr> </thead><!----> <tbody> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <tr> <td><?php echo $attribute['name']; ?></td> <td><?php echo $attribute['text']; ?></td> </tr> <?php } ?> </tbody> <?php } ?> </table> <?php } ?> </div>

на:

<div> <?php if($product['attribute_groups']) { ?> <table> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <tbody> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <tr> <?php echo $attribute['name']; ?> - <?php echo $attribute['text']; ?> <font color="#00A7C7">/</font> </tr> <?php } ?> </tbody> <?php } ?> </table> <?php } ?> </div>

Разделитель — косая черта, мне кажется так органичней. Стиль для этой черты (синий цвет color="#00A7C7"), чтобы было более заметно где заканчивается один атрибут и начинается другой.Так же убрано название групп характеристик.

loco.ru

Удаление всех товаров, категорий, атрибутов в Opencart 2.3

Сделать это все просто, достаточно прописать запрос к базе данных:

Очистка всех категорий, товаров, атрибутов, опций:
TRUNCATE TABLE `oc_category`; TRUNCATE TABLE `oc_category_description`; TRUNCATE TABLE `oc_category_filter`; TRUNCATE TABLE `oc_category_path`; TRUNCATE TABLE `oc_category_to_layout`; TRUNCATE TABLE `oc_category_to_store`; DELETE FROM oc_url_alias WHERE query LIKE 'category_id=%'; TRUNCATE TABLE oc_product; TRUNCATE TABLE oc_product_attribute; TRUNCATE TABLE oc_product_description; TRUNCATE TABLE oc_product_discount; TRUNCATE TABLE oc_product_image; TRUNCATE TABLE oc_product_option; TRUNCATE TABLE oc_product_option_value; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_reward; TRUNCATE TABLE oc_product_special; TRUNCATE TABLE oc_product_to_category; TRUNCATE TABLE oc_product_to_download; TRUNCATE TABLE oc_product_to_layout; TRUNCATE TABLE oc_product_to_store; TRUNCATE TABLE oc_review; DELETE FROM oc_url_alias WHERE query LIKE 'product_id=%'; TRUNCATE TABLE oc_attribute; TRUNCATE TABLE oc_attribute_description; TRUNCATE TABLE oc_attribute_group; TRUNCATE TABLE oc_attribute_group_description; TRUNCATE TABLE oc_product_attribute; TRUNCATE TABLE oc_option; TRUNCATE TABLE oc_option_description; TRUNCATE TABLE oc_option_value; TRUNCATE TABLE oc_option_value_description; TRUNCATE TABLE oc_product_option;
Очистка всех категорий: 
TRUNCATE TABLE `oc_category`; TRUNCATE TABLE `oc_category_description`; TRUNCATE TABLE `oc_category_filter`; TRUNCATE TABLE `oc_category_path`; TRUNCATE TABLE `oc_category_to_layout`; TRUNCATE TABLE `oc_category_to_store`; DELETE FROM oc_url_alias WHERE query LIKE 'category_id=%';
Очистка всех товаров:
TRUNCATE TABLE oc_product; TRUNCATE TABLE oc_product_attribute; TRUNCATE TABLE oc_product_description; TRUNCATE TABLE oc_product_discount; TRUNCATE TABLE oc_product_image; TRUNCATE TABLE oc_product_option; TRUNCATE TABLE oc_product_option_value; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_reward; TRUNCATE TABLE oc_product_special; TRUNCATE TABLE oc_product_to_category; TRUNCATE TABLE oc_product_to_download; TRUNCATE TABLE oc_product_to_layout; TRUNCATE TABLE oc_product_to_store; TRUNCATE TABLE oc_review; DELETE FROM oc_url_alias WHERE query LIKE 'product_id=%';если вы увидите подобную надпись (ошибку):#1146 - Table 'p254341_smarket.oc_product_tag' doesn't existто удалите ее из запроса.
Очистка всех атрибутов:
TRUNCATE TABLE oc_attribute; TRUNCATE TABLE oc_attribute_description; TRUNCATE TABLE oc_attribute_group; TRUNCATE TABLE oc_attribute_group_description; TRUNCATE TABLE oc_product_attribute;
Очистка всех опций:
TRUNCATE TABLE oc_option; TRUNCATE TABLE oc_option_description; TRUNCATE TABLE oc_option_value; TRUNCATE TABLE oc_option_value_description; TRUNCATE TABLE oc_product_option;

univers2.newopencart.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта