我想为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服务器架构的解决方案都不是最终的解决方案。
答案 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中的前端路由器来更改心愿单名称。也许它可以适应您的用途?
答案 4 :(得分:0)