【问题标题】:Magento : Use Categories Path for Product URLs configuration doesn’t workMagento:使用产品 URL 配置的类别路径不起作用
【发布时间】:2013-02-12 13:38:56
【问题描述】:

我的商店有几个类别。商店中的大多数产品都在 2-3 个类别中。 我希望每个产品只有一个 url - domain.com/product_name.html。 我不希望产品 URL 中包含类别路径。

我将“使用产品 URL 的类别路径”设置为“否”,但是当我重新索引目录 URL 重写时,它会为每个产品创建一个常规 url (domain.com/product_name.html) 和一个用于每个类别路径 ( domain.com/category_path/product_name.html)。

我已经删除了所有包含类别路径的产品 URL 重写,但是当我重新索引目录 URL 重写时,它会再次创建它们。

“使用产品 URL 的类别路径”配置不应该阻止这种情况吗?我错过了什么吗?

我正在使用 Magento 版本。 1.7.0.0

谢谢

【问题讨论】:

    标签: magento


    【解决方案1】:

    我想你误解了配置设置。

    该设置完全按照您的描述进行:每个类别有一个 url,并且全部有一个 url。

    问题是,产品没有主要类别。因此,如果您不在类别视图中,例如在小部件的主页上,magento 不知道应该将哪个类别用作 url 锚点。

    如果您在笼子视图中,所有 url 都应该是类别/产品 url,如果您在主页上并执行如下所述的操作:http://www.magentocommerce.com/wiki/groups/248/display_products_on_home_page 没有涉及类别。

    【讨论】:

    • 我不明白此配置设置为 YES 和配置设置为 No 之间有什么区别。这些选项之一不应该意味着不会有带有类别路径的产品 URL 吗?我不想为每个产品提供 3 个 URL 选项。只有一个 - domain.com/product_name.html。有没有办法做到这一点?
    • 如果不是,则只有整体 url,它们也用于目录视图 :) - 并回答问题:是的,只需选择 NO :-)跨度>
    • 我已经将它设置为 NO,但我仍然会使用类别路径重写产品 URL...(这是问题所在)。这个配置好像不行
    • 您是否重新运行了重写索引?
    • 是的。我清理了缓存并重新运行了 rewrtie 索引,但 URL 仍然存在。我还尝试删除不需要的 URL 重写,但是当我重新运行 rewrtie 索引时,Magento 会再次创建它们......
    【解决方案2】:

    根据您的 Magento 版本和设置这些 URL 的目的,您可能希望使用较新版本中的规范 URL 功能。

    https://stackoverflow.com/a/13500138/901449

    【讨论】:

    • 我不想每个产品都有 3 个 URL。是否有设置只有一个 url 而没有类别路径(domain.com/product_name.html)?我正在使用版本。 1.7.0.0
    【解决方案3】:

    Shani1351,我遇到了和你一样的问题。 我做了同样的操作: - 将“使用产品 URL 的类别路径”设置为“否”。 - 清除缓存。 - 截断“core_url_rewrite”。 - 清除缓存。 - 然后检查我的 url 重写数据(来自后端)。而且我看到每个产品都有很多网址(每个相关链接类别都有一个网址)。

    但是,如果您查看首页,您会发现产品只使用了一个网址,正如预期的那样。

    我认为 Magento 需要生成“整个包”网址,但不要在前端使用它们。


    编辑(3 年后):

    我最初的答案是错误的。产品 url 与类别路径一起返回。

    为了帮助magento在没有类别路径的情况下获得重写的产品url,我建议你重写以下方法(这里是一个POC,只是为了演示。不要修改核心文件,永远不要!):

    Mage_Catalog_Model_Product_Url::getUrl()

        public function getUrl(Mage_Catalog_Model_Product $product, $params = array())
    {
        $routePath      = '';
        $routeParams    = $params;
    
        $storeId    = $product->getStoreId();
        if (isset($params['_ignore_category'])) {
            unset($params['_ignore_category']);
            $categoryId = null;
        } else {
            $categoryId = $product->getCategoryId() && !$product->getDoNotUseCategoryId()
                ? $product->getCategoryId() : null;
        }
    
        if ($product->hasUrlDataObject()) {
            $requestPath = $product->getUrlDataObject()->getUrlRewrite();
            $routeParams['_store'] = $product->getUrlDataObject()->getStoreId();
        } else {
            $requestPath = $product->getRequestPath();
            if (empty($requestPath) && $requestPath !== false) {
                $idPath = sprintf('product/%d', $product->getEntityId());
                if ($categoryId) {
            //         $idPath = sprintf('%s/%d', $idPath, $categoryId);
                }
    

    查看注释行(我的 CE 1.7.0.2 上的 194)。 这是罪魁祸首!

    只需删除覆盖模块中的这一行:

    $idPath = sprintf('%s/%d', $idPath, $categoryId);
    

    希望它可以帮助某人。

    【讨论】:

      【解决方案4】:

      我们遇到了同样的问题,我们为我们的产品分配了多个类别,最终在 Google 网站管理员工具中出现重复的内容,因为即使产品完全相同,Google 也将它们视为不同的 URL。我们最终得到了以下令人讨厌的网址

      oursite.com/catgory-1/product-1.html
      
      oursite.com/catgory-2/product-1.html
      
      oursite.com/catgory-3/product-1.html
      
      oursite.com/product-1.html
      

      我们调查并发现以下扩展完全符合 Magento 配置 ("Use Categories Path for Product URLs"="NO") 应该做的事

      http://www.magentocommerce.com/magento-connect/seo-unique-catalog-urls.html

      我必须说这个扩展或功能应该在 Magento 中开箱即用。

      无论如何希望它对某人有所帮助。

      干杯

      S

      【讨论】:

        【解决方案5】:

        为了获得最佳 SEO 实践,我们希望同时启用类别和产品的规范元标记。但是为什么 Magneto doc 有推荐或列表作为其中一个示例?

        如果希望搜索引擎仅索引具有完整类别路径的页面,请执行以下操作: 一种。将使用类别的规范链接元标记设置为“是”。 湾。将产品的使用规范链接元标记设置为“否”

        如果您希望搜索引擎仅索引产品页面,请执行以下操作: 一种。将产品的使用规范链接元标记设置为“是”。 湾。将“使用类别的规范链接元标记”设置为 “否”

        其中一个有什么好处?

        我猜测最佳做法(在我的情况下,我客户的产品相似,但我让他们手动创建包含唯一关键字的最佳 URL 结构我们正在尝试为每个产品排名),将在下面公式是 SEO 的最佳选择吗?

        对产品 URL 使用类别路径:否 对类别使用规范链接元标记:是 对产品使用规范链接元标记:是

        【讨论】:

          猜你喜欢
          • 2013-01-06
          • 2015-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-15
          • 2013-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多