Использование категории товаров в качестве статьи



Появилась интересная задача: нужна возможность использовать категории продуктов в качестве статей. Это нужно для того, чтобы информационную статью можно было разместить в главном меню. По идее это можно сделать сразу в стандартном Opencart. Проблему представляют лишь кнопка "Продолжить", текст "В данной категории нет товаров", помимо этого нужно скрыть такой пункт из бокового меню категорий.

Статьи Opencart

  1. Для начала решим первые две проблемы, открываем: /catalog/view/theme/default/template/product/category.tpl

Находим код:

      <?php if (!$categories && !$products) { ?>
      <p><?php echo $text_empty; ?></p>
      <div class="buttons">
        <div class="pull-right"><a href="<?php echo $continue; ?>" class="btn btn-primary"><?php echo $button_continue; ?></a></div>
      </div>
      <?php } ?>

И удаляем его.

  1. Открываем контроллер модуля "Категории": /catalog/controller/module/category.php, находим вот такой большой кусочек кода:
					$children_data[] = array(
						'category_id' => $child['category_id'],
						'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
						'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);

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

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

'products' => $this->model_catalog_product->getTotalProducts($filter_data)

В итоге этот большой кусочек кода превращается в:

					$children_data[] = array(
						'category_id' => $child['category_id'],
						'products' => $this->model_catalog_product->getTotalProducts($filter_data), 
						'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
						'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);
				
			$data['categories'][] = array(
				'category_id' => $category['category_id'],
				'products' => $this->model_catalog_product->getTotalProducts($filter_data), 
				'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
				'children'    => $children_data,
				'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
			);
  1. Теперь, открываем шаблон модуля "Категории": /catalog/view/theme/default/template/module/category.tpl

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

<?php foreach ($categories as $category) { ?>

На:

  <?php foreach ($categories as $category) 
    if($category['products'] || $category['children']){ ?>

И делаем такую же проверку для дочерних категорий, меняем:

<?php foreach ($category['children'] as $child) { ?>

На:

  <?php foreach ($category['children'] as $child) 
    if($child['products']){ ?>

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

Использование категории в качестве статьи


Сообщество: AWS

Комментариев(2)


ID: #468   Создан:
Автор: Михаил

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

ID: #469   Создан:
Автор: ololoev
>>468

Готового функционала под подобную разметку нет. Но можно сверстать обычную страничку на основе категории и для изображений использовать галерею, которая идёт в комплекте: <a href="http://allwebstuff.info/opencart-фотогалерея/">http://allwebstuff.info/opencart-фотогалерея/</a>

Всего: 2 комментариев на 1 страницах

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



Сообщества