module de recherche spécifique

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

  • [RÉGLÉ] module de recherche spécifique

    bonjour,
    j'ai une demande:
    Est ce qu il existe un module de recherche qui lorsqu il n y a qu un seul résultat de recherche, redirige directement sur la page en question sans passer par la page de résultats ?
    ou si quelqun a une idée de code permettant ceci, je suis preneur aussi.

  • #2
    Auto réponse:
    j'ai reussi à avoir le comportement souhaité en effectuant une surcharge du fichier default_results.php qui gère l'affichage de la page de résultats .
    A la ligne 40, j'ai ajouté le code ci dessous:
    Code:
    <?php if ($this->total === 1) {
          foreach ($this->results as $result) :
         $this->result = &$result;
          $linkUrl = $this->result->url;
          header('Location:' .$linkUrl.'');
          endforeach;
    }
    ?>
    woluweb aime ceci.

    Commentaire


    • #3
      Bonjour

      Pourquoi une construction "foreach" alors que tu n'as qu'un et un seul élément ?

      Je te propose cette version, plus courte :

      Code PHP:
      if (=== intval($this->total)) {
          
      header('Location:' $this->results[0]->url);

      (non testé)

      Tu remarqueras que j'ai privilégié une écriture plus directe (nul besoin de passer par des variables tierces), que j'ai préféré intval() pour garantir que je compare bien avec un chiffre (ceci parce que tu utilises (et c'est très bien) le triple égal) et j'écris en Yoda-style (rien à voir avec bébé Yoda qu'on voit partout hein! ;-))



      Bonne journée.


      Dernière édition par cavo789 à 11/12/2019, 16h19
      woluweb aime ceci.
      Christophe (cavo789)
      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

      Commentaire


      • #4
        et pour ta redirection tu peux passer par les api joomla:

        Code PHP:
        $app JFactory::getApplication();
        $app->redirect($this->results[0]->url); 
        woluweb aime ceci.
        Plus c'est simple pour l'utilisateur, et plus c'est complexe pour le développeur, et vice versa

        Commentaire


        • #5
          Merci pour votre aide.
          Je ne suis pas dev de métier, donc je me suis débrouillé avec ce que je connaissait et ce que j'ai vu.
          La ligne if $this->total == 1 viens de la ligne if $this->total == 0, qui sert à afficher le template si il n'y a aucun résultat.
          Je n avais pas trouvé d'exemple de redirection directe, d'ou mon utilisation de header: location. C'était le seule manière que je connaissait.

          Quand à ma boule foreach, elle vient des lignes en dessous dans le fichier. C'est issu de la routine d'affichage des résultats.
          ligne 56 à 60
          Code:
              <?php foreach ($this->results as $result) : ?>
                  <?php $this->result = &$result; ?>
                  <?php $layout = $this->getLayoutFile($this->result->layout); ?>
                  <?php echo $this->loadTemplate($layout); ?>
          J'ai galéré avec car je n'avais pas compris quoi servait la ligne $this->result = &$result; . (c'est pour un passage via référence si je ne me trompes pas).
          @cavo:
          Tu as oublié une ) dans ton code...

          Donc je teste et je met à jour mon code. Merci encore

          Commentaire


          • #6
            (corrigé)

            Bonne soirée
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X