Jump to content

PS 1.7.5.1 ajouter les images des sous-cat au menu


Recommended Posts

Bonjour,

Sur un PS 1.7.5.1 avec un thème Iqit (Warehouse) fourni avec le module Mega Menu de Iqit. Le module peut être configuré pour montrer les images des catégories principales. Mais je souhaite afficher l'image des sous-catégories quand on passe la souris dessus (panneau Les produits). J'ai donc ajouté une div cachée contenant le lien vers la-dite catégorie et son image. Mais quand je vérifie avec l'inspecteur, si le lien va bien, le lien de l'image est (unknown). La div étant cachée, on ne peut contrôler le fonctionnement que via l'inspecteur.

Vous pouvez voir le site ici
Voici le code dans le tpl qui me semble gérer cette partie :

{function name="categories_links" nodes=[] level=1}

    {strip}

        <ul class="{if $level==1}cbp-links cbp-category-tree{elseif $level==2}cbp-hrsub-level2{elseif $level==3}cbp-hrsub-level2 cbp-hrsub-level3{/if}">

            {foreach $categories as $category}

                {if isset($category.title)}

                    <li  class="{if $level==1}cbp-hrsub-haslevel2{else}cbp-hrsub-haslevel3{/if}"  id="hasimg">

                        <div class="cbp-category-link-w">

                            <a href="{$category.href}">{$category.title}</a>

                                             {foreach from=$node.content.ids item=subcategory }
                                             <div class="cbp-hrsub-img">
                            <a href="{$category.href}" class="cbp-category-thumb">
																										<img

                                                            class="replace-2x img-fluid" src="{$category.children.thumb}"

                                                            alt="{$category.title}"/></a>
                                              </div>
                       	 {/foreach}

                            {if isset($category.children)}

                                {categories_links categories=$category.children level=$level+1}

                            {/if}

                        </div>

                    </li>

                {/if}

            {/foreach}

        </ul>

    {/strip}

{/function}

Ce que j'ai rajouté  c'est (après de nombreux tests divers et variés qui, la plupart du temps ont fait planter le site)

   {foreach from=$node.content.ids item=subcategory }
                                             <div class="cbp-hrsub-img">
                            <a href="{$category.href}" class="cbp-category-thumb">
																										<img

                                                            class="replace-2x img-fluid" src="{$category.children.thumb}"

                                                            alt="{$category.title}"/></a>
                                              </div>
                       	 {/foreach}

Je ne comprends pas pourquoi il trouve bien le lien de la sous-catégorie et pas le lien de l'image.

 

J'ai cherché dans le fichier php du module et la partie qui concerne les thumbs de catégories, c'est ceci :

  if (isset($node['thumb']) && $node['thumb']) {

                $files = scandir(_PS_CAT_IMG_DIR_);



                if (count(preg_grep('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $files)) > 0) {

                    foreach ($files as $file) {

                        if (preg_match('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $file) === 1) {

                            $image_url = $this->context->link->getMediaLink(_THEME_CAT_DIR_ . $file);

                            $return_categories['thumb'] = $image_url;

                            break;

                        }

                    }

                }

            }

Je suppose que le if isset node thumb correspond au réglage du module qui permet donc d'ajouter l'image à la catégorie parente. Et donc limiterait la reconnaissance de l'url de l'image à ces seules catégories ? J'ai donc copié le code compris dans ce if et l'ai collé juste au-dessus, mais cela n'a rien changé. J'ai cherché et trouvé des pages expliquant comment faire avec le module de base, mais quand j'essaie d'intégrer ça dans le tpl du module, ça fait planter la boutique.

 

Comment faire pour avoir ce foutu lien ? L'ajouter en dur ? Si oui comment ?

En le relisant, et en relisant le code, je vois que l'url construite dans le code ajoute des chiffres après l'id de catégorie. Mais en vérifiant dans le dossier c, il me semble que seules les images des catégories de premier niveau ont un chiffre dans leur nom (ex idcat-0-thumb.jpg) alors que les autres seraient plutôt du style "idcat_thumb.jpg". Ceci expliquerait-il cela ?

 

Ou ce serait envisageable de mettre en dur le lien du style src(/img/c/$category[id_category]_thumb.jpg) dans le tpl ?

 

Merci d'avance pour vos avis et éventuelles pistes !

Link to comment
Share on other sites

Bonjour,

Je continue à chercher.
J'ai essayé en mettant le lien en dur comme imaginé dans mon précédent post. Mais il ne récupère pas l'id de la  sous-catégorie.
En continuant à chercher dans le php du module, je crois que je comprends comment le nom, le titre et l'url des sous catégories sont récupérés. Je pense que c'est avec ceci :

  if (isset($subcat_limit) && isset($subcat_count) && ($subcat_count >= $subcat_limit)) {

                return $return_categories;

            }



            if ($category['level_depth'] > 1) {

                $cat = new Category($category['id_category']);

                $link = $cat->getLink();

            } else {

                $link = $this->context->link->getPageLink('index');

            }



            if ($subcats) {

                $return_categories[$key]['title'] = $category['name'];

                $return_categories[$key]['href'] = $link;
               


            } else {

                $return_categories['title'] = $category['name'];

                $return_categories['href'] = $link;

            }

J'ai donc essayé de rajouter un  $return_categories[$key]['image'] = $thumb; mais bien sûr cela n'a rien donné. Dans le tpl, en mettant $category.thumb dans le src, il m'affiche de nouveau unknown
Comment récupérer l'id de ces sous-catégories.
A tout hasard, je joinss le php (au format txt) pour le cas où quelqu'un aurait un peu de temps (et de patience pour se pencher dessus.

Mille mercis d'avance

megamenuphp.txt

Link to comment
Share on other sites

 

Bonjour MediaCom87, désolée de ne répondre que maintenant

Le thème a été installé par un autre prestataire, qui n'a pas transmis un N° de commande au client. Je l'ai contacté, j'attends la réponse.
Sans n° de commande, je n'ai pas accès au support ... donc j'essaie de trouver par mes propres moyens.

J'ai bien envoyé un premier message au dev du module qui m'avait dit que c'étais possible en modifiant les tpl mais que ce serait à moi à le faire. Ajouter une div qui apparaisse au mouseover, pas de problème pour moi. C'est juste ce foutu lien vers l'image qui ne fonctionne pas. Si je mets dans la balise "alt" de l'image $category.title, pas de souci, il a bien le titre. 

Dans le fichier php du module, je vois bien des return si la catégorie a des sous-catégories, il y a le title et le href, ce qui explique sans doute que je récupère correctement le titre.
Faudrait-il ajouter un return qui retournerait l'id ? mais là je sèche un peu.

Y aurait-il moyen de récupérer cette image juste avec du code dans le tpl et passer outre la partie du php du module qui gère les images? Mes essais en me basant sur des tutos pour le menu de base de Prestashop se sont soldés par des échecs. Et sur Google, je ne suis pas encore arrivée à trouver ce dont j'ai besoin ...

Merci de m'avoir lue en tout cas 😉

Link to comment
Share on other sites

Bonjour,

Thème semblant avoir été acheté par un prestataire qui a fait la migration depuis 1.6. Prestataire qui ne répond pas pour avoir un identifiant de commande. Dev du thème qui ne répond pas sans id de commande ... je suis coincée ...

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