Jump to content
kerlin

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 !

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Bonjour,

avez vous pris l temps de contacter le créateur de votre template pour qu'il vous aide après avoir encaissé votre argent ?

Share this post


Link to post
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 😉

Share this post


Link to post
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 ...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More