在子类别打开购物车中获取产品的父类别

时间:2014-03-24 19:27:20

标签: php opencart

如果我想在我的产品页面模板上添加一个如下所示的php语句:

<?php if (Product Has Parent Category = 146) {
// Do this 
} elseif (Product Has Parent Category = 130) {
// Do this 
} else {
// Do this } ?>

当然这不是代码,但我该怎么做?我基本上试图获得子类别所在的父类别。任何帮助将不胜感激。谢谢!

更新:

每个产品都分为多个类别。所以我应该有一个父类别数组。这是我为此找到的数据库结构。

product_to_category

product_id | category_id

类别

category_id | parent_id | ...

2 个答案:

答案 0 :(得分:1)

catalog/controller/product/product.php发现

$this->load->model('catalog/product');
//this will load product model

后添加

$cat_info = $this->model_catalog_product->getCategories($this->request->get['product_id']);
// this will give all the category of product

    foreach($cat_info as $cat_id){
    $cat = $this->model_catalog_category->getParentCategories($cat_id['category_id']);
    //this will give the parent category    

         if(!empty($cat)){
          foreach($cat as $ids){
          $this->data['path_id'][] = $ids['path_id'];   
         }
       }
    }

catalog/model/catalog/category.php添加

public function getParentCategories($category_id) {
    $query = $this->db->query("SELECT path_id FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' AND '" . (int)$category_id . "'!=path_id");

    return $query->rows;
}

现在在product.tpl

<?php 
if(in_array(20,$path_id)){
  echo 'exists';
}else{
  echo 'not exists';
}
?>

答案 1 :(得分:0)

我能够弄清楚。我写了这段代码,并在product.tpl上使用它。

 <?php 
    $current_product_id = "SELECT `product_id`,`category_id` FROM `oc_product_to_category` WHERE `product_id`='$product_id' ";   
    $current_product_ids = mysql_query($current_product_id);  
    $current_product_cat_ids='';

    while($current_product_cat_id = mysql_fetch_array($current_product_ids)){
        $current_product_cat_ids.=$current_product_cat_id['category_id'].',';
    }

    $parent_cat_path = mysql_query("SELECT `category_id`,`path_id` FROM `oc_category_path` WHERE `category_id` IN (" . rtrim($current_product_cat_ids, ',') . ")");
    $parent_cat_id_array='';
    while ($parent_cat_paths = mysql_fetch_array($parent_cat_path)) {  
        $parent_cat_id_array.=$parent_cat_paths['path_id'].','; 
    }

    $parent_cat_id_array_str = implode(',',array_unique(explode(',', $parent_cat_id_array)));

    if (strpos($parent_cat_id_array_str,'132') !== false) {
    // Do This Here
    } else { 
    //Do This Here 
    } ?>