[Catégorie Prestashop] Jusqu'à 10 liens vers le même produit

Nouveau WRInaute
Bonjour à tous,

Quelque chose m'a sauté aux yeux ce matin.

Je n'avais pas réalisé mais il y a jusqu'à 10 liens vers la fiche produit d'un même article dans mes pages catégories :

- L'image
- "Voir"
- Le nom du produit
- Et plusieurs liens en dessous du nom vers une couleur spécifique

Qu'en pensez-vous ? Ca me semble nuisible pour le référencement nom ? Imaginez insérer 10 liens identiques dans un texte de 20 mots...

Merci d'avance à ceux qui donneront leur avis.
 
WRInaute accro
Bonjour

C'est un peu le problème de beaucoup de templates de boutiques (qu'ils soient développés "maison" ou non d'ailleurs) ; une solution est de faire comme... par exemple CD!scount, qui n'utilise qu'un seul lien vers ses produits et crée à la volée les autres en Javascript :twisted:

Perso je n'ai pas encore bidouillé les boutiques que je gère pour le mettre en oeuvre, mais c'est dans ma check-list !
 
WRInaute accro
Pour solutionner le souci au niveau des blocs produits dans les pages de listing, il y a en effet la solution de n'avoir qu'un seul lien dans le code source du blog, sur le libellé du produit, et de rendre la box entière cliquable en JS.

Krys.com fait également ça sur la page d'accueil.
 
WRInaute accro
À ce propos, si quelqu'un a un script sympa et facile à intégrer, je suis preneur :mrgreen:

J'ai tenté par mal de trucs, mais à chaque fois c'est un peu foireux. Le problème est que sur mes templates je ne peux pas faire un lien sur tout le bloc, il faut donc "distribuer" le lien sur divers composants.
 
WRInaute occasionnel
Bonjour à tous,

Peut-être faut-il utiliser l'attribut "data".

Html:

Code:
<montag class="product-link" data-product="/lien-vers-produit">le contenu</montag>

js:

Code:
(function ($) {
  $(document).ready(function () {
    $('.product-link').on('click', function(e) {
      e.preventDefault();
      var link = $(this).data('product');
      $(location).attr('href',link);
    });
  }
})(jQuery);

Non testé, mais à un détail ou deux ca doit être bon ;)

A+
 
Nouveau WRInaute
Merci pour vos réponses.

Je vois qu'on est tous confrontés au même problème et c'est vrai que ça ne concerne pas que Prestashop.

Je vais essayer de régler ce problème rapidement avec du js.

Quentin
 
Nouveau WRInaute
François a dit:
Bonjour à tous,

Peut-être faut-il utiliser l'attribut "data".

Html:

Code:
<montag class="product-link" data-product="/lien-vers-produit">le contenu</montag>

js:

Code:
(function ($) {
  $(document).ready(function () {
    $('.product-link').on('click', function(e) {
      e.preventDefault();
      var link = $(this).data('product');
      $(location).attr('href',link);
    });
  }
})(jQuery);

Non testé, mais à un détail ou deux ca doit être bon ;)

A+

Excellent François.

Il y aurait juste une amélioration à y apporter :

Faire en sorte qu'il soit perçu comme un vrai lien. Je m'explique, la "main" n'est pas présente au survol mais quand on clique ça fonctionne parfaitement.

Je vais essayer de creuser.

Merci
 
Nouveau WRInaute
Oui, merci !

Du coup j'ai réussi à mettre en oeuvre ce système sur Prestashop.

Plus qu'un seul lien placé sur le nom du produit.
 
WRInaute accro
cedric_g a dit:
Le problème est que sur mes templates je ne peux pas faire un lien sur tout le bloc, il faut donc "distribuer" le lien sur divers composants.

Du coup tu dois définir un listener sur chaque classe CSS associé à un élément qui doit être cliquable. Le tout en récupérant le lien depuis l'élément html parent.
 
Nouveau WRInaute
UsagiYojimbo a dit:
Pour solutionner le souci au niveau des blocs produits dans les pages de listing, il y a en effet la solution de n'avoir qu'un seul lien dans le code source du blog, sur le libellé du produit, et de rendre la box entière cliquable en JS.

Krys.com fait également ça sur la page d'accueil.

Je ne suis pas un fin connaisseur mais à force de chercher, j'ai trouvé le moyen pour ne pas être obligé de rendre tout le bloc cliquable.

J'ai ajouté "jshref" à mes class déjà existantes et ça fonctionne parfaitement.

Exemple <div class="responsive img jshref"....</div>
 
Nouveau WRInaute
Bonjour,
Cette optimisation semble en effet très intéressante.
J'ai tenté d'apporter les modifications mon thème mais cela ne fonctionne pas.

Dans product-list.tpl j'ai ajouté le code suivant :
Code:
<div class="product-link" data-product="{$product.link|escape:'html':'UTF-8'}">{l s='Voir'}</div>

Puis dans footer.tpl, juste avant le </body> j'ai inséré :
Code:
{literal}
<script type="text/javascript">
(function ($) {
  $(document).ready(function () {
    $('.product-link').on('click', function(e) {
      e.preventDefault();
      var link = $(this).data('product');
      $(location).attr('href',link);
    });
  }
})(jQuery);
</script>
{/literal}

Le problème est qu'aucun lien n'est "généré".
Comment faire ?
 
WRInaute accro
J'ai intégré cette modif sur les trois boutiques Prestashop que je gère (ainsi que dans pas mal de modules tant qu'à faire), ça fonctionne très bien :)

Et du coup, de colère, je suis en train de l'intégrer dans pas mal d'autres sites afin d'optimiser le maillage interne :mrgreen: MERCI François !

Jlweb, as-tu ajouté la règle CSS pour afficher le pointeur adéquat avec la souris ?...
 
Nouveau WRInaute
François a dit:
Qu'entends-tu par : 'aucun lien n'est généré' ?
Je ne peux pas cliquer.

Je n'ai pas mis de class afin d'avoir la "main" au survol mais cela ne change rien au fait que je ne peux pas cliquer...
 
Nouveau WRInaute
Jlweb a dit:
Bonjour,
Cette optimisation semble en effet très intéressante.
J'ai tenté d'apporter les modifications mon thème mais cela ne fonctionne pas.

Dans product-list.tpl j'ai ajouté le code suivant :
Code:
<div class="product-link" data-product="{$product.link|escape:'html':'UTF-8'}">{l s='Voir'}</div>

Puis dans footer.tpl, juste avant le </body> j'ai inséré :
{literal}
<script type="text/javascript">
(function ($) {
$(document).ready(function () {
$('.product-link').on('click', function(e) {
e.preventDefault();
var link = $(this).data('product');
$(location).attr('href',link);
});
})
})(jQuery);
</script>
{/literal}

Le problème est qu'aucun lien n'est "généré".
Comment faire ?

Tu peux essayer de rajouter la parenthèse en rouge. Ca devrait fonctionner.
 
Discussions similaires
Haut