pierre-paul Posted October 27, 2011 Share Posted October 27, 2011 Je me permets de créer ce topique, n'ayant pas trouvé de solution équivalente pour la 1.4.X.X Ce code ne fonctionne pas chez moi, J'ai la version 1.4.4.1 /* CODE A INSERER A PARTIR D'ICI */ /***** Test et correction des URL non valides *****/ if((!(isset($_GET['id_product']) AND Validate::isUnsignedId($_GET['id_product'])))&&(strpos($_SERVER["REQUEST_URI"],"/productquestion/")===false)&&(strpos($_SERVER["REQUEST_URI"],"/sendtoafriend/")===false)) { // Nous sommes sur une page produit $cookie = new Cookie('ps'); Tools::setCookieLanguage(); $product = new Product(intval($_GET['id_product']), true, intval($cookie->id_lang)); if (Validate::isLoadedObject($product) AND $product->active) { $goodurl=$_GET['id_product']."-".$product->link_rewrite.".html"; // URL theorique $currenturl=basename($_ENV['REQUEST_URI']); // URL courante $redir=strcmp($goodurl, $currenturl); if($redir!=0) { // Pas la bonne URL donc redirection HTTP 301 vers l'URL correcte header('HTTP/1.1 301 Moved Permanently', false, 301); header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl); exit(); } }; } if (isset($_GET['id_category']) AND Validate::isUnsignedId($_GET['id_category'])) { // Nous sommes sur une page Categorie $cookie = new Cookie('ps'); Tools::setCookieLanguage(); $category = new Category(intval(Tools::getValue('id_category')), intval($cookie->id_lang)); if (Validate::isLoadedObject($category) AND $category->active) { $paramurl=""; // Detection d'un eventuel numero de page if (isset($_GET['p'])) { $varpagenumber=$_GET['p']; if($varpagenumber>1) { $paramurl="?p=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; if (isset($_GET['n'])) { $varpagenumber=$_GET['n']; if($varpagenumber>1) { $paramurl.=(empty($paramurl)?"?":"&")."n=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; // Detection des variables eventuelles de tri de produits if (isset($_GET['orderby'])) { $varorderby=$_GET['orderby']; $paramurl.=(empty($paramurl)?"?":"&")."orderby=$varorderby"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; if (isset($_GET['orderway'])) { $varorderway=$_GET['orderway']; $paramurl.=(empty($paramurl)?"?":"&")."orderway=$varorderway"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; $goodurl=$_GET['id_category']."-".$category->link_rewrite.$paramurl; // URL theorique $currenturl=basename($_ENV['REQUEST_URI']); // URL courante $redir=strcmp($goodurl, $currenturl); if($redir!=0) { // Pas la bonne URL donc redirection HTTP 301 vers l'URL correcte header('HTTP/1.1 301 Moved Permanently', false, 301); header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl); exit(); } }; } // FIN DU CODE A INSERER Y a-il une solution pour avoir NOINDEX / FOLLOW sur les pages contenant les variables : 'orderby''orderway''p''n' Pour les versions 1.4.x.x. Module, code, bref une solution autre que le robot.txt et autre manipulation google webmatertool. Merci pour vos propositions. Link to comment Share on other sites More sharing options...
pierre-paul Posted October 30, 2011 Author Share Posted October 30, 2011 Bon, au final j'ai réussi d'une manière barbare mais ça marche. Le code est inséré dans le FrontControlleur,php de la manière suivante. ob_start(); // Debut de la modification if (isset($_GET['id_category']) AND Validate::isUnsignedId($_GET['id_category'])) { // Nous sommes sur une page Categorie $cookie = new Cookie('ps'); Tools::setCookieLanguage(); $category = new Category(intval(Tools::getValue('id_category')), intval($cookie->id_lang)); if (Validate::isLoadedObject($category) AND $category->active) { $paramurl=""; // Detection d'un eventuel numero de page if (isset($_GET['p'])) { $varpagenumber=$_GET['p']; if($varpagenumber>1) { $paramurl="?p=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; if (isset($_GET['n'])) { $varpagenumber=$_GET['n']; if($varpagenumber>1) { $paramurl.=(empty($paramurl)?"?":"&")."n=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; // Detection des variables eventuelles de tri de produits if (isset($_GET['orderby'])) { $varorderby=$_GET['orderby']; $paramurl.=(empty($paramurl)?"?":"&")."orderby=$varorderby"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; if (isset($_GET['orderway'])) { $varorderway=$_GET['orderway']; $paramurl.=(empty($paramurl)?"?":"&")."orderway=$varorderway"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; $goodurl=$_GET['id_category']."-".$category->link_rewrite.$paramurl; // URL theorique $currenturl=basename($_ENV['REQUEST_URI']); // URL courante $redir=strcmp($goodurl, $currenturl); if($redir!=0) { // Pas la bonne URL donc redirection HTTP 301 vers l'URL correcte header('HTTP/1.1 301 Moved Permanently', false, 301); header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl); exit(); } }; } /* fin modif*/ /* Loading default country */ Il ne me reste plus qu'a le faire en Overdrive pour que ce soit plus 'propre' mais je ne sais pas comment faire. Une aide final serait le bien venue. Link to comment Share on other sites More sharing options...
divers972 Posted December 2, 2011 Share Posted December 2, 2011 Salut As tu réussi au final? Link to comment Share on other sites More sharing options...
Trafiquant Posted August 14, 2013 Share Posted August 14, 2013 (edited) Hello Je réponds un peu tard mais je viens de tomber sur ce topic qui vient de me sauver la mise sur une 1.4.4.1. Du coup, je donne la solution pour overrider (et pas overdriver ) histoire qu'on ait un topic résolu de A à Z avec une solution propre. Il suffit de créer dans le dossier /override/classes/ (car le FrontController.php se situe dans /classes/) un nouveau fichier FrontController.php. A l'intérieur de ce fichier il faut déclarer la classe FrontController qui vient overrider / étendre / compléter la classe initiale, qui se nomme FrontControllerCore : class FrontController extends FrontControllerCore{ } Et à l'intérieur de cette classe, tu copies l'intégralité de la fonction publique init() qui contient ta modif : <?php class FrontController extends FrontControllerCore{ public function init() { global $cookie, $smarty, $cart, $iso, $defaultCountry, $protocol_link, $protocol_content, $link, $css_files, $js_files; /* [...] (COPIER TOUT LE CONTENU jusqu'à "ob_start();") */ ob_start(); // Debut de la modification if (isset($_GET['id_category']) AND Validate::isUnsignedId($_GET['id_category'])) { // Nous sommes sur une page Categorie $cookie = new Cookie('ps'); Tools::setCookieLanguage(); $category = new Category(intval(Tools::getValue('id_category')), intval($cookie->id_lang)); if (Validate::isLoadedObject($category) AND $category->active) { $paramurl=""; // Detection d'un eventuel numero de page if (isset($_GET['p'])) { $varpagenumber=$_GET['p']; if($varpagenumber>1) { $paramurl="?p=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; if (isset($_GET['n'])) { $varpagenumber=$_GET['n']; if($varpagenumber>1) { $paramurl.=(empty($paramurl)?"?":"&")."n=$varpagenumber"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; }; // Detection des variables eventuelles de tri de produits if (isset($_GET['orderby'])) { $varorderby=$_GET['orderby']; $paramurl.=(empty($paramurl)?"?":"&")."orderby=$varorderby"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; if (isset($_GET['orderway'])) { $varorderway=$_GET['orderway']; $paramurl.=(empty($paramurl)?"?":"&")."orderway=$varorderway"; $smarty->assign('nobots', 1); // variable Smarty de Prestashop qui appose la valeur "noindex,follow" dans la balise META Robots }; $goodurl=$_GET['id_category']."-".$category->link_rewrite.$paramurl; // URL theorique $currenturl=basename($_ENV['REQUEST_URI']); // URL courante $redir=strcmp($goodurl, $currenturl); if($redir!=0) { // Pas la bonne URL donc redirection HTTP 301 vers l'URL correcte header('HTTP/1.1 301 Moved Permanently', false, 301); header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl); exit(); } }; } /* fin modif*/ /* Loading default country */ $defaultCountry = new Country((int)Configuration::get('PS_COUNTRY_DEFAULT'), Configuration::get('PS_LANG_DEFAULT')); /* [...] (COPIER TOUT LE CONTENU jusqu'à "$this->iso = $iso;") */ $this->iso = $iso; $this->setMedia(); } } Voilà tout ! Edited August 14, 2013 by Trafiquant (see edit history) Link to comment Share on other sites More sharing options...
sandbzh Posted October 15, 2014 Share Posted October 15, 2014 Un petit up pour savoir si ce code fonctionne sur la 1.6 ? Si quelqu'un sait... Merci d'avance ! Link to comment Share on other sites More sharing options...
Trafiquant Posted November 3, 2015 Share Posted November 3, 2015 Dans la mesure où le fichier FrontController n'existe plus dans /classes avec la version 1.6, je pense que non, ça ne fonctionnera pas. Link to comment Share on other sites More sharing options...
Trafiquant Posted November 3, 2015 Share Posted November 3, 2015 En revanche, une solution qui fonctionne quelle que soit la version PS : http://www.lije-creative.com/noindex-page-prestashop/ Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now