Доброго часу доби шановні користувачі!
Давно я тут нічого не писав, сьогодні одному з клієнтів потрібно вивести в категоріях, в акціях, в пошуку і т.д ... можливість виведення крім основної інформації про товар ще й всі атрибути які присутні в товарі, в зв'язку з цим я вирішив тут опублікувати рішення даного питання.
Дана стаття як і багато інших на нашому сайті за великим рахунком пишеться як замітка для самого себе, але я буду радий якщо і Вам стане в нагоді ця інформація.
І так, сьогодні я постараюся коротко описати всі дії про те як в списках товарів на сайті, тобто в категоріях і їм подібних вивести атрибути до товарів, робити ми будемо два рішення, перше це ми виведемо всі доступні атрибути товару і другий спосіб це висновок тільки тих атрибутів які Вам потрібні тобто вибірково.
Всі дії ми будемо проводити на opencart 1,5 ...
Насамперед нам потрібно внести деякі зміни в контролер категорії (Якщо Ви додаєте для акцій, пошуку, виробників ... То все робите за аналогією)
Відкриваємо файл:
1 |
catalog/controller/product/category.php |
І в ньому після рядка:
1 |
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..', |
Додамо:
1 |
'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']), |
З контролером закінчили, тепер приступимо до файлу category.tpl нашого активного шаблону в магазині:
1 |
catalog/view/theme/ВАШ_ШАБЛОН/template/product/category.tpl |
Знаходимо блок відповідає за виведення товару, у кожного шаблону його стилі можуть бути різні і в довільному місці додаємо код вказаний нижче я додав його в своєму шаблоні перед останнім DIV блоку товару.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div class="buy-buttons"> <div class="buy-buttons-text"> <?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 21 22 |
<div class="buy-buttons"> <div class="buy-buttons-text"> <?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 атрибута.
В цілому у Вас вже повинні в категорії з'явиться атрибути, але виглядати вони будуть без форматування, м'яко кажучи криво.
Щоб наші атрибути красиво виглядали нам потрібно додати для них трохи стилів, в даному прикладі стилі я буду вказувати саме ті що я використовував для свого сайту, Вам же скоріше за все доведеться їх трохи підправляти під себе!
І так в даному прикладі я виводжу атрибути саме при наведенні на товар, тобто спочатку вони приховані, а як тільки наводимо курсор мишки на товар з'являються потрібні нам атрибути. приклад Ви можете подивитися на фото в статті!
І так додаємо в файл стилів вашого шаблону код стилів:
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; } |
Ось в принципі і все.
є кілька варіантів даного рішення, але на моє думки для мене він здався самим правильним і простим.
Загальним пробуйте якщо щось не вийде або Ви хочете запропонувати інше рішення пишіть в коментарях!
Немає коментарів
Ви можете залишити коментар першим.