OC2: Вывод изображения подкатегории как иконки

Здесь один из вариантов изменения отображения списка подкатегорий для Opencart 2, скорее всего подойдет и для версии 1.5 (большой разницы в этой части нет)

Понадобится: внести изменения в контроллер и шаблон квтегории, таблицу стилей и при необходимости найти изображение-заглушку для иконки, если не задано в настройках категории.

Что должно получиться в итоге:

  • Название категории изначально состоящее из заголовка и количества товаров разбивается на две части
  • Добавляется изображение

Изменения в контроллере категории

Открываем файл /catalog/controller/product/category.php

Здесь находим:

$data['categories'][] = array(

Перед этой строкой добавим код для получения изображения, с проверкой. Если изображения для категории нет, используем заглушку - стандартный no_image.png в изображениях опенкарта.

if ($result['image']) {
$caimage = $this->model_tool_image->resize($result['image'], 100, 100);
}
else {
$caimage = $caimage = $this->model_tool_image->resize('no_image.png', 100, 100);
}

После найденной строки добавляем изображение, а так же разбиваем 'name' на 2 части - имя категории и счетчик товаров. Должно в итоге получиться так:

$data['categories'][] = array(
					'name'  => $result['name'],
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
					'image'  => $caimage,
					'count'  => ($this->config->get('config_product_count') ?  $this->model_catalog_product->getTotalProducts($filter_data) : '')
				);

Теперь перейдем к шаблону.

Изменения в шаблоне

Открываем файл /catalog/view/theme/default/template/product/category.tpl и находим следующий код (29-54 строки в шаблоне по умолчанию, в других шаблонах могут быть отличия):

 <?php if ($categories) { ?>
      <h3><?php echo $text_refine; ?></h3>
      <?php if (count($categories) <= 5) { ?>
      <div class="row">
        <div class="col-sm-3">
          <ul>
            <?php foreach ($categories as $category) { ?>
            <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
            <?php } ?>
          </ul>
        </div>
      </div>
      <?php } else { ?>
      <div class="row">
        <?php foreach (array_chunk($categories, ceil(count($categories) / 4)) as $categories) { ?>
        <div class="col-sm-3">
          <ul>
            <?php foreach ($categories as $category) { ?>
            <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
            <?php } ?>
          </ul>
        </div>
        <?php } ?>
      </div>
      <?php } ?>
      <?php } ?>

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

      <?php if ($categories) { ?>
      <h3><?php echo $text_refine; ?></h3>
      <div class="row">
        <div class="subcats">
          <ul>
            <?php foreach ($categories as $category) { ?>
            <li class="col-sm-3">
            <a href="<?php echo $category['href']; ?>">
            <img src="<?php echo $category['image']; ?>" alt="<?php echo $category['name']; ?>" />
            <?php echo $category['name']; ?>
            </a>
            <?php if ($category['count']) { echo '<span class="count">'. $category['count'].'</span>';} ?>
            </li>
            <?php } ?>
          </ul>
        </div>
      </div> 
      <?php } ?>

Добавляем в CSS

.subcats ul {padding: 0px;list-style-type:none;}
.subcats li {margin-bottom: 20px;text-align: center;}
.subcats li img {display: block;border-radius: 50px;margin: 0px auto 10px auto;border: 1px solid #ECECEC;}
.subcats .count {position: absolute;top: 0px;left: 50%;background: #FF6A00;color: #fff;text-align: center;line-height: 30px;width: 30px;border-radius: 15px;margin-left: 32px;border: 1px solid #ECECEC;}

Вывод подкатегорий с пропуском одного уровня

Если необходимо вывести на странице категории первого уровня сразу третий уровень, минуя второй - это для Вас.

Если Нужно оставить второй уровень.. напремер в виде заголовков, то можно сделать по аналогии с модулем "категории", там очень похоже. Здесь же вариант, при котором будет отображен только третий уровень без разбивки. При этом не потребуется вносить дополнительные изменения в шаблон, только контроллер: /catalog/controller/product/category.php

1. Находим:

$data['categories'] = array();

Вырезаем оттуда где нашли и вставляем после

$results = $this->model_catalog_category->getCategories($category_id);
			foreach ($results as $result) {

2. Далее меняем (с изменениями из предыдущего примера):

$data['categories'][] = array(
					'name'  => $result['name'],
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
					'image'  => $caimage,
					'count'  => ($this->config->get('config_product_count') ?  $this->model_catalog_product->getTotalProducts($filter_data) : '')
				);

На

$cats = $results = $this->model_catalog_category->getCategories($result['category_id']);
foreach ($cats as $cat) {
if ($cat['image']) {
$caimage = $this->model_tool_image->resize($cat['image'], 100, 100);
}
else {
$caimage = $caimage = $this->model_tool_image->resize('no_image.png', 100, 100);
}
$data['categories'][] = array(
					'name'  => $cat['name'],
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $cat['category_id'] . $url),
					'image'  => $caimage,
					'count'  => ($this->config->get('config_product_count') ?  $this->model_catalog_product->getTotalProducts($filter_data) : '')
				);
			}

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

Добавить комментарий

Комментарии (81)

  1. sprinter-sasha 11 мая 2017, 13:06
    0 #

    Добрый день. Все сделал как по инструкции и все равно не работает… Пишет:

    Undefined index: count in /home/s/skoro100/site_test_wtg/public_html/catalog/view/theme/default/template/product/category.tpl on line 42

    42 строка <?php if ($category['count']) { echo ''. $category['count'].'';} ?>

    Undefined index: image in /home/s/skoro100/site_test_wtg/public_html/catalog/view/theme/default/template/product/category.tpl on line 39

    39 строка &lt;?php echo $category[&#39;name&#39;]; ?&gt;

    Подскажите в чем причина. Заранее СПАСИБО!)))

    1. Владимир 11 мая 2017, 13:56
      0 #

      Проверьте изменения в контроллере категории. Нужно там искать.

      1. sprinter-sasha 11 мая 2017, 14:37
        0 #

        У меня так.

        $data['categories'] = array();

        $results = $this->model_catalog_category->getCategories($category_id);

        foreach ($results as $result) {
        $filter_data = array(
        'filter_category_id' => $result['category_id'],
        'filter_sub_category' => true
        );
        if ($result['image']) {
        $caimage = $this->model_tool_image->resize($result['image'], 100, 100);
        }
        else {
        $caimage = $caimage = $this->model_tool_image->resize('no_image.png', 100, 100);
        }


        $data['categories'][] = array(
        'name' => $result['name'],
        'href' => $this->url->link('product/category', 'path='. $this->request->get['path']. '_'. $result['category_id']. $url),
        'image' => $caimage,
        'count' => ($this->config->get('config_product_count')? $this->model_catalog_product->getTotalProducts($filter_data): '')
        );
        }

        1. Владимир 11 мая 2017, 15:37
          0 #

          Здесь вроде все нормально. Есть мысль, что дело в кеше. Попробуйте обновить в модификаторах… для начала.

    2. Елена 05 мая 2017, 00:45
      0 #

      спасибо за ваш труд. подскажите пожалуйста что я сделала не так.спасибо xn----7sbarrckbcnd2di.xn--p1ai/tovari-dly-detei

      1. Владимир 07 мая 2017, 17:44
        0 #

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

      2. cyx 04 марта 2017, 23:13
        0 #

        как реализовать на OC 2.3.0.2?

        1. Владимир 07 марта 2017, 19:14
          0 #

          А что не получается? Там различий то сильных нет

        2. Дмитрий 16 января 2017, 02:00
          0 #

          Вопрос решил, обнаружил что кеш с бекап версии файла работает адекватно, обнаружил что за файл — category.tpl нашел строку
          и заработало
          Работающая часть кода —
          Спасибо за помощь! почти месяц работало как надо, надо же именно теперь сломаться :)

          1. Дмитрий 14 января 2017, 22:40
            0 #

            Здравствуйте, сегодня заметил что слетели картинки категорий, при том что изменений в файлы вроде как не вносил :( можете помочь с тем куда копать?
            cond.by/condtest/index.php?route=product/category&path=119_120

            1. Vikas 06 декабря 2016, 21:54(Комментарий был изменён)
              0 #

              Добрый вечер Владимир,
              Сделал как Вы говорили (проверил уже) но к сожалению выходить не иконка а что то не понятно даже спец поставил фото с размером 100*100 как указано на скрипте но не помогает прошу объяснить что я не так делаю еще получается если размеры будут не 100*100 то разве не работает auto shrink.

              1. Владимир 15 января 2017, 04:27
                0 #


                Видимо что то менялось

                1. Дмитрий 15 января 2017, 21:13
                  0 #

                  Впервые с таким сталкиваюсь, что могло заставить так неадекватно генерировать ссылки? может быть у вас был опыт

                2. Владимир 17 января 2017, 17:04
                  0 #

                  Добрый день! Не заметил Ваше сообщение. Что бы ответить, мне нужно видеть что получается (не получается)

                3. саша 04 декабря 2016, 14:45
                  0 #

                  Привет1 а можно как то добавить к категории вторую картинку php echo $thumb;,
                  то есть при выводе категории она выглядит иконкой, при нажатии на нее, уже другая каритнка сверху
                  ipic.su/img/img7/fs/1.1480862662.jpg
                  ipic.su/img/img7/fs/2.1480862685.jpg

                  1. Владимир 05 декабря 2016, 12:26
                    0 #

                    Можно. правда изменения нужны и для админки и в БД столбец добавить

                    1. саша 11 декабря 2016, 13:37
                      0 #

                      установил модуль дополнит. поля для категории, и все ок,
                      Хотелось бы узнать, как можно сделать отдельную категорию c special товарами из этой категории, автоматически добавляемыми, то есть категория компьютеры со всеми товарами, создаем еще одну компьютеры-распродажа, только с теми товарами, которые со скидкой из нее

                  2. Артур 08 ноября 2016, 11:53
                    0 #

                    Есть структура

                    категория
                    -------подкатегория
                    ------------подкатегория1
                    ------------подкатегория2
                    ------------подкатегория3
                    ------------подкатегория4

                    В категории -картинки подкатегории (это у вас описано в тексте)
                    Нужно вывести в подкатегории уже не картинки -подкатегоря1, подкатегория 2 и т.д. а непосредственно товары им принадлежащие, то есть остановить вывод картинок на первом уровне. Возможно ли это. Спасибо большое за помощь!

                    1. Владимир 08 ноября 2016, 12:37
                      0 #

                      Если я правильно понял, нужно изменить вот эту конструкцию:

                      $results = $this->model_catalog_category->getCategories($category_id);
                      foreach ($results as $result) {
                      $filter_data = array(
                      'filter_category_id'  => $result['category_id'],
                      'filter_sub_category' => true
                      );
                      $data['categories'][] = array(
                      //здесь что то есть
                      }
                      $data['products'] = array();
                      $filter_data = array(
                      //здесь что то есть
                      );
                      на:
                      if(stristr($this->request->get['path'], '_'.$category_id) === FALSE) {
                      $fc = false;
                      $results = $this->model_catalog_category->getCategories($category_id);
                      foreach ($results as $result) {
                      $filter_data = array(
                      'filter_category_id'  => $result['category_id'],
                      'filter_sub_category' => true
                      );
                      $data['categories'][] = array(
                      //Здесь что то есть
                      );
                      }
                      } else {
                      $fc = true;
                      }
                      $data['products'] = array();
                      $filter_data = array(
                      'filter_sub_category' => $fc,
                      //Здесь что то было
                      );
                      Для наглядности:

                      1. Артур 09 ноября 2016, 04:55
                        0 #

                        Спасибо, все работает,
                        Есть структура

                        категория
                        -------подкатегория
                        ------------подкатегория1
                        ------------подкатегория2
                        ------------подкатегория3
                        ------------подкатегория4

                        но вопрос в том что в хлебных крошках при переходе на подкатегорию -не выходят товары, а выходит первоначальный вариант с картинками подкатегорий 1, 2 и т.д.,, и адрес там category&path=59. При переходе из меню в подкатегорию -работает правильно и выдает адрес category&path=20_59. Как можно это поправить в хлебных крошках?

                        1. Владимир 09 ноября 2016, 10:41
                          0 #

                          на ссылки это вообще не влияет… тем более в крошках

                    2. алек 06 ноября 2016, 16:25
                      +1 #

                      Прошу помощи, сделал Вывод изображения подкатегории как иконки
                      , в /catalog/controller/product/category.php прописываю if ($result['image']) {
                      $caimage = $this->model_tool_image->resize($result['image'], 100, 100);
                      }
                      вопрос: как изменить жесткую установку размеров на произвольную, чтоб подкатегории выводились сеткой, разных размеров.

                      1. Владимир 06 ноября 2016, 19:43
                        0 #

                        здесь нужно указать максимально возможный размер, а остальное через CSS

                        1. вася 08 ноября 2016, 11:44(Комментарий был изменён)
                          0 #

                          простите, а как можно вывести разные размеры картинок через css, если они находятся в цикле
                          <?php foreach ($categories as $category) { ?>
                          li class=«col-sm-3»

                          как вытянуть отдельную картинку стилями?))

                          1. Владимир 08 ноября 2016, 11:50(Комментарий был изменён)
                            0 #

                            Я имел ввиду выводить один размер, максимально возможный. Второй вариант — выводить несколько изображений ($caimage,$caimage1,$caimage2,$caimage3) с разными размерами, но это лишняя нагрузка на сервер только. Еще есть вариант:

                            $caimage = $result['image'];
                            Тогда будет выводиться оригинал. Отдельно задавать свой размер для картинки каждой категории… можно добавить поля соответствующие, но зачем и кто этим будет заниматься…

                            1. саша 17 ноября 2016, 07:08
                              0 #

                              $caimage = $result['image'];
                              выдает ошибку, подскажите как задать в контроллере оригинальные размеры картинок, очень надо

                              1. Владимир 18 ноября 2016, 07:47
                                0 #

                                а что за ошибка?

                            2. Владимир 08 ноября 2016, 12:51
                              0 #

                              Кстати, как вариант — можно изображение выводить как background, а не img. тогда не будет проблемы если сама картинка больше чем должен быть блок, тем более под разные разрешения блоки будут перестраиваться, меняться их размеры.

                        2. алек 06 ноября 2016, 15:12
                          0 #

                          Поскажите можно ли сделать такое:
                          для категорий 1 уровня-вывод подкатегорий картинками в виде мозаики, вот пример

                          www.furniturevillage.co.uk/living-room/

                          а для подкатегории (категорий 2 уровня) -вывод категорий 3 уровня в виде обычных картинок

                          www.furniturevillage.co.uk/sofas-and-armchairs/sofas/

                          То есть для разных уровней категорий -вывести по разному блоки картинками

                          1. Владимир 06 ноября 2016, 19:58(Комментарий был изменён)
                            0 #

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

                            if ($this->request->get['path'] == $category_id) {$thiscat = '0';} else {$thiscat = '1';}
                            $data['categories'][] = array(
                            //Здесь что то есть, добавим:
                            'thiscat' => $thiscat
                            );
                            После в шаблоне уже можно делать провкерку и в зависимости от результата выводить разные блоки, классы:
                            <?php foreach ($categories as $category) { 
                            if ($category['thiscat'] == 0) {} else {}
                            } ?>

                            1. Артур 09 ноября 2016, 09:36(Комментарий был изменён)
                              0 #

                              К сожаленью, не работает

                              1. Владимир 09 ноября 2016, 10:40
                                0 #

                                проверял. для основной категории и подкатегории должны быть разные значения

                                1. алек 10 ноября 2016, 15:40
                                  0 #

                                  а можно ваш tpl файл глянуть, что то я запутался с циклами

                                  1. артур 14 ноября 2016, 09:46
                                    0 #

                                    Привет! может быть все таки вышлете свой файл .tpl, никак не получается вывести. выдает помимо картинок еще такую ошибку php foreach ($categories as $category) { if ($category['thiscat'] == 0) {} else {} }

                                    1. Владимир 14 ноября 2016, 09:55
                                      0 #

                                      Артур, Алек, пришлите лучше свои файлы на vl@onenv.ru… нет под рукой готового

                                      1. алек 20 ноября 2016, 13:25
                                        0 #

                                        на почту выслал, очень жду подправки, спасибо вам за помощь

                              2. саша 28 октября 2016, 05:24
                                0 #

                                помогите пожалуйста, есть структура

                                категория
                                -------подкатегория
                                ------------подкатегория1
                                ------------подкатегория2
                                ------------подкатегория3
                                ------------подкатегория4

                                как вывести так чтобы в «категория»- оставались картинки из «подкатегория», а в «подкатегория» -выводились уже все товары из подкатегория1, подкатегория2, подкатегория3

                                1. саша 26 октября 2016, 10:49(Комментарий был изменён)
                                  0 #

                                  Можно еще вопрос? он не по теме, но хорошо бы было для него статью отдельную написать, мне кажется многим это интересно. Так вот, хотелось бы прикрепить картинку (лэйбл) на товары из категории -хит продаж, по выборке бестселлеров, чтоб ставилась автоматически. Наподобие лэйбла для новинок (ставится лэйбл на товары из категории автоматически, которые были добавлены не позднее 14 дней назад)

                                  catalog/controller/product/category.php

                                  <![CDATA[$data['text_refine'] = $this->language->get('text_refine');]]>
                                  <![CDATA[
                                  $this->load->language('module/labels');
                                  $data['text_label_new'] = $this->language->get('text_label_new');
                                  ]]>


                                  <![CDATA['rating' => $result['rating'],]]>
                                  <![CDATA[
                                  'is_new' => date_diff(new DateTime(date(«Y-m-d H:i:s»)), new DateTime(date($result['date_added'])))->days,
                                  ]]>




                                  catalog/view/theme/*/template/product/category.tpl

                                  <![CDATA[]]>
                                  <![CDATA[
                                  <?php if( $product['is_new'] < 14) { ?>
                                  <?php echo $text_label_new; ?>

                                  <?php } ?>
                                  ]]>


                                  1. Владимир 26 октября 2016, 21:00
                                    0 #

                                    Да, можно вполне… найти бы время

                                  2. саша 25 октября 2016, 04:59(Комментарий был изменён)
                                    0 #

                                    Привет! Как же все таки вывести то категории 3 уровня, все обыскал, все темы только про меню, нету про категории((.

                                    категория
                                    -------подкатегория
                                    ------------подкатегория1
                                    ------------подкатегория2
                                    ------------подкатегория3
                                    ------------подкатегория4

                                    в данном примере при нажатии на категория -отображается картинка -подкатегория. А как сделать чтоб отображались картинки подкатегория1, подкатегория2, подкатегория3, подкатегория4 без картинки подкатегория. Можно ли так вообще сделать? Спасибо

                                    1. Владимир 25 октября 2016, 07:14
                                      0 #

                                      Добавил в материал… попробуйте. Это совсем без промежуточных категорий

                                      1. саша 25 октября 2016, 11:05(Комментарий был изменён)
                                        0 #

                                        ваш код делает следующее, выводит картинки одной категории с колличеством подкатегориий. сами подкатегории 3 уровня не выводятся
                                        ipic.su/img/img7/fs/567.1477393411.jpg

                                        1. Владимир 25 октября 2016, 11:10
                                          0 #

                                          Да, есть ошибка. Исправил:

                                          'name'  => $result['name'] нужно поменять на 'name'  => $cat['name']
                                          и ниже:
                                          . $result['category_id'] . на . $cat['category_id'] .

                                          1. саша 25 октября 2016, 12:43
                                            0 #

                                            Ну мастер, целую ручки. Просто красавчик! спасибо

                                            1. дмитрий 17 ноября 2016, 07:13(Комментарий был изменён)
                                              0 #

                                              Как же все таки задать вывод картинок подкатегорий оригинальных размеров, спасибо

                                              1. Владимир 18 ноября 2016, 07:56
                                                0 #

                                                Вывод с ресайзом:

                                                $caimage = $this->model_tool_image->resize($result['image'], 100, 100);
                                                Оригинал:
                                                $caimage = $result['image'];
                                                Выводит путь, какой есть в БД. Что бы получить путь от корня, нужно добавить «image»
                                                $caimage = '/image/'.$result['image'];

                                                1. алек 20 ноября 2016, 13:23
                                                  0 #

                                                  Спасибо, автор! помогло, сделал что хотел)

                                      2. Саша 23 октября 2016, 19:26
                                        0 #

                                        А как вывести картинки у категорий третьего уровня? заранее спасибо

                                        1. Владимир 23 октября 2016, 20:46(Комментарий был изменён)
                                          0 #

                                          а можете показать как у Вас третий уровень выведен? Посмотрел файлы, там не должно быть разницы в отображении, если только выводится в один уровень (по умолчанию)

                                          1. саша 24 октября 2016, 04:54(Комментарий был изменён)
                                            0 #

                                            ipic.su/img/img7/fs/123.1477284683.jpg
                                            вот смотрите есть -подкатегория-android. в ней подкатегории 3 уровня android1 и т.д., так вот я хочу чтобы выводились изображения в категории компьютер именно подкатегории android 1 и т.д. (саму ссылку android я сделаю неактивной). получается нужно вывести изображения категории 3 уровня

                                            1. Владимир 24 октября 2016, 07:45
                                              0 #

                                              так это в меню вывести нужно? Здесь про страницу категории… Что до меню, нужно смотреть как третий уровень в контроллере реализован (там 2 изначально), но если есть вывод названия, то и изображение вывести можно

                                              1. саша 24 октября 2016, 08:02
                                                0 #

                                                Нет! это как раз про категории, на скрине пониже, где выбререте категории, вот там нужны картинки из субкатегории 3 уровня

                                                1. Владимир 24 октября 2016, 08:21(Комментарий был изменён)
                                                  0 #

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

                                                  1. саша 24 октября 2016, 08:58(Комментарий был изменён)
                                                    0 #

                                                    да нет, все так то логично, это ж у меня показана страница для категории- компьютеры. в категории android уже другие вложенные в нее категории. Я то бы хотел чтобы в категории компьютеры были показаны картинки от таких категории как android 1, android 2, а android уже не выводилось. я видима скрином запутал вас (там выделено должно быть верхняя категория). вот сейчас скрин уже по категории android) ipic.su/img/img7/fs/1234.1477299457.jpg

                                        2. Виктор 13 октября 2016, 19:49(Комментарий был изменён)
                                          0 #

                                          Добрый вечер, сделал все по инструкции, все выводиться но у меня как и был вывод старый подсчета товаров + еще и добавился новый))
                                          подскажите как убрать старый то?
                                          скрин прилогаю. prntscr.com/cthppu
                                          спасибо.

                                          1. Владимир 17 октября 2016, 08:04
                                            0 #

                                            Пока могу сказать точно, что необходимы правки в контроллере… сравните что у Вас и что в примере. Если не получится, пришлите файл — поправлю (vl@onenv.ru)

                                          2. Andrey 21 сентября 2016, 10:49(Комментарий был изменён)
                                            0 #

                                            Привет, такая проблема, выводит только 5 подкатегорий, как исправить? Если больше то последниие 3 только

                                            1. Евгений 18 мая 2016, 17:54(Комментарий был изменён)
                                              0 #

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

                                              1. Владимир 23 мая 2016, 09:48
                                                0 #

                                                Задайте определенную высоту для элементов (.subcats li) — это самое простое.

                                                1. Павел 09 августа 2016, 20:32
                                                  0 #

                                                  Решить выравнивание гораздо просто добавление в стиль класса (.subcats li) такой строки как: padding:5px;

                                                  Вот и всё решение :)

                                                2. Дмитрий 02 марта 2016, 08:51
                                                  0 #

                                                  Да, это, спасибо :) Но новых материалов тоже жду.

                                                  1. Дмитрий 01 марта 2016, 22:23
                                                    0 #

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

                                                    Кроме того, чтоб два раза не вставать так сказать… какую строку удалить для того чтобы избавится от подсчёта товаров в подкатегории? По разному извращался с category.php но так и не добил. Спасибо.

                                                    1. Владимир 01 марта 2016, 22:46
                                                      0 #

                                                      Это? — в category.php строка 181, в category.tpl — 41, закомментировал. Или имеется ввиду что то другое?

                                                    2. Дмитрий 20 февраля 2016, 12:56
                                                      +1 #

                                                      Так точно, что-то я накосячил со вставкой в product.tpl проблему решил.

                                                      1. Дмитрий 20 февраля 2016, 09:50
                                                        0 #

                                                        Вместе с красивыми картинками, слетела сортировка по сетке или списку :D сменить нельзя.

                                                        1. Владимир 20 февраля 2016, 11:10
                                                          0 #

                                                          Это не от категорий… не связаны в общем то. Возможно что то другое случайно удалили/поменяли в процессе. Если других изменений не было, лучше взять нетронутые файлы и сделать все изменения на них.

                                                          1. Дмитрий 20 февраля 2016, 11:44
                                                            0 #

                                                            Проблема с файлом category.tpl Если заменить его оригиналом, сетка работает, если заменить его вашим вариантом, не работает. пробовал с ним играться, так и не нашёл строку которая за это отвечает.

                                                            1. Владимир 20 февраля 2016, 11:53
                                                              0 #

                                                              возьмите оригинал и замените в нем блок с выводом категорий. все должно работать

                                                        2. Дмитрий 19 февраля 2016, 23:32
                                                          0 #

                                                          Ура! всё получилось, спасибо за красивое решение моей проблемы.



                                                          Кроме того, имею наглость дать вам совет :) может быть стоит в конце статьи оставлять ссылки на уже отредактированные файлы? было бы крайне удобно.

                                                          1. Владимир 19 февраля 2016, 23:35
                                                            0 #

                                                            Ранее в нужные файлы уже могут быть внесены изменения, неосторожная замена и все пропало… лучше так

                                                          2. Дмитрий 18 февраля 2016, 18:17
                                                            0 #

                                                            А нет, это я уже запутался. Всё введено верно, ошибка та же. прилагаю файлы в сообщении.

                                                            rghost.ru/7FFdzyHrX
                                                            rghost.ru/8PJ95sVB2

                                                            1. Владимир 18 февраля 2016, 21:13(Комментарий был изменён)
                                                              0 #

                                                              Вот и кусок старого кода — здесь. Вот исправленный вариант

                                                            2. Дмитрий 18 февраля 2016, 18:10
                                                              0 #

                                                              У нас отличаются category.php, странно, у меня последняя версия.

                                                              1. Дмитрий 17 февраля 2016, 07:01(Комментарий был изменён)
                                                                0 #

                                                                Добрый день, сделал всё по инструкции. Появилась ошибка —


                                                                Если удалить строку 38 и 40 то ошибка и дубли названия категории пропадают, но название категории не получается поместить под изображение категории. Что-то я сделал не так, или с кодом что-то не то? Спасибо.

                                                                1. Владимир 17 февраля 2016, 07:56
                                                                  0 #

                                                                  Посмотрите внимательнее. Здесь не только изображение добавлено, но и изменен вывод названия. В оригинале это название (количество), а здесь название отдельно, количество отдельно (… разбиваем 'name' на 2 части — имя категории и счетчик товаров). В контроллере это видимо не сделано, вот и ошибка, а что касается дубля названия, то вероятно был оставлен старый код и добавлен новый (при полной замене такого быть не должно). Если Счетчик не нужен, можно оставить так как получилось на втором скрине, только или display:block для изображения назначить, или поместить название в какой-либо тег с данным свойством… к примеру, <?php echo $category['name']; ?>, или <?php echo $category['name']; ?>

                                                                  1. Дмитрий 17 февраля 2016, 08:52
                                                                    0 #



                                                                    Добавил весь код перед

                                                                    $data['categories'][] = array(
                                                                    стало ровнее, но ошибка не исчезла

                                                                    Если убрать строку 40 в tpl, то ошибка пропадает, но картинка занимает её место.

                                                                    1. Владимир 17 февраля 2016, 18:28(Комментарий был изменён)
                                                                      0 #

                                                                      Должно получиться как то так — http://httpmaster.ru/images/tpl-contr-cat.jpg

                                                                      1. Дворкин 08 сентября 2016, 12:40
                                                                        0 #

                                                                        Здравствуйте! Подскажите, пожалуйста, какой именно файл CSS править? Хочу попробовать на версии 1,5

                                                                  2. Дмитрий 17 февраля 2016, 08:36(Комментарий был изменён)
                                                                    0 #

                                                                    Код

                                                                    $data['categories'][] = array(
                                                                    'name' => $result['name'],
                                                                    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
                                                                    'image' => $caimage,
                                                                    'count' => ($this->config->get('config_product_count') ? $this->model_catalog_product->getTotalProducts($filter_data) : '')
                                                                    );
                                                                    Добавлять сразу после
                                                                    $data['categories'][] = array(
                                                                    или после
                                                                    $data['categories'][] = array(
                                                                    					'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                                                                    					'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
                                                                    				);
                                                                    ?

                                                                    1. Дмитрий 17 февраля 2016, 08:39
                                                                      0 #

                                                                      в файле category.tpl заменяю строки 29-54, они полностью совпадают с вашими. CSS также добавил. Видимо проблема в php

                                                                    2. Олег 05 мая 2016, 16:19
                                                                      0 #

                                                                      Владимир, спасибо большое за материал!
                                                                      Всем, у кого не получается, нужно заглянуть в /system/storage/modification/
                                                                      ocmod перехватывает все стандартные изменения, но если там поменять, все получится.