Opencart - 隐藏Sitemap中的类别&搜索引擎

时间:2014-07-30 10:47:53

标签: php opencart

如何隐藏我的Opencart Sitemap中的类别? [route=information/sitemap]以及搜索引擎抓取工具?

我有一个类别(store.com/private),我不喜欢在搜索结果或网站站点地图中。是否有扩展或代码,我可以vQmod来实现类别的结果?

由于没有名为/ private的文件夹,我不相信我可以将/ private简单地放在robots.txt文件中以阻止它为该类别编制索引。如果我被误导,请纠正我!此外,由于opencart有两个同一类别的URL,一个是类别ID的路由,这是否会导致进一步的问题?

1 个答案:

答案 0 :(得分:1)

您可以将该类别的所有可能网址放入robots.txt文件中。如果private类别没有子项(子类别)并将其ID视为1,则可能是内容:

Disallow: /private
Disallow: /private/
Disallow: /index.php?route=product/category&path=1

对于站点地图,最省力的最简单解决方案是直接在模板中添加检查。首先确保category_id对模板可见,更改catalog/controller/information/sitemap.tpl默认代码:

$this->data['categories'][] = array(
    'name'     => $category_1['name'],
    'children' => $level_2_data,
    'href'     => $this->url->link('product/category', 'path=' . $category_1['category_id'])
);

进入这一个:

$this->data['categories'][] = array(
    'category_id' => $category_1['category_id'],
    'name'     => $category_1['name'],
    'children' => $level_2_data,
    'href'     => $this->url->link('product/category', 'path=' . $category_1['category_id'])
);

然后在相应的模板文件中更改

<?php foreach ($categories as $category_1) { ?>
<li><a href="<?php echo $category_1['href']; ?>"><?php echo $category_1['name']; ?></a>
<!-- ... -->
</li>
<?php } ?>

进入这个:

<?php foreach ($categories as $category_1) { ?>
<?php if ($category_1['category_id'] != 1) { ?>
<li><a href="<?php echo $category_1['href']; ?>"><?php echo $category_1['name']; ?></a>
<!-- ... -->
</li>
<?php } ?>
<?php } ?>

(仍然期望private类别的ID为1 - 如果不同则调整此值)。此站点地图解决方案应隐藏private类别及其可能的子项。如果您只需要隐藏一个类别就可以了,但如果您希望将来隐藏更多类别,我建议您采用下面描述的清洁方式。

更简洁但更省力的解决方案是在管理中添加新设置,并为类别添加新的DB列,允许您设置是否应该在站点地图中列出类别,然后是类别和它&# 39;如果为站点地图启用了类别,则应检索站点地图的子项和其他数据。此类设置可能与Status设置完全相同(例如,选择已启用已禁用选项以及存储的10值在DB)。将catalog/model/catalog/category.php方法复制到getCategories($orded_id)时,应调整类别模型getCategoriesForSitemap($order_id),同时向查询添加条件,检查是否为站点地图启用了该类别。然后应在站点地图控制器中调用此方法。