хуйу нас не матерятся
Появилась интересная задача: нужна возможность использовать категории продуктов в качестве статей. Это нужно для того, чтобы информационную статью можно было разместить в главном меню. По идее это можно сделать сразу в стандартном Opencart. Проблему представляют лишь кнопка "Продолжить", текст "В данной категории нет товаров", помимо этого нужно скрыть такой пункт из бокового меню категорий.
Находим код:
<?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 } ?>
И удаляем его.
$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'])
);
Добавляем проверку, есть ли дочерние категории или товары у каждой категории. Если их нет, скрываем её. Меняем:
<?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']){ ?>
В итоге, если у категории первого уровня нет ни продуктов, ни дочерних категорий, она скроется из бокового меню. Если у дочерней категории нет продуктов, она также скроется из бокового меню. Теперь чтобы использовать категорию в качестве статьи,, достаточно лишь не заносить в неё товары.
Готового функционала под подобную разметку нет. Но можно сверстать обычную страничку на основе категории и для изображений использовать галерею, которая идёт в комплекте: <a href="http://allwebstuff.info/opencart-фотогалерея/">http://allwebstuff.info/opencart-фотогалерея/</a>
Здравствуйте!!! А можно сделать что бы еще и фото добавлялись с текстом как у товара с предосмотром? К примеру текст и ниже как бы маленькая галерея что ты не вставлять картинки в редактор. У меня проблема встала нужна категория сертификаты и лицензии с текстом и картинками кликая на которые всплывала бы большое изображение сертификата или лицензии. Думаю не мне одному это надо жаль что такой функции не в движке.