[RESOLU] - Virtuemart - Passage de variable dans les sublayouts

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RESOLU] - Virtuemart - Passage de variable dans les sublayouts

    Bonjour tout le monde

    Une petite (!!) question à propos de Virtuemart si certains sont aguerris sur le sujet

    J'ai un souci avec les résultats de recherche "vide" avec VM (dernière version).
    J'ai tenté de modifier via les surcharges bien évidemment le fichier category.php sans succès et le fichier products.php dans les sublayouts pour tenter d'avoir un résultat mais sans succès.

    Je vous explique ma question !

    En théorie, quand on fait une recherche, on devrait avoir quand il n'y a pas de résultats l'affichage d'une simple phrase à la ligne 175 sur fichier category.php :
    Code:
    ...
    } elseif ($this->keyword !== false) {
    echo vmText::_ ('COM_VIRTUEMART_NO_RESULT') . ($this->keyword ? ' : (' . $this->keyword . ')' : '');
    ...
    Ce code n'est jamais balayé chez moi.
    Ok, j'ai alors tenté d'ajouter hors de la "vue catégorie" mon test en me basant sur la variable "keyword". Seulement ici, impossible de trouver la variable permettant de savoir si la recherche renvoyé est vide ou pas (pour n'afficher le message que si il n'y a pas de résultats).

    Bon, déjà, si quelqu'un a des billes là dessus...

    Maintenant, mon autre question sur le même sujet, j'ai donc tenté de passer ma variable sur le sublayouts "products" qui est appelé dans le template category. J'ai donc modifié l'appel à la ligne 32 dans le fichier "default de category" de :

    Code:
    echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$this->products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating));
    en

    Code:
    echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$this->products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating,'keyword'=>$this->keyword));
    Ok.
    Maintenant, dans mon fichier "product" où j'ai passé la variable, je devrai pouvoir accéder à la variable et l'afficher avec un :

    Code:
     $keyword = $viewData['keyword'];
     echo 'key: ' . $keyword;
    Et pourtant la variable est vide...

    C'est forcément une erreur de logique, mais je ne capte pas pourquoi je ne peux pas récupérer le mot de clé stocké dans la variable ici...

    Si quelqu'un a une idée

    Je vous redonne l'objectif (histoire de ne pas oublier la question à la fin de l'explication !!) : Virtuemart ne m'affiche qu'une page vide lorsqu'une recherche ne donne rien, le but est d'afficher un simple "aucun produit trouvé" sans pour autant que cette phrase ne soit affiché si des produits sont trouvés.

    Merci de votre aide
    Bien à vous tous,
    Xavier
    Chabi01 - http://www.xlformation.com

  • #2
    Bonjour,

    Je viens de vérifier sur un site test avec les données démo : j'ai bien un "Aucun enregistrement trouvé" qui s'affiche Cliquez sur l'image pour l'afficher en taille normale

Nom : vm_rech_null.jpg 
Affichages : 111 
Taille : 34,1 Ko 
ID : 2026005
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Hello
      Peut-être que cela a quelque chose à voir : je fais la recherche depuis le module de recherche appelé dans la page sur une position...
      Si tu veux voir le site : biosource-distribution.fr
      La recherche est en haut à droite..
      Recherche par exemple "rouille", j'ai bien 2 produits qui remontent,
      Recherche ensuite "toto", et là peanuts...

      En tout cas, merci pour ton test Robert
      Xavier


      Chabi01 - http://www.xlformation.com

      Commentaire


      • #4
        Trouvé !!
        Le passage de variable se fait à 2 endroits dans category.php : je l'ai passé sur le second appel et la variable est bien passée.

        Pour l'affichage d'un message en cas de résultat vide, j'ai ajouté une variable de comptage du nombre d'article et je l'ai simplement testée en fin de script (nbprod est initialisé à zéro puis incrémenté à chaque affichage d'un produit de 1 dans le code avant) :

        Code:
        $keyword = $viewData['keyword'];
        if (!empty($keyword) && $nbprod === 0) {
        echo '<br/><br/><h2><em>Aucun résultat trouvé avec la recherche : ' . $keyword . '</em></h2>';
        Et voilà, une nuit de sommeil et on trouve souvent la solution

        En tout cas, merci pour ton temps Robert et également les autres qui avaient pu prendre le temps de lire ce fil

        Résolu !
        Merci !!
        Xavier
        Dernière édition par chabi01 à 30/03/2021, 16h08
        Chabi01 - http://www.xlformation.com

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X