Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Contributions _ [Ultimate SEO] Categorie dans l'URL

Écrit par : s200 17 Jan 2006, 17:08

Bonjour,

J'ai recherché un post sur le sujet mais je n'ai rine trouvé qui s'y rapportait (j'ai du mal chercher car je susi etonné de ne rine trouvé sur ce thème).

La contrib SEO est donc installé, elle a l'air de marcher mais je suis en train de faire une phase de test poussé. Je remarque donc que l'URL génére ne reprend pas les noms des catégories, cequi pourrait avoir un GROS intéret pour le referencement(c pour ca que je pense ne pas etre le seul a avoir posé la question).

Prenons un exemple :
Imaginons que je vende des chaussures, mon URL ressemble en ce moment a :
http://maboutique.com/air-max-546.html

Hors Mes "Air MAx" sont dans la catégorie "Baskets" => "Nike" et je voudrais donc arriver a :
http://maboutique.com/Baskets/Nike/air-max-546.html OU
http://maboutique.com/Baskets-Nike-air-max-546.html (pas possible je pense)

Ceci aurait une grosse influence sur une recherche dans un moteur sur "achat nike air max".....

Est ce techniquement possible ???
Comment arriver a ce résultats ????

Merci d'avance pour vos reponses.




Écrit par : s200 18 Jan 2006, 12:40

J'ai vu que la modification avait été apporté pour YASU 2. Le probleme est donc connu...

Écrit par : M&M's 18 Jan 2006, 16:29

Salut,

L'option "Add category parent to begining of URLs" présente dans l'admin de Ultimate SEO Url's 2.1d te permet déjà d'afficher tes URLs comme celà: http://maboutique.com/Baskets-Nike-air-max-546.html wink.gif

Écrit par : s200 18 Jan 2006, 16:41

L'option est bien a "true" dans l'admin. Dixit l'admin de SEO :

QUOTE
Add category parent to begining of URLs?

This setting will add the category parent name to the beginning of the category URLs (i.e. - parent-category-c-1.html).


Cela ne correspond au resultat que je voudrais obtenir. Toi, M&M's, a tu installer SEO et quels resultats obtiens tu ????


Écrit par : YANN06 14 Feb 2006, 14:42

Salut....

s200, j'ai le même souci et en local lorsque je desactive:Add category parent to begining of URLs, j'ai le cpath de la categorie qui viens apres l'url...

j'comprend pô

Écrit par : s200 15 Feb 2006, 14:15

Je ne me suis pas encore penché dessus.... et vu le peu de réponse qu'a eu ce post, je me suis dit qu'il allair falloir mettre les mains dans le cambouis... et g plein d'autres trucs a faire.

En esperant qu'une bonne ame veuille s'occuper de nous sad.gif

Écrit par : Yann06 16 Feb 2006, 18:20

idea.gif j'viens de comprendre, laugh.gif

ça rajoute la categorie superieure à l'url de la sous categorie.....
Mais pas à l'url produit.

j'suis trop c.. blush.gif

Bon, reste plus qu'a trouver comment rajouter tout ça à l'url produit mais avec une limite de taille et de preference vers le bas....(categorie mere en priorite etc...)

Écrit par : Ryu007 16 Feb 2006, 19:21

MDR laugh.gif !
Moi aussi, j'avais pas tout compris !

J'ai fais un test en local prometteur, j'ai ce que tu veux s200 cependant je me suis pas penché sur l'optimisation du cache ...

L789 de includes/classes/seo.class.php :
Remplacer :

CODE
$url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);

par :
CODE
$url = $this->make_url($page, $this->get_product_category_name($p2[1]), $p2[0], $p2[1], '.html', $separator);


Ensuite ajouter la fonction, L997 :
CODE
    function get_product_category_name($pID) {
        $sql = $this->DB->Query("select pd.products_name as pName, p2c.categories_id from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where pd.products_id = '" . (int)$pID . "' and p2c.products_id = '" . (int)$pID . "' and pd.language_id = '" . (int)$this->languages_id . "' limit 1");
        $result = $this->DB->FetchArray($sql);
        
        $sql2 = $this->DB->Query("select categories_name as cName from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$result['categories_id'] . "' and language_id = '" . (int)$this->languages_id . "' limit 1");
        $result2 = $this->DB->FetchArray($sql2);

        $cName = $this->strip($result2['cName']);
        $pName = $this->strip($result['pName']);
        
        $return = $cName . '/' . $pName;

      return $return;
    }


Comme on peut le constater, c'est juste pour un test, il faut s'occuper du cache !

Cordialement

-------------- EDIT --------------
Finalement remplacer la fonction ci-dessus par :
CODE

    function get_product_category_name($pID) {
      $sql = $this->DB->Query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$pID . "'");
      $result = $this->DB->FetchArray($sql);
      
      $cName = $this->get_category_name($result['categories_id']);
      $pName = $this->get_product_name($pID);

      $return = $this->strip($cName) . '/' . $this->strip($pName);
      return $return;
    }


C'est déjà plus propre !
-------------- EDIT --------------

Écrit par : maxime 17 Feb 2006, 11:17

J'ai testé, ça rajoute bien la catégorie dans l'url.
Mais cela pose un problème. le tiret fout le camp :
Exemple :

Nom du produit : produit tartanpion dans la catégorie yop
Avant : http://monurl/produit-tartanpion-c-551.html
Après : http://monurl/yop/produittartanpion-c-551.html


Écrit par : Ryu007 17 Feb 2006, 12:15

J'ai remplacé la fonction strip pour les caractères spéciaux...
A voir :

CODE

    // Fonction nettoyant les URLs
    function strip($string) {
      $string = str_replace(array('é', 'É', 'è', 'È', 'ê', 'Ê', '€', 'ë', 'Ë'), 'e', $string);
      $string = str_replace(array('à', 'À', 'â', 'á', 'Á', 'á', 'æ', 'å', 'ã'), 'a', $string);
      $string = str_replace(array('ï', 'í', 'î'), 'i', $string);
      $string = str_replace(array('ç', 'Ç'), 'c', $string);
      $strip_array = array('&', '"', ' ', chr(33), chr(34), chr(35), chr(36), chr(37), chr(38), chr(39), chr(40), chr(41), chr(42), chr(43), chr(44), chr(45), chr(46), chr(47), chr(58), chr(59), chr(60), chr(61), chr(62), chr(63), chr(91), chr(92), chr(93), chr(94), chr(95), chr(96), chr(123), chr(124), chr(125), chr(126));  
      $string = str_replace($strip_array, '-', $string);
      $string = preg_replace('(( )|(  )|(, )|( & )|( - )|(:)|(\')|(&#39)|(__)|(--))', '-', strtolower($string));
      return $this->short_name($string);
    }

Écrit par : Yann06 17 Feb 2006, 15:18

Juste un mot:

Bravo Ryu et merci (ça fait deux!! pardon biggrin.gif )

Crois-tu qu'il y ait réellement une limite à la taille des urls???

si oui, peut-t-on y ajouter un "substr(" ou autre et comment definir la priorité de la categorie mère???

Écrit par : maxime 17 Feb 2006, 15:29

Quelle efficacité !
J'ai testé sur ma boutique, pas de soucis tongue.gif

Écrit par : Ryu007 17 Feb 2006, 16:01

Je m'y connais pas assez en référencement pour te dire quoi faire, à mon goût, pour la longeur des URLs, il faut surtout prendre en compte l'efficacité pour le référencement (Lien ci-dessous).

Voir ce sujet sur WebRankInfo : http://httpwww.webrankinfo.comforumshighlight-topic_19121_taille+url.htm

Mais bon, moi j'ai fais un test sur ma boutique en local (je sais pas encore si je vais l'ajouter à ma boutique) et le résultat est plutot satisfaisant pour la longueur, et pourtant le nom de mes rubriques est loin d'etre court !
Cordialement

Écrit par : Phocea 17 Feb 2006, 17:39

Sympa la modif ca fait un peu plus propre dans l'url dans un sens. Par contre niveau referencement c est kif kif..
Petite mise en garde par contre si vous changez le code sur une boutique deja reference car google va s'y perdre un peu au debut ..donc pas de panique, uen bonne googlemap aidera GG .. pour les autres faudra etre patient

au passage Ryu007 ..l'erreur de la disparition de - dans le nom des produits ne venait pas d'un pb dans la fonction strip mais d'ubn petit bug que tu as introduit quand tu a re-ecrit ta fonction get_product_category_name en plus propre smile.gif
Tu fais un strio sur $pName alors qu il a deja ete fait lors du passage dans get_product_name... au 2eme il vire les -

Juste comme ci dessous ca marche super smile.gif

CODE
    function get_product_category_name($pID) {
      $sql = $this->DB->Query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$pID . "'");
      $result = $this->DB->FetchArray($sql);
      
      $cName = $this->get_category_name($result['categories_id']);
      $pName = $this->get_product_name($pID);

      $return = $cName . '/' . $pName;
      return $return;
    }


Ceci dit en passant ma fonction strip est tout a fait differente, on doit pas etre a la meme version de SEO (dans al mienne je config les echange de caractere speciaux dans l admin)

Écrit par : Phocea 17 Feb 2006, 18:55

Putaing je devrais chopper la grippe plus souvent, après je pete la forme )ca doit etre les vitamines ..ou l infirmiere je sais pas smile.gif

Bref j ai un peu creuser l idee de ryu car dans mon cas j ai aussi des sous categories ... et du coup ca me faisait des url du style:
http://www.monsite.com/nomcategory1nomcategory2/nom-du-produit.html
et j aurai prefere avoir un truc du style:
www.monsite.com / nom_category1_nom_categorie2/ nom du produit.html

Pour ca il suffit de fait 3 petit changement:

Si vous avez la version SEO 2.1 remplacer la fonctions trip par:

CODE
/**
* Function to strip the string of punctuation and white space
* @author Bobby Easland
* @version 1.0
* @modified 17/02/2005 Phocea
* @version 1.1
* @param string $string
* @param string $separator (v1.1)
* @return string Stripped text. Removes all non-alphanumeric characters.
*/    
    function strip($string, $separator = '-'){
        $pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true'
                        ?    "([^[:alnum:]])+"
                        :    "([[:punct:]])+";
        $anchor = ereg_replace($pattern, '', strtolower($string));
        $pattern = "([[:space:]]|[[:blank:]])+";
        $anchor = ereg_replace($pattern, $separator, $anchor);
        if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $anchor = strtr($anchor, $this->attributes['SEO_CHAR_CONVERT_SET']);
        return $this->short_name($anchor); // return the short filtered name
    } # end function


Si vous avez la meme version que ryu:
CODE

    // Fonction nettoyant les URLs
    function strip($string, $separator = '-') {
      $string = str_replace(array('é', 'É', 'è', 'È', 'ê', 'Ê', '€', 'ë', 'Ë'), 'e', $string);
      $string = str_replace(array('à', 'À', 'â', 'á', 'Á', 'á', 'æ', 'å', 'ã'), 'a', $string);
      $string = str_replace(array('ï', 'í', 'î'), 'i', $string);
      $string = str_replace(array('ç', 'Ç'), 'c', $string);
      $strip_array = array('&', '"', ' ', chr(33), chr(34), chr(35), chr(36), chr(37), chr(38), chr(39), chr(40), chr(41), chr(42), chr(43), chr(44), chr(45), chr(46), chr(47), chr(58), chr(59), chr(60), chr(61), chr(62), chr(63), chr(91), chr(92), chr(93), chr(94), chr(95), chr(96), chr(123), chr(124), chr(125), chr(126));  
      $string = str_replace($strip_array, $separator, $string);
      $string = preg_replace('(( )|(  )|(, )|( & )|( - )|(:)|(\')|(&#39)|(__)|(--))', '-', strtolower($string));
      return $this->short_name($string);
    }


Puis environ L948 dans la fonction function get_category_name(&$cID){

CODE
$cName = $this->strip($cName, '_');


et finalement L1515 (marignan) dans la fonction generate_categories_cache()

CODE
$define = 'define(\'CATEGORY_NAME_' . $id . '\', \'' . $this->strip($name, '_') . '\');';

Écrit par : Yann06 20 Feb 2006, 18:18

Bonsoir à tous.

Ch'tit question en passant.....

J'ai parfois 3 sous categories:

cat_0==> ss_cat1==> ss_cat2==> ss_cat3

Lorsque je suis dans la ss_cat3 mon url fait: ss_cat2/ss_cat3-c-XX_XX_XXX_XXX.html

Alors que pour le referencement, l'ideal serait d'avoir en priorité la categorie mère et la 1ere ss_cat

J'ai essayé d'inverser certaines lignes de code mais comme dab ma methode bourrin à ses limites (les miennes blush.gif )

Si vous avez une idée

merci d'avance.

Écrit par : Phocea 20 Feb 2006, 19:39

Hm mca doit etre du cote de

CODE
                switch(true){
                    case ($this->attributes['SEO_ADD_CAT_PARENT'] == 'true'):
                        $sql = "SELECT c.categories_id, c.parent_id, cd.categories_name as cName, cd2.categories_name as pName  
                                FROM ".TABLE_CATEGORIES." c,
                                ".TABLE_CATEGORIES_DESCRIPTION." cd
                                LEFT JOIN ".TABLE_CATEGORIES_DESCRIPTION." cd2
                                ON c.parent_id=cd2.categories_id AND cd2.language_id='".(int)$this->languages_id."'
                                WHERE c.categories_id='".(int)$single_cID."'
                                AND cd.categories_id='".(int)$single_cID."'
                                AND cd.language_id='".(int)$this->languages_id."'
                                LIMIT 1";
                        $result = $this->DB->FetchArray( $this->DB->Query( $sql ) );
                        $cName = $this->not_null($result['pName']) ? $result['pName'] . ' ' . $result['cName'] : $result['cName'];
                        break;
                    default:
                        $sql = "SELECT categories_name as cName
                                FROM ".TABLE_CATEGORIES_DESCRIPTION."
                                WHERE categories_id='".(int)$single_cID."'
                                AND language_id='".(int)$this->languages_id."'
                                LIMIT 1";
                        $result = $this->DB->FetchArray( $this->DB->Query( $sql ) );
                        $cName = $result['cName'];
                        break;
                }                


Le select va chercher le nom de la categorie pour le c_path. Dans le premier cas ca recupere aussi la categorie parente ..il faudrait dans ton cas que tu changes la requete pour qu elle renvois la categorie mere + sa premiere sous categorie.

Par contre je vois que tu indique que tes urls sont du type sscat2/sscat3_produit ?? T'as bidouillé quoi pour arriver a ca ? Dans l admin tu devrais avoir une option qui te permet justement d afficher la categorie mere avec la categorie du produit par defaut et tu te retrouver avec un url sscateg2-sscateg3-nomduproduit

Écrit par : Yann06 21 Feb 2006, 18:24

Tchô phocea...

lorsque je suis sur la page produit, c'est plutot ça: sscateg2-sscateg3/nomduproduit-p-XXX.html
J'ai mal tapé ma question blush.gif

en fait que je sois dans une categorie ou dans product_info, ce sont les deux categories parentes qui apparaissent.

alors que pour bon nombre d'entre nous, c'est la categorie mère qui est la plus percutante pour le référencement. rolleyes.gif


Écrit par : Phocea 21 Feb 2006, 18:36

Ca se passe donc bien dans le code que je t ai montré dans mon précédent message ... cette requete recupere la categorite parente directment au dessus de la courante et elle les concatenne.

Il faut que tu fasse une requete qui retrouve la categorie mere au plus haut niveau pour une categorie donné, et tu auras ta solution wink.gif

Écrit par : s200 23 Feb 2006, 11:41

Arf, salut tous,

G un peu honte de n'arriver que maintenant, mais la charge de travail est pas mal de mon coté. Je ne peux donc que remercier nos chers contributeurs Ryu007 et Phocea, j'ai intégré direct les modifs et tout marche perfect.
Au point ou nous en sommes il serait peu etre interréssant de passer a la postérité (vite fait quoi...) en considérant que cette modif DOIT faire parti de la contribution SEO (je m'etonne meme que cela n'ai pas été fait avant).

Bon, je vais essayer si j'ai le temps(on passe en dédié aujourd'hui normalement, et j'ai un aute site a faire...) d'apporter ma petite contribution en essayant de prendre les "HTML TAGS" lié au catégorie plutot que de prendre le nom de la catégorie.... interressant pour le ref mais je dois neammoins retrouver le post sur webrankinfo concernant la longueur des URLS........

Et encore merci.

Écrit par : Maverick 22 Mar 2006, 16:55

Salut à tous biggrin.gif

à propos de longueur d'url, ne pourrait-on pas supprimer les id situés avant le ".html"?
Ca représente quand meme pas mal de caractères de gagnés....
De 1 à x pour l'id du produit, et toute une tartine pour les sous catégories... cry.gif

YASU, pour info, ne reprend pas les id en fin d'url et prend en charge toutes les sous catégories....
exemple: http://www.e-podo.com/podologie/recouvrement/mousses+eva

wink.gif

Écrit par : Phocea 5 Apr 2006, 16:47

Je remonte un peu les gravats de la cave mais quelqu'un m'a justicieusement fait remarque que ca serait encore mieux d avoir des URL du style

h**p://mondomaine/nom_categorie1/nom_categorie2/nom-du-produits-c_xx_xx.html
plutot que
h**p://mondomaine/nom_categorie1_nom_categorie2/nom-du-produits-c_xx_xx.html

comme je l'avais filé auparavant

Donc bref il faut juste une petite modif, en plus de elle déjà donné avant:

Dans
function generate_categories_cache(){
changer (ou commenter)

CODE

$name = $this->not_null($category['pName']) ? $category['pName'] . ' ' . $category['cName'] : $category['cName'];
$define = 'define(\'CATEGORY_NAME_' . $id . '\', \'' . $this->strip($name, '_') . '\');';

par
CODE

// Changes for categories as directories
$name = $this->not_null($category['pName']) ? $this->strip($category['pName'], '_') . '/' . $this->strip($category['cName'], '_') : $this->strip($category['cName'], '_');
$define = 'define(\'CATEGORY_NAME_' . $id . '\', \'' . $name . '\');';


Puis au cas ou on utilise pas le cache il faut aussi changer dans get_category_name
CODE

$cName = $this->not_null($result['pName']) ? $result['pName'] . ' ' . $result['cName'] : $result['cName'];

par
CODE

// Changes for categories as directories
$cName = $this->not_null($result['pName']) ? $this->strip($result['pName'], '_') . '/' . $this->strip($result['cName'], '_') : $this->strip($result['cName'], '_');


puis commenter la ligne
CODE

$cName = $this->strip($cName, '_');

comme suit
CODE

// Change for categories as directories
//$cName = $this->strip($cName, '_');


Et c'est tout bon .. pas encore de solution pour virer les xxx pour le product id ou categories par contre

Écrit par : ZuckBin 26 Apr 2006, 09:37

Bonjour,

Est ce quelqu'un sait comment remplacer juste les espaces par des tirets "-" dans les noms de categories d'apres cette fonction du fichier seo.class.php de Chemo.

Tout le reste me convient tel quel =)

Et avec Remove all non-alphanumeric characters? sur TRUE dans les options.

CODE
    function strip($string){
        if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $string = strtr($string, $this->attributes['SEO_CHAR_CONVERT_SET']);
        $pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true'
                        ?    "([^[:alnum:]])+"
                        :    "([[:punct:]])+";
        $anchor = ereg_replace($pattern, '', strtolower($string));
        $pattern = "([[:space:]]|[[:blank:]])+";
        $anchor = ereg_replace($pattern, '-', $anchor);
        return $this->short_name($anchor); // return the short filtered name
    } # end function


Merci de votre aide.
Cordialement.

Écrit par : ZuckBin 26 Apr 2006, 10:58

Bonjour,

J'ai trouvé la solution.

Il suffit de metre dans les options:

CODE
Enable SEO URLs?    true         
Add cPath to product URLs?    true         
Add category parent to begining of URLs?    true         
Filter Short Words    1         
Output W3C valid URLs (parameter string)?    false         
Enable SEO cache to save queries?    true         
Enable product cache?    true         
Enable categories cache?    true         
Enable manufacturers cache?    true         
Enable articles cache?    true         
Enable topics cache?    true         
Enable information cache?    true         
Enable automatic redirects?    true         
Choose URL Rewrite Type    Rewrite         
Enter special character conversions             
Remove all non-alphanumeric characters?    true         
Reset SEO URLs Cache    false


C'est filter short word qui etait par defaut à 3 qui causait des erreurs d'affichages.

A utiliser avec la fonction strip de Ryu, plus haut dans ce meme post.

Voila +++

Écrit par : Aurélien32 16 May 2006, 03:52

Bravo a tous pour cette superbe adaptation cela dit j'ai une question est ce que quand on arrive en final sur la fiche produit (product_info.php) on est toujours censés avoir les répertoires recréés avant le nom_produit.html ?!? biggrin.gif

Écrit par : Phocea 16 May 2006, 06:59

Ca dépende de cette option dans la dmin:

CODE
Add category parent to begining of URLs?    true /false        

Écrit par : kinesio 17 May 2006, 23:15

Bonjour à vous,
j'espère trouver ma solution dans ce topic et désolé d'avoir crée un doublon plus haut que je vais régularisé par [doublon]

Voilà, j'ai installé ultimate seo v2.1, au début j'avais des symboles en tous genres à la place des "ê", j'ai installé un mrpropre que j'ai trouvé sur un topic mais j'ai perdu toutes les lettres ayant des accents ainsi que les "-" entre chaque mots.

Je viens de changer la fonction strip comme stipulé plus haut ainsi que les 2 lignes à modifier pour avoir les "-", j'ai ensuite reseté mon cache séo mais j'ai toujours la même chose.

Avez-vous une piste, est-ce que vous souhaitez que j'édite mon seo.class.php ?
Comment des lettres peuvent-elles disparaître ?

Pour mieux voir le problème, voici http://www.nature-et-forme.com

et vous pouvez jeter un oeil à ma http://www.nature-et-forme.com/sitemapproducts.xml, c'est la cata sur la longueur et sans les "-" et les lettres ?!

Merci pour votre aide

Écrit par : Aurélien32 18 May 2006, 01:23

CITATION(Phocea @ 16 May 2006, 00:59) [snapback]174889[/snapback]

Ca dépende de cette option dans la dmin:

CODE
Add category parent to begining of URLs?    true /false        



Ben chez moi c'est coché et pourtant il me supprime tout les sous répertoires recréés lorsque j'aboutit sur le produit confused.gif

Écrit par : kinesio 19 May 2006, 13:40

Alors aujourd'hui, j'ai encore mis les mains dans la contrib, mais en vain, par contre quand je désactive seo, j'ai mes id et path qui reviennent et quand je réactive seo, j'ai de nouveau toutes mes lettres avec accent qui disparaissent.

SVP de l'aide, je ne peux pas croire que personne n'ai une piste à me donner, je n'édite pas mon seo.class.php car trop de ligne et respect au forum, mais si quelqu'un veut le voir, c'est avec plaisir.

Merci

Écrit par : Aurélien32 23 May 2006, 01:34

J'ai repris toutes les lignes a modifier une par une et je suis bon partout, j'ai bien coché dans l'admin d'afficher la catégorie parent, tout ce se passe bien jusqu'a arriver sur la fiche produit ou tout fout le camp et ou j'obtient une url du type :

CODE
http//www.maboutique.com/url-produit.html

au lieu de
CODE
http//www.maboutique.com/categorie/url-produit.html


Je ne comprends vraiment pas confused.gif

Écrit par : Sinjhin 31 May 2006, 15:27

bonjour

j ai quelques problemes a faire fonctionner cette adaptation cry.gif

voici mon fichier include/seo.class.php

CITATION
[edit modération code trop lourd pour ces forums. Mettre un lien sur un fichier txt]

Écrit par : Sinjhin 31 May 2006, 15:41

CITATION
[edit modération code trop lourd pour ces forums. Mettre un lien sur un fichier txt]


SEO est configuré ainsi:

CITATION
Enable SEO URLs? true
Add cPath to product URLs? true Info
Add category parent to begining of URLs? true Info
Filter Short Words 0 Info
Enable SEO cache to save queries? true Info
Enable product cache? true Info
Enable categories cache? true Info
Enable manufacturers cache? true Info
Enable articles cache? true Info
Enable topics cache? true Info
Enable information cache? true Info
Enable automatic redirects? Info
Choose URL Rewrite Type Rewrite Info
Enter special character conversions Info
Remove all non-alphanumeric characters? true Info
Reset SEO URLs Cache false Info


ou me suis le planté?

merci par avance

sinjhin

Écrit par : Sinjhin 2 Jun 2006, 13:32

de retour... (ps pardon pour le fichier ... clair trop lourd wink.gif )
juste une question les changements de codes a faire concernent bien exclusivemnt le fichier seo.class.php?

Écrit par : concorde44 2 Jun 2006, 23:02

hello,
Moi j'avais chopé http://www.oscommerce.com/community/contributions,302
qui tient en 1 ligne... et qui doit faire la même chose, non ? wink.gif

CITATION
On any page where you would like to have the complete breadcrumb trail displayed at the title, find this line:
<title><?php echo TITLE; ?></title>
and replace with this:
<title><?php echo strip_tags($breadcrumb->trail(' » ')); ?></title>

Avec STS c'est 1 jeu d'enfant!
Seb

Écrit par : Mi6 28 Aug 2006, 11:36

Bonjour à tous,

j'ai bien suivi les instructions pourtant mais je n'arrive pas à obtenir non plus :
http//www.maboutique.com/categorie/url-produit.html

est-ce qu'il est possible d'avoir le code entier de seo.class.php ? blush.gif

Merci par avance

David

Écrit par : milerwan 22 May 2007, 17:41

Bonjour,

Pour ma part je rencontre un probème d'affichage du nom des catégories + sous catégories.

En effet, dans le cas d'un nom de catégorie composé (ex. Sony PSP), le nom de la catégorie s'affiche ainsi "sony-psp", là rien d'anormal, mais si je continue d'avancer dans une sous-catégorie "Accessoires" mettons, je me retrouve avec "sony-accessoires" au lieu de "sony-psp-accessoires" or il s'avère que sur d'autres sites concurrents ils n'ont pas cet "oubli".

Rencontrez-vous le même défaut d'affichage dans le cas d'un nom composé de catégorie?
Si ce problème a été isolé, existe-t-il une parade?

Pour vous rendre compte du problème, vous pouvez vous rendre http://www.infinitydream.com/sony-psp-c-1.html.

Merci de votre aide. smile.gif

PS : une personne ayant installé la même contrib rencontre elle-aussi ce problème.


REPONSE : il faut augmenter le nombre de mots dans "Filter short words" qui d'origine est à 3 et faire un reset du cache. dry.gif

Écrit par : ethan57 21 Jul 2007, 09:32

CITATION(Aurélien32 @ 22 May 2006, 19:34) [snapback]175861[/snapback]
J'ai repris toutes les lignes a modifier une par une et je suis bon partout, j'ai bien coché dans l'admin d'afficher la catégorie parent, tout ce se passe bien jusqu'a arriver sur la fiche produit ou tout fout le camp et ou j'obtient une url du type :
CODE
http//www.maboutique.com/url-produit.html

au lieu de
CODE
http//www.maboutique.com/categorie/url-produit.html


Je ne comprends vraiment pas confused.gif



Bonjour,

J'ai le même problème que toi. Les catégories et sous catégories apparaissent tant que je ne sélectionne pas un produit précis, dès que je suis sur une page produit les catégories disparaissent.

Quelqu'un pourrait-il nous renseigner ?

Merci

Ethan


Écrit par : concorde44 21 Jul 2007, 09:39

Moi aussi! laugh.gif
C'est sûrement une limite de cette contrib.
Seb

Écrit par : wahren 26 Jul 2007, 01:21

Bonsoir,

Si vous intégrez les modifs de Ryu007 et Phocea (lire plus haut dans ce post), ça devrait aller. Ca ne va pas au delà de deux niveaux, mais ça c'est dû à la requête qui ramène les catégories et sous-catégories. Il faudrait ajouter encore une jointure (complexe mais à voir).

Si vous avez :

Catégorie = toto
Sous-catégorie = tata
Produit = tartanpion
Id du produit = num

l'url sera http://mondomaine/toto_tata/tartanpion-p-num.html

voili voilou

Écrit par : Commerce 27 Aug 2007, 10:16

Bonjour, je relance le sujet car j'ai un soucis avec cette contribution et toutes les modifications apportées sur ma boutique, cela fonctionne trés bien sauf que moi aussi j'ai un problème de niveaux avec des niveaux d'arborescence supérieure a 2.

Pour un produit situé dans une sous cat 3 j'ai comme url : www.example.com/ss-cat2/ss-cat3/produit j'ai bien compris la gestion des niveaux en voyant la structure de la bdd mais j'arrive pas a remonter dedans et a afficher l'arbo complete, si quelqu'un a une idée, je susi preneur...

Écrit par : kaabi 20 Oct 2007, 00:10

salut
est ce que vous pouvez m'indiquer la version de Ultimate SEO que vosu avez installe , j'ai installe celle du 29 nov eet j'ai des problème:

quand je clique sur un article un message d'erreur apparait

http://www.oscommerce-fr.info/forum/index.php?showtopic=49569&hl=

merci

Écrit par : concorde44 20 Oct 2007, 22:49

CITATION(concorde44 @ 21 Jul 2007, 10:39) [snapback]244238[/snapback]
Moi aussi! laugh.gif
C'est sûrement une limite de cette contrib.
Seb


No limit! laugh.gif
Je viens de faire les màj de Ryu007 et Phocea et j'ai des urls nickel de chez nickel : mondomaine.com/cat1-avec-des-tirets/ss-cat11-tirets-aussi/nom-produit-p-12.html

Merci à tous !

Seb

Écrit par : coyotte66 21 Oct 2007, 09:58

est ce que quelqu'un de plus intelligent que moi
(sinon je ne demanderai pas lol)

pourait editer un beau seo.class.php

Cordialement

Écrit par : coyotte66 22 Oct 2007, 00:40

je re soumet ma demande du post au dessus car personnellement après avoir tester d'inclure les morceaux de codes
je n'y arrive que partiellement

c'est a dire que je suis sur un bon début puisque je tombe sur une url du genre:

-http://www.maboutique.com/catégorie-souscategorie/le-nom-du-produit.html


j'ai don essayer plus loin mais a la partie de :

CITATION(Phocea @ 5 Apr 2006, 17:47) [snapback]168088[/snapback]
Dans
function generate_categories_cache(){
changer (ou commenter)
CODE
$name = $this->not_null($category['pName']) ? $category['pName'] . ' ' . $category['cName'] : $category['cName'];
            $define = 'define(\'CATEGORY_NAME_' . $id . '\', \'' . $this->strip($name, '_') . '\');';

par
CODE
// Changes for categories as directories
            $name = $this->not_null($category['pName']) ? $this->strip($category['pName'], '_') . '/' . $this->strip($category['cName'], '_') : $this->strip($category['cName'], '_');
            $define = 'define(\'CATEGORY_NAME_' . $id . '\', \'' . $name . '\');';





je tombe sur un:

CITATION
Parse error: syntax error, unexpected T_ELSE in /home/maboutique/www/includes/classes/seo.class.php on line 2182



PS-voici mon seo_class.php
Si quelqu'un qui a réussi la manip pourrait m'aider svp
Bien aimable à vous
Cordialement


http://www.megaupload.com/?d=WLBHU88L


RE PS-si une personne pourait juste se donner la peine de regarder mon seo_class.php parsque je ne trouve pas
certains codes proposer ci-dessus
(jai la version 2.2)

Écrit par : coyotte66 22 Oct 2007, 13:46

Lu et re a tous

JAI REUSSI YOUPI !!!

mais il me reste un dernier probleme svp et je me demande si il ne viendrais pas de la fonction strip_string

en effet jusqu'a lors avant les modifs j'avais des

é=>e
maintenant et bizzarement mes é sont des j

exemple:
avant----->début=>debut
maintenant->début=>djbut

autre exemple:
avant------>tête=>tete
manitenant->tête=>tkte

encore un autre exemple:
avant------plâtre=>platre
maintenant->plâtre=>plvtre

est ce que cela vous fait pareil??

Écrit par : Mode&Co 3 Dec 2007, 16:47

Bonjour,
J'ai un petit soicis avec cette contribution: j'ai installée la version 21, tout va bien quand aux urls, sauf que lorsque je clique dans une sous catégorie, sur un produit de la liste, j'obtiens l'erreur suivante:

Fatal error: Cannot redeclare tep_db_connect() (previously declared in e:\web\easyphp1-8\www\mode_compagnie\includes\functions\database.php:13) in e:\web\easyphp1-8\www\mode_compagnie\includes\functions\database.php on line 13

Quelqu'un a-t-il une idée? Je lis tout les forums, mais je ne trouve rien.

Merci à vous tous!

Écrit par : Mode&Co 4 Dec 2007, 10:06

Plus de soucis, à force de chercher, on trouve! : :

Écrit par : nephelion 7 Dec 2007, 14:15

bonjour,
je suis nouveau utilisateur ici, même sui je me suis inscrit depuis un certain temps
j'essaie et j'applique les conseils de ce post, ça marche car j'arrive à faire afficher les catégories, produits, dans l'URL.

mais comment arrivez-vous à faire afficher en même temps les produits et/ou catégories dans le TITLE ?

faut-il passer par header tags ou simplement ultimate seo suffira ?

merci

Écrit par : nephelion 7 Dec 2007, 14:16

CITATION(coyotte66 @ 22 Oct 2007, 07:46) [snapback]255836[/snapback]
mais il me reste un dernier probleme svp et je me demande si il ne viendrais pas de la fonction strip_string

en effet jusqu'a lors avant les modifs j'avais des

é=>e
maintenant et bizzarement mes é sont des j

exemple:
avant----->début=>debut
maintenant->début=>djbut

autre exemple:
----- .....

est ce que cela vous fait pareil??


oui,
comment as-tu résolu ce problème ?

Écrit par : tom555 7 Dec 2007, 14:52

CITATION(nephelion @ 7 Dec 2007, 14:15) [snapback]262496[/snapback]
mais comment arrivez-vous à faire afficher en même temps les produits et/ou catégories dans le TITLE ?
faut-il passer par header tags ou simplement ultimate seo suffira ?


header tags pour les TITLE.
Ultimate SEO n'agit que sur les URL.


header tags est indispensable.
Ultimate SEO, c'est un plus.

Écrit par : coyotte66 3 Jan 2008, 11:19

avez vous des bons retour suite a cette manip ou etait-ce mieux avant?

pour ma pa part bof bof blink.gif

Écrit par : PhpasFacile 4 Jan 2008, 12:04

Pour ma part j'ai testé les modifs version Ryu qui marchent nickel (merci au passage !). Seul problème les moteurs de recherche indexaients mes pages sans ces catégories ce qui avait pour conséquence de faire foirer le panier si on ne repassait pas par l'acceuil avant la fiche produit (ou un truc du genre). Je suis donc retourné à une version sans catégorie dans l'url.

Écrit par : coyotte66 5 Jan 2008, 12:29

Moi aussi j'ai en effet quelques problemes,
en fait, c'est du a la contrib qui evite les erreures 404, du coup si ...

maboutique.com/produit-p54.html
devient ...
maboutique.com/categorie/sous-categorie/produit-p54.html

Pour ma part, etant donné qu'il n'y a pas d'erreurs 404, google m'indexe les deux et me les laisse,
Donc ma question est:

Est ce que c'est vraiment mauvais de desindexer tout son contenu????
(car j'ai enormement de contenu en double comme l'exemple ci-dessus)
Et pour ce faire je pense utiliser le robot txt avec Disallow : /
Quand pensez-vous?

Écrit par : Julietta 24 Nov 2008, 22:52

Citation (Phocea @ 17 Feb 2006, 18:39) *
Sympa la modif ca fait un peu plus propre dans l'url dans un sens. Par contre niveau referencement c est kif kif..
Petite mise en garde par contre si vous changez le code sur une boutique deja reference car google va s'y perdre un peu au debut ..donc pas de panique, uen bonne googlemap aidera GG .. pour les autres faudra etre patient

au passage Ryu007 ..l'erreur de la disparition de - dans le nom des produits ne venait pas d'un pb dans la fonction strip mais d'ubn petit bug que tu as introduit quand tu a re-ecrit ta fonction get_product_category_name en plus propre smile.gif
Tu fais un strio sur $pName alors qu il a deja ete fait lors du passage dans get_product_name... au 2eme il vire les -

Juste comme ci dessous ca marche super smile.gif

Code
    function get_product_category_name($pID) {
       $sql = $this->DB->Query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$pID . "'");
       $result = $this->DB->FetchArray($sql);
      
       $cName = $this->get_category_name($result['categories_id']);
       $pName = $this->get_product_name($pID);

       $return = $cName . '/' . $pName;
       return $return;
     }


Ceci dit en passant ma fonction strip est tout a fait differente, on doit pas etre a la meme version de SEO (dans al mienne je config les echange de caractere speciaux dans l admin)


Hummm moi je me demande où il faut insérer ce bout de code... rolleyes.gif
Il est précisé par Ryu L997 mais j'ai la version 2.2 et si je l'insère à cet endroit je coupe une fonction en 2 blush.gif

Par ailleurs j'ai une autre petite question : peut-on supprimer le c-xx (numéro) qui se trouve après chaque catégorie et produit ?

Mzeci à tous!

Écrit par : NoZic 25 Nov 2008, 10:18

Bonjour,

C'est une fonction à part entière donc faut juste la mettre dans le fichier spécifié en dehors des autres fonctions puisque s'en est une (enfin le code complet de ton message, après si tu parles d'autre chose... mais ton code est une focntion donc faut juste la rajouter dans le fichier, en dehors des autres fonctions, on est pas à la ligne près hein...).

Sinon non il n'est pas possible avec SEO d'enlever les numéro, c'est l'id du produit (ou du fabriquant ou de la catégorie) donc pas touche.
Mais il me semble qu'il existe une autre contrib' de rewriting d'URL qui n'affiche pas les id dans l'URL, euh attend je cherche vite fait, ah oui :
http://www.oscommerce.com/community/contributions,4082

Bon courage

Écrit par : Julietta 25 Nov 2008, 14:31

Merci Nozic !
En effet c'était pas plus compliqué que ça !
Je précise que j'avais quand même essayé mais que je ne voyais pas de modifications et puis à force de lire des posts en tout genre j'ai désactivé le cache dans l'admin et ohhh miracle mes url /categories/nom_produit/ sont ok blush.gif

Pour la contrib proposée (http://www.oscommerce.com/community/contributions,4082) je pense que je ne vais pas tenter le diable j'ai très peur de toute foutre en l'air à force d'ajouter des trucs et des machins, donc tant pis l'id du produit apparaîtra...Peut être que quand je serai expérimentée je me lancerai à corps perdu dans les contrib happy.gif

Pour ceux qui demandent quel code il faut ajouter et où, je fais un petit récapitulatif (je sais ils pourraient y arriver tout seul en cherchant un peu mais bon...)

Version Ultimate SEO http://www.oscommerce.com/community/contributions,2823

Dans /includes/classes/seo.php
Trouver la ligne (il y en a 2, je n'ai changé que la première) :

Code
$url = $this->make_url($page, $this->get_product_name($p2[1]), $p2[0], $p2[1], '.html', $separator);


Et remplacer par :
Code
$url = $this->make_url($page, $this->get_product_category_name($p2[1]), $p2[0], $p2[1], '.html', $separator);


Enfin juste avant (par exemple mais vous pouvez le mettre ailleurs) :
Code
/**
     * Function to return the generated SEO URL        
     * @author Bobby Easland
     * @version 1.0
     * @param string $page
     * @param string $string Stripped, formed anchor
     * @param string $anchor_type Parameter type (products_id, cPath, etc.)
     * @param integer $id
     * @param string $extension Default = .html
     * @param string $separator NOTE: passed by reference
     * @return string
     */


Insérer :
Code
function get_product_category_name($pID) {
        $sql  = $this->DB->Query("select categories_id from " .  TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$pID .  "'");
        $result = $this->DB->FetchArray($sql);
        
        $cName = $this->get_category_name($result['categories_id']);
        $pName = $this->get_product_name($pID);
  
        $return = $cName . '/' . $pName;
        return $return;
      }



Je ne peux pas vous donner le seo.php en entier, le fichier contenant trop de lignes...
ps: pensez à vider le cache ou a le désactiver dans l'admin

Merci encore wink.gif

Écrit par : walter1973 2 Apr 2009, 14:06

Salut à tous

Je suis ce post depuis pas mal de temps et je suis toujours dans la misère.
Toutes les modifs que je fais fonctionnent bien mai quand je veux afficher le produit,
j'ai une erreur 404.

J'ai testé les modifs sur le fichier seo.class.php mais rien n'y fait.
L'URL semble correcte avec le nom de ma catégorie, le nom de mon produit.
Une idée ???

http://www.xxxx.com/shop/delice-p-35.html > boutique fonctionne
http://www.xxx.com/shop/miam/delice-p-35.html > boutique dit ERREUR 404

merci
w

PS : je précise que j'ai installé Ultimate_SEO_URLSv21 BY CHEMO (bien à lui pour cette contrib)

Écrit par : andredupond 9 Apr 2009, 11:41

bonjour,
quelqu'un aurait il une petite idée de comment faire pour que la fonction get_product_category_name renvoie les noms de la totalité des categories parentes ?
car :
si le produit est au 2eme niveau de l'arborescence des categorie l'url contient bien catname1-catname2/produit
Mais si il est au 3eme niveau, l'url ne contient que catname1-catname3/produit, il manque donc la categorie intermediaire de niveau 2 (catname2 quoi:)

si par hasard quelqu'un as une astuce ..

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)