問題描述
我目前正在嘗試使用 magento 生成自定義 url/路由,目前我已經在本地模塊的 config.xml 中設置了默認路由.
I am currently looking at trying to generate custom urls/routing using magento, currently I have set a default route in config.xml within the local module.
<frontend>
<routers>
<portfolios>
<use>standard</use>
<args>
<module>Custom_Portfolios</module>
<frontName>portfolios</frontName>
</args>
</portfolios>
</routers>
<default>
<router>portfolios</router>
</default>
</frontend>
這當前適用于/portfolios/index/action/custom-string 的 url 路徑,這是 magento 默認路由.我想要實現的是讓/portfolios/custom-string.html 我嘗試使用 mod_rewrite 規則但沒有成功,我找到了一些關于使用 .html 的自定義后綴的參考,我已將其添加到相同的 config.xml 文件.
This currently works with the url path of /portfolios/index/action/custom-string which is the magento default route. What I am trying to achieve is to have /portfolios/custom-string.html I have attempted to use a mod_rewrite rule with no success, I have found some references in relation to utilising a custom suffix of .html which I have added to the same config.xml file.
<default><portfolios><seo><portfolios_url_suffix>.html</portfolios_url_suffix></seo></portfolios></default>
我查看了與路由相關的 alan Storm 文檔,發現它僅與默認路由路徑相關,或者信息有點過時.
I have looked at the alan storm docs in relation to routing and found it relevent to the default routing paths only or the information is a little out-dated.
您是否知道在 magento 中控制路由的最佳方法以及可能易于遵循和相關的教程?如果是這樣,請分享 :D 很多
Do you know the best method to control the routing within magento with possibly an easy to follow and relevent tutorial? if so please share :D many
推薦答案
實現此目的的方法是重寫 URL.事實上,您發現的后綴配置可能被 Mage_Catalog 用于創建它的重寫集.我是第一次接觸這個特殊的功能,所以這個片段應該加一點鹽......
The way to do this is with an URL rewrite. In fact, the suffix config you found is probably used by Mage_Catalog to create it's sets of rewrites. I'm approaching this particular feature for the first time so this snippet should be taken with a pinch of salt...
// Creating a rewrite
/* @var $rewrite Mage_Core_Model_Url_Rewrite */
$rewrite = Mage::getModel('core/url_rewrite');
$rewrite->setStoreId($store_id)
->setIdPath('portfolios/'.$url_key)
->setRequestPath('portfolios/'.$url_key.'.html')
->setTargetPath('portfolios/index/action/id/'.$url_key)
->setIsSystem(true)
->save();
每個可能的路徑都需要一個新的重寫.
A new rewrite is needed for each possible path.
編輯;我添加了一個 setIdPath
因為它可能是必要的.
Edit; I've added a setIdPath
because it might be necessary.
這篇關于在 Magento 中生成自定義 URL的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!