我有Opencart 1.5.1.3并修改了Meta标题以显示“产品名称 - 产品类别”
$ product_info ['name']。 ' - '。 $ category_info [ '名称']
问题在于某些产品属于两个或更多类别。如何告诉开放式购物车使用任何一种产品类别?我真的不在乎哪一个:)
$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')
);
}
}
}
答案 0 :(得分:1)
您上面的代码假定您通过类别访问产品,而事实并非总是如此。相反,您想要执行以下操作
在/catalog/controller/product/product.php
$this->document->setTitle($product_info['name']);
将其替换为以下
$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));
这将始终显示作为分配给产品的类别创建的最后一个类别。如果未分配类别(并隐藏 - )
,它也不会显示类别