Jump to content

ré ecrire automatiquement un lien écrit en dur vers un lien rewrité


Recommended Posts

Bonjour,

je cherche une solution pour pouvoir rediriger automatiquement un lien écrit en dur vers un lien rewrité

Par exemple, je souhaiterais pouvoir écrire en dur un lien vers une page, que ce soit une page de produit, ou catégorie.
Il semble évident que si le lien change, je ne vais pas m'amuser à tout remodifier manuellement chaque lien...

J'ai creusé un peu et voilà où j'en suis arrivé, pour un lien vers une page produit.
Si l'on prend le produit avec l'identifiant 537 :

a href="{$link->getProductLink(537)}" >



Cela fonctionne, mais l'url n'est pas réecrite. Elle renvoi une url du type : "product.php?id_product=537".

Si l'on regarde comment est construite cette fonction, on s'aperçoit que pour récupérer l'url rewrité, il faut lui passer en paramètre un objet, une instance de la classe product.

Voici le code la fonction :

   /**
     * Return the correct link for product/category/supplier/manufacturer
     *
     * @param mixed $id_OBJ Can be either the object or the ID only
     * @param string $alias Friendly URL (only if $id_OBJ is the object)
     * @return string link
     */
   public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL)
   {
       if (!isset($this->allow)) $this->allow = 0;
       if (is_object($id_product))
           return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.(($id_product->category != 'home' AND !empty($id_product->category)) ? $id_product->category.'/' : '').intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') :
           (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
       elseif ($alias)
           return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.(($category AND $category != 'home') ? ($category.'/') : '').intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') :
           (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
       else
           return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product);
   }



La question est la suivante : comment lui envoyer cette instance ? J'ai regardé dans la classe product mais sans résultat...

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...