的类别和子类别
问题描述:
我有一个包含从我Opencart的商店类别和子类别的下拉列表Opencart的选择下拉菜单中,但我似乎无法得到SEO关键词的网址显示为选项值:的类别和子类别
<select name="cat_id" id="category-select" class="span4">
<option value="">Browse by category</option>
<?php
$cats = $this->model_catalog_category->getCategories();
foreach ($cats as $cat) {
echo '<option value="' . $this->url->addRewrite('product/category', '&category_id=' . $cat['category_id']) . '">' . $cat['name'] . '</option>';
$subcats = $this->model_catalog_category->getCategories($cat['category_id']);
foreach ($subcats as $subcat) {
echo '<option value="' . $this->url->addRewrite('product/category', '&category_id=' . $subcat['category_id']) . '">- ' . $subcat['name'] . '</option>';
}
}
?>
</select>
我OpenCart是新手,对addRewrite函数需要做什么还不太确定。似乎也无法在OpenCart文档中找到任何提及。
答
这可能是因为使用了错误的方法。对于SEO网址你必须使用link()
方法。当然,你忘记了MVC。正确的做法是修改控制器,这将加载并准备将传递到模板然后的数据。模板应该吸取/只存在于数据...
因此,让我们假设它是category
控制器和模板,让我们先编辑权控制器(catalog/controller/product/category.php
):
$this->data['my_categories'] = array();
foreach($this->model_catalog_category->getCategories() as $category) {
$this->data['my_categories'][] = array(
'title' => $category['name'],
'href' => $this->url->link('product/category', 'path=' . $category['category_id']),
);
}
这仅适用于因此我不在这里加载子类别,但方法是一样的。
现在呈现数据的模板(这样catalog/view/theme/<YOUR_THEME>/template/product/category.tpl
):
<select name="cat_id" id="category-select" class="span4">
<option value="">Browse by category</option>
<?php if($my_categories) { ?>
<?php foreach ($my_categories as $category) { ?>
<option value="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></option>
<?php } ?>
<?php } ?>
</select>
编辑:搜索引擎优化链接子类别应该是:
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $subcategory['category_id'])
谢谢。我已经添加了子类别,但是能否请你帮我用一个子类别的SEO URL:\t'href'=> $ this-> url-> link('product/category','path ='。$ category [ 'category_id']。'&path ='。$ subcategory ['category_id']) – 2013-05-07 15:12:56
@FriendlyCode检查我编辑的答案。请享用! – shadyyx 2013-05-07 15:15:08