Php OpenCart-在类别页面中显示制造商徽标
好的,我想显示每个类别的制造商徽标。制造商徽标应与类别相关,即手机类别应仅显示属于该类别的制造商徽标,如Microsoft或Sony的徽标不应显示在此处(手机类别),而应显示在游戏机类别中 catalog/controller/product/category.phpPhp OpenCart-在类别页面中显示制造商徽标,php,mysql,opencart,Php,Mysql,Opencart,好的,我想显示每个类别的制造商徽标。制造商徽标应与类别相关,即手机类别应仅显示属于该类别的制造商徽标,如Microsoft或Sony的徽标不应显示在此处(手机类别),而应显示在游戏机类别中 catalog/controller/product/category.php $this->load->model('catalog/manufacturer'); $this->data['manufacturers'] = array(); $results = $this-&
$this->load->model('catalog/manufacturer');
$this->data['manufacturers'] = array();
$results = $this->model_catalog_manufacturer->getManufacturers();
foreach ($results as $result) {
$this->data['manufacturers'][] = array(
'manufacturer_image' => $this->model_tool_image->resize($result['image'],80,80),
'name' => $result['name'],
'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
);
}
类别.第三方物流
<?php foreach ($manufacturers as $manufacturer) { ?>
<img src="<?php echo $manufacturer['manufacturer_image']; ?>" />
<?php } ?>
" />
目前,它显示所有类别中的所有制造商徽标。OpenCart的库存制造商模型没有提供此类功能,因此您需要创建一个新方法。在
/catalog/model/product/manufacturer.php中添加
public function getManufacturersByCatgoryId($category_id) {
$query = $this->db->query("
SELECT
m.*
FROM
" . DB_PREFIX . "product_to_category p2c
LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)
LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)
LEFT JOIN " . DB_PREFIX . "manufacturer m ON (m.manufacturer_id = p.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "manufacturer_to_store m2s ON (m2s.manufacturer_id = p.manufacturer_id)
WHERE
p2c.category_id = '" . (int) $category_id . "'
AND m2s.store_id = '" . (int) $this->config->get('config_store_id') . "'
AND p.status = 1
AND p2s.store_id = '" . (int) $this->config->get('config_store_id') . "'
GROUP BY
m.manufacturer_id
");
return $query->rows;
}
然后,您可以通过在控制器中执行此操作来获取它,并使用已获得的代码将其传递给视图:
$this->load->model('product/manufactuer');
$manufacturers = $this->model_product_manufacturer->getManufacturersByCategoryId($category_id);
$this->data['manufacturers'] = array();
foreach ($manufacturers as $manufacturer) {
$image = $manufacturer['image'];
$this->data['manufacturers'][] = array(
'manufacturer_image' => $this->model_tool_image->resize($result['image'],80,80),
'name' => $result['name'],
'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
);
}
我没有测试过上面的代码,如果你想的话,你可以稍微优化一下SQL查询,但它应该可以正常工作。你需要通过传递一个category\u id
来过滤getManufacture
的结果,此时函数不知道类别上下文。只是想知道为什么Sony不应该显示在超薄手机(正如我们在2012年之前拥有索尼爱立信,现在它是唯一一款索尼品牌手机)…你使用的是什么版本的OC?2.你如何指定类别制造商之间的关系?我想你应该能够将制造商与一个类别关联起来,然后选择所有相关的…或者你认为有人可以创建这样一个智能算法,让PHP知道微软生产Xbox-让我们来看看在游戏机类别上显示它???