Jump to content

Gestion des miniatures des catégories dans PS 1.6


Recommended Posts

Bonjour à tous et merci à l'avance de vos éventuelles réponses.

 

Je développe sous 1.6 en me servant du thème par défaut modifié au niveau des CSS uniquement pour l'instant, en configuration standard des images.

Dans le BO, la gestion des catégories permet de générer une image max de catégorie de 870*225 qui s'affiche lorsqu'on clique sur la catégorie. Si il y a des sous-catégories, des vignettes de 125*125 s'affiche en dessous. On peut dans le BO importer l'image de la catégorie et par un bouton appelé "Miniature" importer une image qui va être, si j'ai bien compris, la vignette de 125*125.

Mais cela ne fonctionne pas ! A moins que j'ai mal compris l'utilisation de cette fonction miniature...

 

Je me suis dis que j'allais passer par la BdD pour mes images, mais dans les tables ps_category il n'apparaît nul part une colonne permettant de déterminer un lien vers une image principale, comme vers la vignette d'ailleurs !

Cf aussi http://doc.prestashop.com/download/attachments/9961497/pdm-1.5.png. Je n'ai pas trouvé d'ailleurs celle de la 1.6, mais il ne me semble pas qu'il y ait grande différence, pas en tout cas sur les tables ps_category.

 

Dans les import par le BO, si on télécharge le fichier CSV d'exemple de catégorie, on trouve une URL de catégorie dans la dernière colonne (image URL), mais pas celle de la vignette....

 

Je suppose donc que cela est géré au niveau du code, mais je ne suis pas un codeur "pur jus", même si je mets "les mains dans le capot parfois" !

 

Questions :

Y a-t-il un bug dans la gestion de la miniature ou une procédure de mise en application particulière dans la méthodologie de création d'une catégorie ?

Comment gérer par la BdD les images des catégories ?

Lors de l'import via BO (et non BdD), on trouve la possibilité de mettre une URL d'image, mais où va cette information ?

 

Merci d'avance de vos contributions rapides, je suis bloqué...

Edited by IED Factory (see edit history)
Link to comment
Share on other sites

Bonjour,

 

L'image miniature de la catégorie est généré lors de l'enregistrement de l'image principale de la catégorie en focntion de la cofiguration dans l'onglet Images.

 

Après ce qui s'appel Miniature dans la configuration de la catégorie ne concerne que les catégories de premier niveau et non les sous catégorie et permet d'afficher des images miniatures dans le menu Top de votre template.

Link to comment
Share on other sites

Merci de cette précision, je comprends mieux du coup. Cette option restée dans la catégorie en dehors des catégories de premier niveau nous induise en erreur...

Savez-vous ce qu'il faudrait rajouter au code pour que cette fonctionnalité soit valable pour toute l'arborescence, quelque soit le niveau des catégories ?

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Je fais le même constat et je ne comprend pas pourquoi cela fonctionne pour les catégories et pas pour les sous-catégories alors que le BO le propose ...

 

Ne pourrait-on pas copier le fonctionnement de catégorie de premier niveau pour les sous-catégories ?

Link to comment
Share on other sites

Petite mise à jour non encourageante sur la gestion des images. Je vous invite à suivre ce topic, car non seulement il y a des problèmes de génération d'images dans les sous-menus, mais en plus il y a même des problèmes de création des miniatures lors d'import CSV de catégories nombreuses : http://www.prestashop.com/forums/topic/374176-les-limites-en-cat%C3%A9gorie-de-ps-169/?do=findComment&comment=1847885

Link to comment
Share on other sites

Bonjour,

 

J'ai fait un petit javascript pour contourner ce problème.

 

Je ne sais pas si c'est très académique mais au moins j'ai une image différente dans l'entête de la catégorie et dans les choix de sous catégories. Je peux même avoir une image dans les choix de sous catégorie, si je n'ai pas d'image dans l'entête ...

 

Le but est de placer dans les cadres de sous catégories, la première image miniature contenue dans la sous catégorie si celle ci existe ...

 
<script>
$(function() { // replace img in sub-categorie with first img miniature
    $(".subcategory-image>a>img").each(function() { 
        var p=$(this).parent('a');
        var m=$(this);
        var i=$(this).attr('src');
        if(i!=undefined) { 
            // i can contain something like : http://mysite.fr/c/31-medium_default/images.jpg
            // or http://mysite.fr/c/fr-default-medium_default/images.jpg if img in sub-cat doesnt exist
            // first miniature contain 0_thumb
            if(i.indexOf("fr-default-medium_default")>0) { 
                // reached for number of categorie
                var p=p.attr('href');
                p=p.substring(p.lastIndexOf('/')+1);
                p=p.split('-');
                p=p[0];
                var ir=i.replace('fr-default-medium_default',p+'-0_thumb');
            }
            else {
                var ir=i.replace('medium_default','0_thumb');
            }
            $.ajax({ // url with 0_thumb exist ?
                url:ir,
                type:'HEAD',
                success: function() { // YES !!!!!
                    m.attr('src',ir); // replace src
                },
            });
        } // end of if(i!=undefined)
    }); // end of $().each
 
})
</script>
 
J'ai une variante du code qui affiche par intervalles réguliers toutes les miniatures d'une catégorie ....
 
Ne sachant pas trop ou mettre ce code, je l'ai carrément mis dans index.php à la racine en évitant qu'il soit généré lorsque qu'on a des appels ajax (panier etc ...), si quelqu'un a une meilleure idée je suis preneur ...
Edited by tomboul (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

même problème pour moi, je cherche en vain le moyen de contourner le pb...

Il y a comme un conflit entre les deux images, soit la bannière prend le dessus et se retrouve en 125x125, soit c'est la miniature qui se prend des airs de bannière (bon, au moins elle est centrée, mais ça ne reste vraiment pas top).

quelqu'un a tenté de modifier les class .subcategory-image ou .replace-2x pour essayer de rectifier l'apparence des miniatures?

Link to comment
Share on other sites

  • 5 weeks later...

Bonsoir,

Pour ma part j'ai viré les miniatures des catégories dans le menu.

Je confirme que pour gérer des miniatures dans la totalité du menu, vous devriez changer le code.

 

Dans le fichier blocktopmenu.php, j'ai mis en commentaire vers la ligne 620, le bout de code ci-dessous :

 

                if ((int)$category['level_depth'] == 2)
                {
                    $files = scandir(_PS_CAT_IMG_DIR_);

                    if (count($files) > 0)
                    {
                        $html .= '<li class="category-thumbnail">';

                        foreach ($files as $file)
                            if (preg_match('/^'.$category['id_category'].'-([0-9])?_thumb.jpg/i', $file) === 1)
                                $html .= '<div><img src="'.$this->context->link->getMediaLink(_THEME_CAT_DIR_.$file)
                                .'" alt="'.Tools::SafeOutput($category['name']).'" title="'
                                .Tools::SafeOutput($category['name']).'" class="imgm" /></div>';

                        $html .= '</li>';
                    }
                
                }*/

 

Bonne soirée

Emmanuel

Link to comment
Share on other sites

  • 1 month later...

@numeretik : je ne crois pas que vous parlez de la même chose... on parle ici de l'entête de catégorie et des miniatures de sous catégories et pas des miniatures du menu top.

 

Bref, si je UP, c'est parce que moi aussi, je bloque et c'est franchement dérangeant... Vue la différence des images, je me suis dit "ben c'est pas grave, je me fais une belle image en 874x172 et une autre en 125x125, comme ça, j'aurais de belles photos!"

 

Ben non... j'ai pas le choix, la dernière image uploadée est la dernière prise en compte par photoshop donc comme le dit Zhadum dans ce post, il faut choisir, soit une 125x125 centrée et comblée avec du blanc tout moche pour l'entête de catégorie, soit une belle image 874x172 qui sera illisible puisque réduite à 125x125...

 

Vous choisissez quoi? la peste ou le choléra?

Link to comment
Share on other sites

  • 2 weeks later...

J'ai les mêmes besoins (images différente de l'image principale dans l'affichage des sous-catégories). J'ai modifié le fichier template correspondant.

 

- J'ajoute mon image que je veux voir dans la grille des sous-catégories dans le champs "miniature" de l'édition de la catégorie du backoffice dans Catalogue > Catégories

- Je modifie le fichier template category.tpl pour avoir dans la section <!-- Subcategories --> l'appel de l'image suivant :

...$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, '0_thumb')...

La modification réside au niveau du type de l'image qui est maintenant : '0_thumb'.

Ce type d'image est généré automatiquement à l'enregistrement de la catégorie après l'ajout de ma miniature ci-dessus.

 

Par contre il ne faut pas regénérer toutes les miniatures sur le backoffice dans  Préférences > Images, car cela efface toutes les images "0_thumb".

Link to comment
Share on other sites

  • 3 months later...
  • 2 weeks later...

Chez moi ça marche. J'ai repris le code de Tamboul (plus haut) et je l'ai adapté car le sien ne marche plus (je suis sous presta 1.6.0.14)

<script>
$(function() { // replace img in sub-categorie with first img miniature
    $(".subcategory-image>a>img").each(function() {
        var p=$(this).parent('a');
        var m=$(this);
        var i=$(this).attr('src');
        if(i!=undefined) {
            // i can contain something like : http://mysite.fr/c/3...ault/images.jpg
            // or http://mysite.fr/c/f...ault/images.jpg if img in sub-cat doesnt exist
            // first miniature contain 0_thumb
            if(i.indexOf("fr-default-medium_default")>0) {
                // reached for number of categorie
                var p=p.attr('href');
                p=p.substring(p.lastIndexOf('/')+1);
                p=p.split('-');
                p=p[0];
								p=p.split('?');
								p=p[1];
								p=p.split('=');
								p=p[1];
								p=p.split('&');
								p=p[0];
                var ir=i.replace('fr-default-medium_default',p+'-0_thumb');
            }
            else {
                var ir=i.replace('medium_default','0_thumb');
            }
            $.ajax({ // url with 0_thumb exist ?
                url:ir,
                type:'HEAD',
                success: function() { // YES !!!!!
                    m.attr('src',ir); // replace src
                },
            });
        } // end of if(i!=undefined)
    }); // end of $().each

})
</script>

Perso je l'ai testé entre les balise Head du head.tpl du thème, mais c'est pas le meilleure endroit pour le mettre.

 

EDIT : Je l'ai déplacé au début de Category.tpl.

Pour utiliser cette téchnique, vous mettez en image de catégorie un bandeau large, et comme vignette une image carré.

Edited by salfai (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonjour

 

On est nombreux à vouloir gérer des images différentes pour le carré de la sous-catégorie et l'image de la sous-catégorie elle-même.

Je vais essayé le code de salfai... Et je le remercie bien sûr !

 

JLL (version 1.6.0.14 aussi)

Link to comment
Share on other sites

Oui salfai ce code était compatible 1.6.0.8.

 

J'ai fait quasiment la même modif que vous, et elle fonctionne sur PS 1.6.1

du coup pour être plus dans la norme j'ai créé un module avec en plus la possibilité de faire changer périodiquement les miniatures.

 

Je suis aussi en train de développer le back office pour paramétrer la périodicité, gérer et uploader les images dans les bonnes catégories.

Edited by tomboul (see edit history)
Link to comment
Share on other sites

Oui salfai ce code était compatible 1.6.0.8.

 

J'ai fait quasiment la même modif que vous, et elle fonctionne sur PS 1.6.1

du coup pour être plus dans la norme j'ai créé un module avec en plus la possibilité de faire changer périodiquement les miniatures.

 

Je suis aussi en train de développer le back office pour paramétrer la périodicité, gérer et uploader les images dans les bonnes catégories.

 

Bonjour j'ai le même probléme concernant les visuels miniatures des sous catégories.

Si votre module est terminé je serais très intéressé par celui-ci ;)

Merci par avance, n'hésitez pas à nous tenir au courant.

Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

bonjour,

ça me dépasse ce problème, c'est franchement un bug là...

​Quel intérêt de créer la vignette de sous catégorie à partir du fichier description qui est en 870*225, alors qu'on peut upload une miniature déjà en 125*125, mais qui ne sert à rien si ce n'est pas une catégorie principale?

Au secours!!!

Link to comment
Share on other sites

Coucou c'est nous!

 

J'ai trouvé une solution toute simple, changer la dimension des images!

Pour un rendu à peu près propre, il faut utiliser le même rapport hauteur/largeur dans la catégorie et la miniature.

j'ai opté pour des images de catégorie en 870*435, pour des miniatures en 130*65

 

reste qu'il faut monter des images avec un fond foncé au niveau des titres de catégories, dont on ne peut modifier ni la taille, ni la couleur (version cloud)

Je pense que je vais ruser en mettant mon texte de description à gauche, sous le titre, et que je vais mettre un filigrane sur les miniatures à cet endroit.

J'essaierai ça demain...

 

à+

Link to comment
Share on other sites

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