Magento篮子页面的自定义URL

时间:2012-10-04 08:04:22

标签: magento rewrite custom-url

我想为Magento的购物篮实施自定义网址。 Magento开箱即用的网址是/ checkout / cart但客户请求/结账/包。

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

那么,有什么方法我可以如何重写从路径'checkout / cart'到checkout / bag的翻译而不更新我们的模板和类中的所有事件$ this-> getUrl('checkout / cart')

任何取决于Web服务器架构的解决方案都不是最终的解决方案。

5 个答案:

答案 0 :(得分:6)

我找到了解决方案

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

编辑1 - 示例实施https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

2)在config.xml中添加了url重写,它将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重写添加到目录&gt; URL重写管理,处理是否有人来/ checkout / cart然后他被重定向到/ checkout / bag paht这是正确的。

这3点使网站一致并且没有任何问题。这是一种轻松的方式,无需重写大量的模板和类。

答案 1 :(得分:0)

Url重写的工作方式意味着您在页面上有一些网址test.com/some,当您点击它时,您将获得test.com/some2。因此重写不会更改实际的锚链接 - 它们会将该链接的目标更改为新收件人。

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

因此,如果您希望保留原始链接并在用户点击链接后获取新的Url,则应使用 Url重写。虽然如果要更改页面上的实际链接,您需要搜索所有实例并手动更改它们。

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

答案 2 :(得分:0)

你可以使用apache url rewrites来做到这一点。像

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

答案 3 :(得分:0)

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

Change wishlist url in magento

答案 4 :(得分:0)

管理更多网址翻译您可以使用此模块: http://www.magentocommerce.com/magento-connect/catalog/product/view/id/18160/