Jump to content

NoIndex / Follow sur certaine pages sur la 1.4.x.x


Recommended Posts

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

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

  • 1 month later...
  • 1 year later...

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 by Trafiquant (see edit history)
Link to comment
Share on other sites

  • 1 year later...
  • 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...