Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Вопрос про вывод производителей в категориях


 Поделиться

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

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

Думаю нужно будет подключить таблицу manufacturer_description 

 

	<file path="catalog/model/catalog/manufacturer.php">
		<operation error="skip">
			<search><![CDATA[public function getManufacturers($data = array()) {]]></search>
			<add position="before"><![CDATA[
public function getBrandsByCategoryId($category_id) {
    $query = $this->db->query("
		SELECT
			m.* 
		FROM
			" . DB_PREFIX . "product p 
		RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON 
			p.product_id = p2c.product_id 
		LEFT JOIN " . DB_PREFIX . "manufacturer m ON
			p.manufacturer_id = m.manufacturer_id
		WHERE 
			p2c.category_id = " . (int)$category_id . " AND 
			m.manufacturer_id IS NOT NULL
		GROUP BY m.manufacturer_id
    ");
    return $query->rows;
}   	
			]]></add>
		</operation>
	</file>
	
	<file path="catalog/controller/product/category.php">
		<operation error="skip">
			<search><![CDATA[$category_info = $this->model_catalog_category->getCategory($category_id);]]></search>
			<add position="before"><![CDATA[
$this->load->model('catalog/manufacturer');
$brands = $this->model_catalog_manufacturer->getBrandsByCategoryId($category_id);
$data['brands'] = array();
foreach ($brands as $brand) {
	$image = $brand['image'];
	$data['brands'][] = array(
		'name'			=> $brand['name'],
		'image'			=> $this->model_tool_image->resize($brand['image'], 180, 54),
		'href_brand'	=> $this->url->link('product/manufacturer/info',  'manufacturer_id=' . $brand['manufacturer_id'] . $url)
	);
}
			]]></add>
		</operation>
	</file>

 

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


1 час назад, alexb сказал:

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

Думаю нужно будет подключить таблицу manufacturer_description 

 

 

	<file path="catalog/model/catalog/manufacturer.php">
		<operation error="skip">
			<search><![CDATA[public function getManufacturers($data = array()) {]]></search>
			<add position="before"><![CDATA[
public function getBrandsByCategoryId($category_id) {
    $query = $this->db->query("
		SELECT
			m.*, md.description 
		FROM
			" . DB_PREFIX . "product p 
		RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON 
			p.product_id = p2c.product_id 
		LEFT JOIN " . DB_PREFIX . "manufacturer m ON
			p.manufacturer_id = m.manufacturer_id
		LEFT JOIN " . DB_PREFIX . "manufacturer_description md ON 
			(m.manufacturer_id = md.manufacturer_id AND md.language_id = '" . (int)$this->config->get('config_language_id') . "')
		WHERE 
			p2c.category_id = " . (int)$category_id . " AND 
			m.manufacturer_id IS NOT NULL
		GROUP BY m.manufacturer_id
    ");
    return $query->rows;
}   	
			]]></add>
		</operation>
	</file>
	
	<file path="catalog/controller/product/category.php">
		<operation error="skip">
			<search><![CDATA[$category_info = $this->model_catalog_category->getCategory($category_id);]]></search>
			<add position="before"><![CDATA[
$this->load->model('catalog/manufacturer');
$brands = $this->model_catalog_manufacturer->getBrandsByCategoryId($category_id);
$data['brands'] = array();
foreach ($brands as $brand) {
	$image = $brand['image'];
	$data['brands'][] = array(
		'name'			=> $brand['name'],
		'description'	=> $brand['description'],
		'image'			=> $this->model_tool_image->resize($brand['image'], 180, 54),
		'href_brand'	=> $this->url->link('product/manufacturer/info',  'manufacturer_id=' . $brand['manufacturer_id'] . $url)
	);
}
			]]></add>
		</operation>
	</file>

попробуйте так, не проверял

ну и во вьюхе вывести description

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Как-то так:

SELECT
    m.*, md.description AS description
FROM
    " . DB_PREFIX . "product p
RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON
    p.product_id = p2c.product_id
LEFT JOIN " . DB_PREFIX . "manufacturer m ON
    p.manufacturer_id = m.manufacturer_id
LEFT JOIN " . DB_PREFIX . "manufacturer_description md ON
    (m.manufacturer_id = md.manufacturer_id)
WHERE
    p2c.category_id = " . (int)$category_id . " AND 
    m.manufacturer_id IS NOT NULL AND 
    md.language_id = '" . (int)$this->config->get('config_language_id') . "'
GROUP BY
    m.manufacturer_id

и в $brand['description'] будет ваше описание бренда на выбранном языке

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

все работает, оба способа ))

При чем description выводится а вот поле которое я создал, и которое в той же таблице нет, пишет Undefined index:name1, хотя все по аналогии и поля похожи и таблица таже manufacturer_description

Изменено пользователем alexb
Ссылка на комментарий
Поделиться на других сайтах


разобрался что нужно изменить m.*, md.description AS description

а как добавить еще значение?

 

 

m.*, md.description AS description,
m.*, md.description1 AS description1

Изменено пользователем alexb
Ссылка на комментарий
Поделиться на других сайтах


1 минуту назад, alexb сказал:

разобрался что нужно изменить m.*, md.description AS description

а как добавить еще значение?

 

 

m.*, md.description AS description,
m.*, md.description1 AS description1

 

SELECT
			m.*, md.description, md.name1 

 

и по-хорошему description прогнать через декодирование тегов.

'description'	=> html_entity_decode($brand['description'], ENT_QUOTES, 'UTF-8');

 

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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