-1

よし、カテゴリごとにメーカーのロゴを表示したい。メーカーのロゴはカテゴリに関連付ける必要があります。つまり、携帯電話のカテゴリには、カテゴリに属する​​メーカーのロゴのみを表示する必要があります。Microsoft や Sony のロゴのような携帯電話は、ここ (携帯電話のカテゴリ) に表示する必要はありませんが、代わりに表示する必要があります。ゲーム コンソール カテゴリで。

カタログ/コントローラー/製品/category.php

$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'])
);
} 

カテゴリ.tpl

<?php foreach ($manufacturers as $manufacturer) { ?>
<img src="<?php echo $manufacturer['manufacturer_image']; ?>" />
<?php } ?>

現在、すべてのカテゴリのすべてのメーカーのロゴが表示されます。

4

1 に答える 1

1

OpenCart のストック メーカー モデルはこの種の機能を提供しないため、新しいメソッドを作成する必要があります。さらに/catalog/model/product/manufactuer.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 クエリを少し最適化することもできますが、問題なく動作するはずです。

于 2013-06-22T15:06:18.430 に答える