0
Opencartの製品ページでは、同じブランドの製品をカテゴリ別に表示したいと思います。 以下のコードでは、特定のブランド製品が利用可能なカテゴリが表示されています。しかし、製品はカテゴリーの下に表示されていません。製品は1つのカテゴリの下にのみ表示されます。結果ページのスクリーンショットを追加する。最後のレコードだけを表示しているPHPのネストされたforeach ..!
このため専門家から少し助けを必要としています。
マイコード:
モデル/カタログ/ product.php
public function getManufacturerCategories($manufacturer_id) {
$query = $this->db->query("
SELECT
DISTINCT c.category_id,cd.name
FROM
". DB_PREFIX . "manufacturer m
LEFT JOIN ". DB_PREFIX. "product p ON (m.manufacturer_id = p.manufacturer_id)
LEFT JOIN ". DB_PREFIX. "product_to_category p2c ON (p2c.product_id = p.product_id)
LEFT JOIN ". DB_PREFIX. "category c ON (c.category_id = p2c.category_id)
LEFT JOIN ". DB_PREFIX. "category_description cd ON (cd.category_id = p2c.category_id)
WHERE
p.status = 1
AND m.manufacturer_id = '".(int)$manufacturer_id."'
AND c.status= 1
");
return $query->rows;
}
public function getProductSameBrand($manufacturer_id,$product_id,$cat_id,$cat_name) {
$product_data = array();
$query = $this->db->query("
SELECT
DISTINCT p.manufacturer_id,p.product_id,p2c.category_id,cd.name
FROM
" . DB_PREFIX . "product p
LEFT JOIN ". DB_PREFIX. "product_to_category p2c ON (p2c.product_id = p.product_id)
LEFT JOIN ". DB_PREFIX. "category_description cd ON (cd.category_id = p2c.category_id)
WHERE
cd.name = '".$cat_name."'
AND p.manufacturer_id = '".(int)$manufacturer_id."'
"
);
foreach ($query->rows as $result2) {
$product_data[$result2['product_id']] = $this->getProduct($result2['product_id']);
}
return $product_data;
}
コントローラ/製品/ product.php
$data['category_brand'] = array();
if((int)$product_info['manufacturer_id'] > 0){
$results = $this->model_catalog_product->getManufacturerCategories($product_info['manufacturer_id']);
}
foreach ($results as $result) {
$cat_name = $result['name'];
$cat_id = $result['category_id'];
$data['category_brand'][] = array(
'category_id' => $cat_id,
'name' => $cat_name
);
$data['products_brand'] = array();
if((int)$product_info['manufacturer_id'] > 0){
$results = $this->model_catalog_product->getProductSameBrand($product_info['manufacturer_id'],$this->request->get['product_id'],$cat_id,$cat_name);
}
foreach ($results as $result2) {
$data['products_brand'][] = array(
'product_id' => $result2['product_id'],
'name' => $result2['name'],
'catname' => $cat_name,
'href' => $this->url->link('product/product', 'product_id=' . $result2['product_id'])
);
}
}
ビュー/製品/ product.tpl
<?php foreach ($category_brand as $cat) { ?>
<h4><?php echo $cat['name']; ?></h4>
<?php foreach ($products_brand as $product) { ?>
<?php if($cat['name']==$product['catname']){?>
<a href="<?php echo $product['href']; ?>"> <?php echo $product['name']; ?></a><br/>
<?php } ?>
<?php } ?>
<hr/>
<?php } ?>