Jump to content

Supprimer catégories réservées à un groupe du sitemap


Recommended Posts

Bonsoir,

 

J'ai certaines catégories réservées à un groupe sur mon shop, donc non visibles en tant que visiteur.

 

Le module sitemap natif les inclue ainsi que les produits qui sont dedans.

 

Le problème est que comme le robot Google n'y a pas accès, j'ai une message dans Webmaster tools me demandant de ne pas mettre ces pages dans le sitemap.

 

C'est impossible à la main, cela représente des centaines de lignes.

 

Comment pourrais-je faire pour que le module n'indexe pas ces catégories, dans sitemap.tpl peut-être, mais comment ?

Link to comment
Share on other sites

Salut,

 

il faudrait modifier le module, gsitemap.php, à la ligne 367 et ajouter une condition

 

(en rouge la condition pour ne pas inclure les produits d'une certaine catégorie)

 

$products_id = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product_shop` WHERE `id_product` >= '.intval($id_product).' AND `active` = 1 AND `id_category_default` != 14 AND `id_shop`='.$this->context->shop->id.' ORDER BY `id_product` ASC');

 

où "14" correspond au numéro de ta catégorie spéciale groupe

 

PS : Je n'ai pas testé :rolleyes:

Link to comment
Share on other sites

Merci beaucoup anteverce :)  Je cherchais depuis des jours !

 

Dernière requête, comme j'ai environ une quinzaine de catégories concernées, je dois les ajouter une à une comme par exemple pour 72 et 96 :

 

$products_id = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product_shop` WHERE `id_product` >= '.intval($id_product).' AND `active` = 1 AND `id_category_default` != 72 AND `id_category_default` != 96 AND `id_shop`='.$this->context->shop->id.' ORDER BY `id_product` ASC');

 

Ou y a-t-il moyen de faire plus court ?

 

Vraiment merci, sincèrement :D

Link to comment
Share on other sites

Ah c'est presque parfait, les produits sont bien supprimés du sitemap.

 

En revanche les urls des catégories elles-mêmes sont tout de même générées.

 

Peux-tu me dire où faire la modif pour empêcher leur génération également ?

Link to comment
Share on other sites

Ah bah je suppose que c'est le même principe un peu plus bas vers la ligne 430 :

 

        $categories_id = Db::getInstance()->ExecuteS(
            'SELECT c.id_category FROM `'._DB_PREFIX_.'category` c
                INNER JOIN `'._DB_PREFIX_.'category_shop` cs ON c.`id_category` = cs.`id_category`
                WHERE c.`id_category` >= '.intval($id_category).' AND c.`active` = 1 AND c.`id_category` != 1 AND c.`id_category` != 72 AND c.`id_category` != 96 AND c.id_parent > 0 AND c.`id_category` > 0 AND cs.`id_shop` = '.(int)$this->context->shop->id.' ORDER BY c.`id_category` ASC'
        );
 

Link to comment
Share on other sites

Impeccable, tout fonctionne :)

 

N'y aurait-il pas moyen d'utiliser id_group pour parvenir au même résultat ?

 

Pour n'afficher que les produits et catégories du id_group 1 visiteurs ?

 

Que j'aimerais savoir coder ^^

 

En tout cas merci encore, tu m'as vraiment sorti une sacrée épine du pieds, j'ai cherché partout, je n'avais pas trouvé un seul début de piste.

Link to comment
Share on other sites

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...