【问题标题】:Opencart, remove category string from the canonical URL of a productOpencart,从产品的规范 URL 中删除类别字符串
【发布时间】:2011-12-06 06:45:58
【问题描述】:

在 Magento 中有一个复选框 - 如果您希望或不希望在产品链接中包含类别。

在 Opencart 中没有这样的想法。 Opencart 中有什么 - 是一个管理链接的 SEO 解释的文件。

如果您在该文件中的链接前添加“/”(使用它的专业人员都知道),这将使链接成为绝对链接而不是相对链接,并且产品将出现在网络的开头站点根目录。

我担心这会在某些时候中断,我正在寻找一种可以应用于商业平台 20k+ 产品的解决方案,其中失败会带来真正的损害。

我所说的文件是这些:

1.4.x: /catalog/model/tool/seo_url.php        
1.5.x: /catalog/controller/common/seo_url.php

我已经知道你需要做的改变是:

$url .= '/' . $query->row['keyword']; 

替换为:

$url = '/' . $query->row['keyword']; 

它再次破坏了诸如面包屑之类的东西 - 我担心我不知道它破坏了哪些其他东西,因此我正在寻找另一种解决方案。

SEO 是强制性的,任何应用于 Opencart 的 SEO 建议/插件都将受到欢迎。我一直在研究相关软件的市场,如果我能得到更好的解决方案,我愿意更改 CMS(这将需要投入数小时的开发时间)。

目前我正在处理不灵活的 Magento,每次更改都让我们发疯 - 我们正在寻找一些错误且难以处理的东西。

【问题讨论】:

    标签: magento content-management-system e-commerce opencart


    【解决方案1】:

    您使用的是哪个版本的 OpenCart?最新的?

    OpenCart 的标准 MVC 结构与原生 PHP 编码相结合,使其成为非常灵活的 CMS 解决方案。(我实际上将核心用于多种类型的网站)。

    OpenCart 目前依赖于您提到的两个文件以及数据库中的 SEO 表来处理重写。

    它并没有真正“破坏”面包屑。面包屑更像是一种历史/导航辅助工具。使用 SEO 网址,如果您输入特定产品 URL,您将立即导航到特定项目。所以在层次结构中,它只会比主页低一级..
    例如yoursite.com/seoproduct

    'home' -> 'seo 产品'

    如果您使用导航层次结构,它仍然可以正确呈现(没有您提到的 mod) 'home' -> 'category -> 'sub-category' -> 'seo 产品'

    也就是说,理论上,使用 SEO 网址可以轻松完成您想要的任何事情。对这两个文件进行简单的修改就足够了。


    实际上,这仅取决于您要如何处理它们...

    您将如何处理指定产品的 SEO 网址?根据产品名称?产品型号?还是您打算在产品信息中使用原生 SEO 字段?

    如果是后者,购物车会自动处理重写。不幸的是,让购物车在本地处理它也带来了链接随着时间的推移而中断的最大风险。

    如果是前一种选择,您将需要对 SEO 重写的处理方式进行一些修改。


    一旦你确定了你将如何处理重写,你就可以将它付诸实践......

    最简单的修改是使用本机 SEO,然后添加冗余搜索后备。如果在 common/seo 控制器中没有找到结果,让它搜索结果。如果找到一个显示产品 - 如果找到多个显示结果..

    另一方面,您可以完全修改这两个文件并使用自定义 SEO 处理。 (再次使用搜索来查找产品)...

    两种方法我都做过...第一种往往具有更好的性能,因为它仅在直接查询没有返回结果时进行数据库/文本搜索...

    【讨论】:

    • 感谢您的复杂回答!是的,在这个阶段,我正在为类别提供虚假链接或在这些文件中工作之间交替。可能我已经设法在此页面上更好地解释了:forum.opencart.com/…。我仍然很困惑,我不知道采取什么方法来实现长期的 opencart 承诺。
    【解决方案2】:

    头部有一个规范标签(至少在 1.5.0 版中),在我的测试中,无论页面是通过 http://example.com/category1/product-123 还是 http://example.com/product-123 访问,它都保持不变。

    <link href="http://example.com/product-123" rel="canonical" />
    

    我建议您查看 How can I create custom SEO-friendly URLs in OpenCart? 以获取您的其他页面(信息、购物车、结帐等)。

    【讨论】:

      【解决方案3】:

      我已决定:

      • 未在每个类别的 SEO 字段上设置字符串
        • 这不会在产品前添加类别名称

      这意味着我将拥有 /product 而不是 /category/product

      正如 CarpeNoctumDC 所说,我可以更改 PHP 文件,以便可以自动删除该类别,但我可以看到的缺点是:

      1. 您需要在每次更新时更新核心 PHP 文件
      2. 无法证明有些地方对你不利,因为它不是主题的一部分,而是 opencart 核心的一部分

      好消息是在产品名称之前不需要品牌/制造商字符串(我们中的许多人可能需要),因为我们可以使用制造商功能。

      通过这种方式,类别/子类别可以是不相关的 SEO 文本(在我的情况下是),产品链接由 opencart 合法设置为 /{link},这完全是 SEO 友好的,如果我需要代表与制造商的链接我只需要为制造商本身设置一个 SEO 链接。这将生成 /{manufacturer}/{link_of_the_product},它的顶部有一个指向 /{link_of_the_product} 的规范链接 - 这样 Google 就不会失望。

      就在此时,我正在从旧的 Magento 1.6 进行导出/导入,这对于上述定制的 opencart 来说变得很痛苦。

      我们已经通过了 Google Panda - 该域没有不良历史记录,到目前为止没有重复的内容(约 10k 产品) - 我们将看看这次重大更新后情况如何。

      如果 Google 不同意此配置,我将发布有关此主题的警告。

      波格丹

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多