OpenCart 2 - 在产品页面上显示类别标题

时间:2016-04-19 07:19:06

标签: php opencart opencart2.x

我搜索并找到了结果,模块和解决方案,但所有都是开放式购物车1,我想要开放式购物车2.

在product.tpl

  <ul class="list-unstyled">
    <?php if ($manufacturer) { ?>
    <li><?php echo $text_manufacturer; ?> <a href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a></li>
    <?php } ?>
    <li><?php echo $text_model; ?> <?php echo $model; ?></li>
    <?php if ($reward) { ?>
    <li><?php echo $text_reward; ?> <?php echo $reward; ?></li>
    <?php } ?>
    <li><?php echo $text_stock; ?> <?php echo $stock; ?></li>
  </ul>

我想在此列表中显示类别标题。我在管理面板中找不到此选项,然后我决定手动执行此操作。我知道必须在product.php中做一些事情,但不知道如何获得产品名称

$data['category_title'] = $this->request->get['category_title'];

提前致谢

4 个答案:

答案 0 :(得分:0)

佩德拉姆,您的网站网址应为

$Categories = $this->model_catalog_category->getCategoryName($this->request->get['product_id']);

在这里 path = 20→category_id

但您的网址没有路径变量,因为您直接在搜索页面或主页产品列表中搜索。如果您想获得类别标题,那么您希望通过product_id开发代码。

以下是获取类别标题的代码

  

product.php→控制器文件

public function getCategoryName($product_id) {
       $query = $this->db->query("SELECT DISTINCT(cd.name),p2c.product_id,cd.category_id FROM " . DB_PREFIX . "product_to_category p2c, " . DB_PREFIX . "category_description cd WHERE p2c.product_id = '".$product_id."' AND cd.category_id = p2c.category_id AND cd.category_id != 1");    
       return $query->rows;
}
  

category.php→模型文件

$(function () {
  var $fields = $('.wql');
  $fields.on("keypress",function (e) {
    console.log(e.which,$(this).next('.wql').attr("id"));
    if (e.which === 13 && this.id ="submit_btn") {
      e.preventDefault();
      var idx = $fields.index(this);
      $fields.eq(idx+1).focus();
    }
  });
});

如果您的产品在多个类别下选择,那么它将给出结果数组,否则它将给出一个结果。

答案 1 :(得分:0)

Pedram, 如果您不想将产品选择为多个类别,请更改以下代码。

product.php(控制器)

$data['category_title'] = $this->model_catalog_category->getCategoryName($this->request->get['product_id']);

category.php(型号)

public function getCategoryName($product_id) { 
$query = $this-db-query("SELECT DISTINCT(cd.name),p2c.product_id,cd.category_id FROM " . DB_PREFIX . "product_to_category p2c, " . DB_PREFIX . "category_description cd WHERE p2c.product_id = '".$product_id."' AND cd.category_id = p2c.category_id AND cd.category_id != 1");     

return $query-row;}  

product.tpl(查看)

<?php echo $category_title;?>

答案 2 :(得分:0)

我知道很晚才回答,但我可能会帮助别人。在Opencart 2.3.0.2中测试

在产品页面中显示类别。

您必须编辑一些opencart文件。 转到Controllors&gt;产品&gt; product.php

找到以下行

$ product_info = $ this-&gt; model_catalog_product-&gt; getProduct($ product_id);

由于我们需要产品清单的类别,我们需要列表中每种产品的product_id

$this->load->model('catalog/category');
$categories = $this->model_catalog_category->getCategoryName($this->request->get['product_id']); if ($categories)
                                    {
                                                           $categories_info= $this->model_catalog_category->getCategory($categories[0]['category_id']);
                                                            $data['category_title']  = $categories_info['name']; 
                                                            $data['category_text'] = "Category : ";
                                                            //print_r($categories_info['name']);
                                                           // $this->data['category_title'] = $categories_info['name'];
                                    }

现在转到模型&gt;目录&gt;类别,您需要创建一个新功能 我们在控制器中使用的getCategoryName

  public function getCategoryName($product_id) {
                                  $query = $this->db->query("SELECT DISTINCT(cd.name),p2c.product_id,cd.category_id FROM " . DB_PREFIX . "product_to_category p2c, " . DB_PREFIX . "category_description cd WHERE p2c.product_id = '".$product_id."' AND cd.category_id = p2c.category_id AND cd.category_id != 1");    
                                                    return $query->rows;
                    }

现在转到View&gt;主题&gt; themename&gt;模板&gt;产品&gt; product.tpl并在要显示类别

的位置添加以下行
<?php echo $category_text; ?><?php echo $category_title; ?>

答案 3 :(得分:0)

我做这样的事情。如果您不想将产品选择为多个类别,请更改以下代码。

(catalog / controller / product / product.php)-控制器文件的路径 (system / storage / modification / catalog / controller / product / product.php)-opencart控制器文件的路径

将此代码粘贴到我们的控制器的两个文件中。我在此行之前经过:$product_info = $this->model_catalog_product->getProduct($product_id);

因为我们已经在变量中包含了我们的产品ID:

$category_information = $this->model_catalog_category->getCategoryName($product_id);

if ($category_information) {
    $data['category_name'] = $category_information['name'];
}

(catalog / model / catalog / category.php)-模型文件的路径

在最后一个关闭符号“}”之前粘贴此代码。您可以在我们的模型类中创建新函数:

public function getCategoryName($product_id) { 
$query = $this->db->query("SELECT DISTINCT(cd.name),p2c.product_id,cd.category_id FROM " . DB_PREFIX . "product_to_category p2c, " . DB_PREFIX . "category_description cd WHERE p2c.product_id = '".$product_id."' AND cd.category_id = p2c.category_id AND cd.category_id != 1");     
return $query->row;
}  

(目录/视图/主题/名称为主题/模板/product/product.tpl) 并将此代码粘贴到产品tpl上的任何位置。我经过<ul class="breadcrumb">...</ul>之后:

<?php if(isset($category_name)){ ?>
    <div class="heading-title">
        <h1><?=$category_name;?></h1>
    </div>
<?php } ?>

这就是所有人。

P.S。 OpenCart版本2.3.0.2