пятница, 2 мая 2014 г.


На самом деле все не так сложно, как кажется. Преимущества данного дополнения уже присутствует в движке, при чем во всех версиях. И реализация данного дополнения тоже не очень сложна, но некоторые фрагменты и знание языка в 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. Оставляйте ваши вопросы и Коментарии. Спасибо за Внимание

0 коммент.:

Отправить комментарий