Перейти к содержанию
vpall

Как вывести название категории на странице поиска

Рекомендуемые сообщения

Всем доброго времени суток!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем доброго времени суток!

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

 

Получить категории товара имея его ID можно функцией:

public function getProductCategories($product_id) {
	$product_category_data = array();
	
	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
	
	foreach ($query->rows as $result) {
		$product_category_data[] = $result['category_id'];
	}
	return $product_category_data;
}

Получить кол-во найденных товаров можно добавив в файл "catalog/controller/product/search.php" код:

$this->data['cout_of_results'] = count($results);

Добавлять его нужно после:

$results = $this->model_catalog_product->getProducts($data);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope, спасибо!

с количеством получилось, а вот с названием категорий что-то не оченть понял

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

halfhope, спасибо!

с количеством получилось, а вот с названием категорий что-то не оченть понял

 

 

Постараюсь объяснить. Открываете файл "catalog/model/catalog/product.php" добавляете туда эту функцию, она вернет массив категорий, в котором содержится товар с ID, который вы указали. Потом её можно будет вызвать в любом контроллере вот так:

#подгружаем модель с нужной функцией, если не загружена
$this->load->model('catalog/product');
#Вызываем добавленную нами функцию из модели 
$product_categories = $this->model_catalog_product->getProductCategories($product_id);

Она вернет нам массив категорий, в которых содержится товар. Допустим, товар содержится в одной категории, то она вернет нам:

$product_categories = array(
  0 => 21
);

Т.е. $product_categories[0] = 21. 21 это ID категории, в которой содержится товар. Теперь мы можем получить данные о категории таким же образом:

#Подгружаем модель
$this->load->model('catalog/category');
#Получаем данные о категории товара
$category_info = $this->model_catalog_category->getCategory($product_categories[0]);

Теперь в переменной $category_info содержатся данные о категории, которые мы можем использовать. Вам будет нужен только $category_info['name'], в нем содержится название категории. 

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope, огромное спасибо за понятное и подробное описание!

Думаю, теперь все получится внедрить :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

halfhope, огромное спасибо за понятное и подробное описание!

Думаю, теперь все получится внедрить :)

 

 

Насчет кол-ва товаров. Неправильно Вам указал. Вот так правильно:

$count_data = $data;
$count_data['limit'] = 0;
$this->data['cout_of_results'] = $this->model_catalog_product->getTotalProducts($count_data);

В том же месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Получить категории товара имея его ID можно функцией:

public function getProductCategories($product_id) {
	$product_category_data = array();
	
	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
	
	foreach ($query->rows as $result) {
		$product_category_data[] = $result['category_id'];
	}
	return $product_category_data;
}

Получить кол-во найденных товаров можно добавив в файл "catalog/controller/product/search.php" код:

$this->data['cout_of_results'] = count($results);

Добавлять его нужно после:

$results = $this->model_catalog_product->getProducts($data);

 

 

 

 

Прописал в catalog/model/catalog/product.php примерно в 875 строке

public function getProductCategories($product_id) {
    $product_category_data = array();
    
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
    
    foreach ($query->rows as $result) {
        $product_category_data[] = $result['category_id'];
    }
    return $product_category_data;
}

Подскажите, пожалуйста, что делать дальше? Как теперь вывести на странице категории у каждого товара его категорию?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно получить поле ГЛАВНАЯ КАТЕГОРИЯ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.