2012-10-04 24 views
1

我想爲我們的Magento籃子實現自定義網址。 Magento開箱即用的網址是/ checkout/cart,但客戶端請求/結帳/包。我試圖以某種方式 *在後端的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/Magento籃子頁面的自定義網址

所以例如,有沒有什麼辦法,我怎麼可以重寫從路徑「結帳/車」翻譯成結賬/袋,而不在我們的模板和類$這個 - >的getURL更新所有ocurrences ('checkout/cart')

任何取決於Web服務器體系結構的解決方案都不是最終的解決方案。

回答

5

事我發現溶液

1)I rewrited模型core/url具有期望的輸出

EDIT 1個 - 樣本實現https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

2)增加了URL改寫成配置。 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重寫入目錄> URL重寫管理,處理任何人來到/ checkout/cart然後他被重定向到/ checkout/bag paht這是正確的。

這3點使網站consisten和工作沒有任何問題。沒有重寫大量的模板和類,這是簡單的方法。

0

方式網址重寫工作意味着你必須在頁面上某些URL test.com/some,當你點擊它,你會得到test.com/some2代替。因此重寫不會更改實際的錨鏈接 - 它們會將該鏈接的目標更改爲新的收件人。

有沒有簡單的解決方案,將所有的錨鏈接更改爲新的(除了解析和替換每個頁面上的鏈接 - 這是不可取的)。

所以,如果你想離開錨點鏈接,並得到新的網址後,用戶點擊鏈接,你應該去網址重寫。但是,如果您想更改頁面上的實際鏈接,則需要搜索所有發生並手動更改它們。

Mage::getUrl()不是一個與別名操作的結構(如Mage::getModel()) - 您將從中得到您插入的內容,並且更改結果Url的唯一方法是更改​​收入參數。

+0

我還在想辦法如何改變'法師::輸出的getURL()'只是通過一些配置'config.xml'。我認爲改變所有Mage :: getUrl('checkout/cart')的發生已經過度了。您還需要更新許多模板和類。必須有一種方法。 – Jaro

0

你可以用apache url重寫。像

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

這不是解決方案,它不會在HTML輸出中產生正確的鏈接。 – Jaro

+1

在這種情況下,您應該在模塊中重寫'Mage_Core_Model_Url',並在'getUrl()'方法中用'/ checkout/bag'替換'/ checkout/cart'。 – Zyava