[英]Opencart - display one of two product's category
I have Opencart 1.5.1.3 and have modified Meta title to display "Product name - Product category" 我有Opencart 1.5.1.3,并修改了元标题以显示“产品名称-产品类别”
$product_info['name'] .
$ product_info ['name']。 ' - ' .
'-'。 $category_info['name']
$ category_info ['name']
The problem is when some of the products belong to two or more categories. 问题是某些产品属于两个或多个类别。 How to tell open cart to use any one of product's categories?
如何告诉打开的购物车使用产品的任何一个类别? I don't really care which one :)
我不在乎哪一个:)
$this->language->load('product/product');
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home'),
'separator' => false
);
$this->load->model('catalog/category');
$this->request->get['path'] = (isset($this->request->get['path']))? $this->request->get['path'] : $this->model_catalog_category->getCategoryPath($this->request->get['product_id']);
if (isset($this->request->get['path'])) {
$path = '';
foreach (explode('_', $this->request->get['path']) as $path_id) {
if (!$path) {
$path = $path_id;
} else {
$path .= '_' . $path_id;
}
$category_info = $this->model_catalog_category->getCategory($path_id);
if ($category_info) {
$this->data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path),
'separator' => $this->language->get('text_separator')
);
}
}
}
The code you have above assumes you get to a product via the categories, when in fact that doesn't always happen. 上面的代码假定您通过类别获得产品,而实际上并非总是如此。 Instead, you want to do the following
相反,您想要执行以下操作
Find this line in /catalog/controller/product/product.php
在
/catalog/controller/product/product.php
找到此行
$this->document->setTitle($product_info['name']);
Replace it with the following 用以下内容替换
$result = $this->db->query("
SELECT `cd`.`name`
FROM `" . DB_PREFIX . "product_to_category` `p2c`
LEFT JOIN `" . DB_PREFIX . "category_description` `cd`
ON `cd`.`category_id` = `p2c`.`category_id`
WHERE `p2c`.`product_id` = '" . (int) $product_id . "'
AND `cd`.`language_id` = '" . $this->confing->get('config_language_id') . "'
ORDER BY `cd`.`category_id` DESC
LIMIT 1
");
$category_name = $result->num_rows ? $result->row['name']: '';
$this->document->setTitle($product_info['name'] . (empty($category_name) ? '' : ' - ' . $category_name));
That will always show the last category created as the category assigned to the product. 这将始终显示最后创建的类别,即分配给产品的类别。 It will also not show a category if one isn't assigned to it (and hide the -)
如果未指定类别,则它也不会显示(并隐藏-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.