【问题标题】:Custom URL for Magento's basket pageMagento 购物车页面的自定义 URL
【发布时间】:2012-09-25 05:28:17
【问题描述】:

我想为我们的 Magento 购物篮实现自定义 URL。 Magento 开箱即用的 url paht 是 /checkout/cart 但客户端请求 /checkout/bag。

我试图以某种方式 * 后端的 URL 重写管理 - 它有效,但我需要将代码中的所有出现更新为新的 url,因为 $this->getUrl('checkout/cart') 不会转换为结帐/袋子 * 我也尝试听从http://alanstorm.com/magento_dispatch_rewrites_intro 的一些建议,但基本上它也对我没有帮助。 * 我也尝试了这篇文章中的例子http://phprelated.myworks.ro/two-add-to-cart-buttons-with-different-redirect-actions-at-once-in-magnto/

那么,有什么方法可以在不更新我们的模板和类 $this->getUrl('checkout/cart') 中的所有出现的情况下将翻译从路径 'checkout/cart' 重写为 checkout/bag

任何依赖于网络服务器架构的解决方案都不是终极解决方案。

【问题讨论】:

    标签: magento rewrite custom-url


    【解决方案1】:

    我找到了解决办法

    1) 我重写了模型 core/url 以获得所需的输出

    EDIT 1 - 示例实现https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

    2) 将 url 重写添加到 config.xml 中,它将 url 路径从 /checkout/bag 重写到 /checkout/cart

        <global>
          <rewrite>
            <mynamespace_mymodule_checkout_cart>
                <from><![CDATA[#^/checkout/bag#]]></from>
                <to>/checkout/cart</to>
            </mynamespace_mymodule_checkout_cart>
             </rewrite>
        </global>
    

    3) 将 url 重写添加到 Catalog > URL 重写管理,如果有人来到 /checkout/cart 然后他会被重定向到 /checkout/bag paht,这是正确的。

    这 3 点使网站保持一致并且可以正常工作。这是无需重写大量模板和类的简单方法。

    【讨论】:

      【解决方案2】:

      要管理更多的 url 翻译你可以使用这个模块: http://www.magentocommerce.com/magento-connect/catalog/product/view/id/18160/

      【讨论】:

        【解决方案3】:

        此答案适用于通过更改 app/etc/local.xml 中的前端路由器来更改愿望清单名称。也许它可以适应您的用途?

        Change wishlist url in magento

        【讨论】:

          【解决方案4】:

          您可以使用 apache url 重写来做到这一点。类似的东西

          RewriteRule ^/checkout/cart(.*)$ /checkout/bag$1 [R=301,NC,L]
          

          【讨论】:

          • 这不是解决方案,它不会在 HTML 输出中生成正确的链接。
          • 在这种情况下,您应该在模块中重写Mage_Core_Model_Url,并在getUrl() 方法中将/checkout/cart 替换为/checkout/bag
          【解决方案5】:

          Url Rewrites 的工作方式意味着页面上有一些 url test.com/some,当你点击它时,你会得到 test.com/some2。所以重写不会改变实际的锚链接——它们会将该链接的目的地更改为新的接收者。

          没有简单的解决方案可以将所有锚链接更改为新链接(除了解析和替换每个页面上的链接 - 这是不可取的)。

          因此,如果您想保留锚链接并在用户单击链接后获取新的 Url,您应该使用 Url Rewrites。虽然如果您想更改页面上的实际链接,您需要搜索所有出现并手动更改它们。

          Mage::getUrl() 不是使用别名操作的结构(如Mage::getModel()) - 您将从中获得您插入的内容,而更改结果 Url 的唯一方法是更改​​收入参数。

          【讨论】:

          • 我仍在考虑如何通过一些配置config.xml 来更改Mage::getUrl() 的输出。我认为改变Mage::getUrl('checkout/cart') 的所有事件已经过时了。您还需要更新许多模板和类。必须有办法。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多