2012-10-04 3 views
1

J'aimerais mettre en place une URL personnalisée pour notre panier Magento. L'url paht out-of-the-box Magento est/checkout/panier mais la demande du client/caisse/sac.URL personnalisée pour la page du panier Magento

J'ai essayé de quelque sorte * Gestion de réécriture d'URL dans backend - il fonctionne, mais je dois mettre à jour toutes les occurences dans le code à la nouvelle URL, parce que $ this-> getUrl (« caisse/panier ») ne marche pas traduire dans la caisse/sac * aussi j'ai essayé de suivre quelques conseils de http://alanstorm.com/magento_dispatch_rewrites_intro mais fondamentalement cela ne m'aide pas trop. * aussi j'ai essayé exemple de ce poste http://phprelated.myworks.ro/two-add-to-cart-buttons-with-different-redirect-actions-at-once-in-magnto/

Alors, est-il possible comment puis-je réécrire la traduction de chemin « caisse/panier » dans la caisse/sac sans mettre à jour tous les ocurrences dans nos modèles et classes $ this-> getUrl ('checkout/cart')

Toute solution dépendant de l'architecture du serveur web n'est pas la solution ultime.

Répondre

5

J'ai trouvé la solution

1) Je modèle réécrite core/url avoir souhaité la sortie

EDIT 1 - échantillon mise en œuvre https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

2) url Ajouté réécrire dans config. xml qui réécrit le chemin de l'URL depuis/checkout/bag to/checkout/panier

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

3) Ajout de la réécriture d'url dans le catalogue> Gestion de réécriture d'URL qui gère si quelqu'un vient à/checkout/panier puis il est redirigé vers/checkout/sac paht qui est correct.

Ces 3 points rendent le site cohérent et fonctionne sans aucun problème. C'est la façon de procéder sans réécrire des tonnes de modèles et de classes.

0

La façon Url Réécrit travail signifie que vous avez une url test.com/some sur la page et lorsque vous cliquez dessus, vous obtiendrez test.com/some2 à la place. Donc, réécrit ne change pas le lien d'ancrage réel - ils changent la destination de ce lien pour le nouveau destinataire.

Il n'y a pas de solution simple qui changera tous les liens d'ancrage aux nouveaux (en dehors de l'analyse et du remplacement des liens sur chaque page - ce qui n'est pas préférable).

Donc, si vous voulez laisser les liens d'ancrage tels qu'ils sont et obtenir la nouvelle URL après que l'utilisateur ait cliqué sur le lien, vous devez utiliser Url Rewrites. Cependant, si vous souhaitez modifier les liens réels sur la page, vous devez rechercher toutes les occurrences et les modifier manuellement.

Mage::getUrl() n'est pas un fabric qui fonctionne avec des alias (comme Mage::getModel()) - vous en obtiendrez ce que vous avez inséré, et la seule façon de changer le résultat Url est de changer les paramètres de revenu.

+0

Je suis toujours penser à une façon comment changer sortie de 'Mage :: getUrl()' juste via une configuration 'config.xml'. Je pense que changer toutes les occurrences de 'Mage :: getUrl ('checkout/cart')' est fini. Vous devrez également mettre à jour de nombreux modèles et classes. Il doit y avoir un moyen. – Jaro

0

Vous pouvez le faire en utilisant apache url rewrites. Quelque chose comme

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

Ce n'est pas la solution, il ne produira pas de liens corrects dans la sortie HTML. – Jaro

+1

Dans ce cas, vous devez réécrire 'Mage_Core_Model_Url' dans votre module et remplacer'/checkout/cart' par '/ checkout/bag' dans la méthode' getUrl() '. – Zyava

0

Cette réponse fonctionne pour modifier le nom de la liste de souhaits en modifiant les routeurs frontend dans l'application/etc/local.xml. Peut-être qu'il peut être adapté à vos besoins?

Change wishlist url in magento

Questions connexes