您可以将该类别的所有可能 URL 放入 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 类别以及可能的子项。如果您只需要隐藏一个类别,这是完全可以的,但如果您以后想隐藏更多类别,我建议您使用下面描述的更简洁的方式。
更简洁但更省力的解决方案是在管理中添加一个新设置,并为类别添加一个新数据库列,允许您设置该类别是否应在站点地图中列出,然后是该类别及其子类别如果为站点地图启用了类别,则应仅为站点地图检索其他数据。这样的设置可能看起来与 Status 设置完全相同(例如,带有 Enabled 和 Disabled 选项的选择以及存储在 DB 中的 1 和 0 值)。类别模型catalog/model/catalog/category.php 应该调整,将getCategories($orded_id) 方法复制到getCategoriesForSitemap($order_id),同时向查询添加一个条件,检查是否为站点地图启用了类别。然后应该在站点地图控制器中调用此方法。