Opencart (OCstore) как добавить категории на страницу "Поиска"
- Подробности
- Категория: Opencart (OCstore)
- Обновлено 22.01.2018
Доработка страницы результатов поиска OCstore 1.5.5.1.2
В стандартной поставке на странице результатов поиска нет релевантных категорий. Мы их добавим.
Сначала получим данные в модели. Для этого открываем файл /catalog/model/catalog/category.php и дописываем в начале файла сразу после
class ModelCatalogCategory extends Model {
новую функцию
public function getSearchCategories($keyword) {
$query = $this->db->query("SELECT c.category_id, c.image, cd.name
FROM " . DB_PREFIX . "category c
LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id)
WHERE cd.name LIKE '%" . $keyword . "%'
AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
AND c.status = '1'");
return $query->rows;
}
Теперь добавим вызов этих данных в контроллере.
Открываем файл /catalog/controller/product/search.php и после строки 164 вставим код:
$this->data['search_categories'] = array();
$search_cats = $this->model_catalog_category->getSearchCategories($search);
foreach($search_cats as $category) {
if($category['image']) {
$image = $category['image'];
} else {
$image = false;
}
$this->data['search_categories'][] = array(
'thumb' => $image,
'name' => $category['name'],
'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
);
}
Для вывода на странице списка категорий добавим код в файл шаблона.
Открываем /catalog/view/theme/default/template/product/search.tpl и в самом начале после строки 8
<h1><?php echo $heading_title; ?></h1>
добавляем код:
<div class="category-list">
<ul>
<?php foreach($search_categories as $category) { ?>
<li><?php echo '<a href="' . $category['href'] . '">'; ?>
<img width="180" src="/image/<?php echo $category['thumb'];?>"><span><?php echo $category['name'];?></span></a></li>
<?php } ?>
</ul>
</div>
Теперь на странице с результатами поиска, выше списка найденных товаров, отображается список найденных категорий.