На самом деле все не так сложно, как кажется. Преимущества данного дополнения уже присутствует в движке, при чем во всех версиях. И реализация данного дополнения тоже не очень сложна, но некоторые фрагменты и знание языка в PHP вам пригодиться. На самом деле CMS OpenCart очень прост в понимании и простоты кода, не говоря уже о самой реализации дополнительных модулей.
Так вот давайте начнем вносить оригинальность нашему товару и категории. Допустим, нам поставили задачу что бы в данной категории товар показывался списком, а не блоками. Но на некоторых будет показываться блоками. И реализация таких фрагментов была с админки магазина.
Для начала нам нужно будет создать такие файлы:
catalog/view/theme/default/template/product/listcategory.tpl
catalog/controller/product/listcategory.php
catalog/ language/*/product/listcategory.php
*наименование папки используемого языка в каталоге
после того как создали выше указанный файлы скопируем коды готовой категории в новую категорию. После того как мы сохранили далее открываем
catalog/controller/product/listcategory.php
В начале документа находим код:
1
| class ControllerProductCategory extends Controller {
|
И изменяем на:
1
| class ControllerProductListcategory extends Controller {
|
После прокручиваем немного ниже и пропишем путь к нашему новому шаблону
1
2
3
4
5
| if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
}
|
И Изменяем на:
1
2
3
4
5
| if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/listcategory.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/listcategory.tpl';
} else {
$this->template = 'default/template/product/listcategory.tpl';
}
|
Далее сохраняем документ и открываем
catalog/view/theme/default/template/product/listcategory.tpl
Для начала изменим класс отображаемового тега HTML блока товара
1
| <div class="product-grid">
|
Далее изменям класс на
1
| <div class="product-list">
|
Далее нужно изменить переменную для куки в javaScript, если его не изменить куки будет определяться параллельно для двух файлов. Находи такие строки:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| <script type="text/javascript"><!--
function display(view) {
if (view == 'list') {
$('.product-grid').attr('class', 'product-list');
$('.product-list > div').each(function(index, element) {
html = '<div class="right">';
html += ' <div class="cart">' + $(element).find('.cart').html() + '</div>';
html += ' <div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
html += ' <div class="compare">' + $(element).find('.compare').html() + '</div>';
html += '</div>';
html += '<div class="left">';
var image = $(element).find('.image').html();
if (image != null) {
html += '<div class="image">' + image + '</div>';
}
var price = $(element).find('.price').html();
if (price != null) {
html += '<div class="price">' + price + '</div>';
}
html += ' <div class="name">' + $(element).find('.name').html() + '</div>';
html += ' <div class="description">' + $(element).find('.description').html() + '</div>';
var rating = $(element).find('.rating').html();
if (rating != null) {
html += '<div class="rating">' + rating + '</div>';
}
html += '</div>';
$(element).html(html);
});
$('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display(\'grid\');"><?php echo $text_grid; ?></a>');
$.cookie('display', 'list');
} else {
$('.product-list').attr('class', 'product-grid');
$('.product-grid > div').each(function(index, element) {
html = '';
var image = $(element).find('.image').html();
if (image != null) {
html += '<div class="image">' + image + '</div>';
}
html += '<div class="name">' + $(element).find('.name').html() + '</div>';
html += '<div class="description">' + $(element).find('.description').html() + '</div>';
var price = $(element).find('.price').html();
if (price != null) {
html += '<div class="price">' + price + '</div>';
}
var rating = $(element).find('.rating').html();
if (rating != null) {
html += '<div class="rating">' + rating + '</div>';
}
html += '<div class="cart">' + $(element).find('.cart').html() + '</div>';
html += '<div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
html += '<div class="compare">' + $(element).find('.compare').html() + '</div>';
$(element).html(html);
});
$('.display').html('<b><?php echo $text_display; ?></b> <a onclick="display(\'list\');"><?php echo $text_list; ?></a> <b>/</b> <?php echo $text_grid; ?>');
$.cookie('display', 'grid');
}
}
view = $.cookie('display');
if (view) {
display(view);
} else {
display('list');
}
//--></script>
|
И от А до Я удаляем этот скрипт! Так же и удалите этот фрагмент
1
| <div class="display"><b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a></div>
|
С внешней частью кода разобрались, теперь осталось немного. Далее заходим в административную (админка) часть сайта и переходим по такому пути
Система -> Дизайн -> Схемы. После создаем новый дизайн нажимаем кнопку "
Добавить" и дадим нашему макету называние "Category_List", теперь нажимаем на кнопку "
Добавить Путь". После выбираем магазин по умолчанию, или тот в котором он нужен и в строке "Путь:" Указываем "
product/listcategory". Далее нажимаем кнопку
"Сохранить"
После того как мы это все создали, теперь можем смело указать новый дизайн для категории. Переходим в админке Каталог -> Категории ->
Добавить /или/
Изменить уже созданную категорию. После чего переходим во вкладку дизайн и выбираем в выпадающем списке
"Category_List" и Сохраняем.
Поздравляю теперь вы справились с поставленной задачей!)
Такую же саму операцию Вы сможете и проделать с карточкой товара, и для каждого лота выставить свой уникальный дизайн!
P.S. Оставляйте ваши вопросы и Коментарии. Спасибо за Внимание