如何隐藏我的Opencart Sitemap中的类别? [route=information/sitemap
]以及搜索引擎抓取工具?
我有一个类别(store.com/private
),我不喜欢在搜索结果或网站站点地图中。是否有扩展或代码,我可以vQmod来实现类别的结果?
由于没有名为/ private的文件夹,我不相信我可以将/ private简单地放在robots.txt文件中以阻止它为该类别编制索引。如果我被误导,请纠正我!此外,由于opencart有两个同一类别的URL,一个是类别ID的路由,这是否会导致进一步的问题?
答案 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
设置完全相同(例如,选择已启用和已禁用选项以及存储的1
和0
值在DB)。将catalog/model/catalog/category.php
方法复制到getCategories($orded_id)
时,应调整类别模型getCategoriesForSitemap($order_id)
,同时向查询添加条件,检查是否为站点地图启用了该类别。然后应在站点地图控制器中调用此方法。