Fonction "recherche" ne fonctionne pas theme Mystique

juillet 2012 modifié dans Entraide et S.A.T
Bonjour,

J'ai un petit problème avec la fonction de recherche du thème mystique. Lorsqu'on effectue une recherche, il met "Une erreur a été détectée : Page non trouvée". (http://www.teoufouwak.perozeni.com/)

Comme je n'y connait pas grand chose en programmation, je ne sais pas trop où regarder. Quelqu'un pourrait-il m’aiguiller ?

Merci.

Réponses

  • Quelle version du plugin et de pluxml as-tu ?
  • En fait c'est PLUXML 5.1.6 avec le thème Mystique vers 1 je pense...
  • Et la version du plugin de recherche ? Tu trouveras cette info dans le pannel d'administration, sur la page d'accueil des plugins.
  • Heu ! c'est pas un plugin, cette fonction est directement intégrée au thème Mystique !
  • N'est-ce pas un problème de date dans une page statique? Vois s'il ne faut pas remplacer "plxDate::dateIsoToHum" par "plxDate::formatDate" dans ton code source.

    Le thème n'est peut-être pas à jour.
  • J'ai passé tous les fichiers en revue. Je n'en ai aucun qui comporte une de ces expressions...
  • Si c'est dans une page statique, il faut regarder le code de cette page, soit via le panneau d'admin, soit directement en regardant les fichiers dans le dossier data
  • Dans un des fichiers j'ai trouvé le code, bien écrit !
    Voici les lignes correspondantes à la recherche dans la sidebar :

    <!-- search form -->
    <li class="block">
    <div class="search-form">
    <form method="get" id="searchform" action="<?php echo PLX_ROOT ?>?static5/recherche" class="clearfix">
    <fieldset>
    <div id="searchfield">
    <input type="hidden" name="search" value="search" />
    <input type="text" name="searchfield" id="searchbox" class="text clearField" value="Rechercher..." onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" />
    </div><input type="submit" value="" class="submit" />
    </fieldset>
    </form>
    </div>
    </li>
    <!-- /search form -->

    Mais n'y comprenant rien, je ne vois pas quel fichier effectue le traitement de la tâche !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    As-tu une page statique avec l'identifiant 005 et qui s'appellerait "Recherche"
    Le formulaire de recherche une fois soumis appelle cette page statique 005 pour traiter les critères de recherches et renvoyés les résultats.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonjour Stéphane,
    Je n'ai pas de telle page...
  • StéphaneStéphane Member, Former PluXml Project Manager
    Voilà ce que tu peux essayer

    1. créer une page statique "Recherche" en collant dedans le code suivant
    (issu du wiki : http://wiki.pluxml.org/index.php?page=Ajouter+un+moteur+de+recherche+dans+une+page+statique)
    <?php
    # Page statique Pluxml : moteur de recherche
    # révision 1.0 par Stephane :
    #    - paramétrage du format de la date
    # révision 1.1 par Amaury :
    #   - Compatibilité PluXml 5.0
    # révision 1.2 par Amaury :
    #   - Fix : recherche des articles multi-catégorisés
    # révision 1.3 par Amoweb :
    #   - Recherche dans les pages statiques
    #   - Minifix par Laurent, casse liens
    
    if(!defined('PLX_ROOT')) exit;
    
    # Renseignez ici le format de la date
    $format_date = '#num_day/#num_month/#num_year(4)';
    
    global $plxShow;
    
    if (!empty($_POST['searchfield'])) {
    
        $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']);
        $aFiles = $plxGlob_arts->query('/[0-9]{4}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort');
    
        ob_start();
        if(is_array($aFiles)) { # On a des fichiers
        
            $searchword = strtolower(htmlspecialchars($_POST['searchfield']));
            while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers
        
                $art = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v);
    
                $searchstring  = strtolower(addslashes($art['title'].$art['chapo'].$art['content'])); 
            
                if (strpos($searchstring,$searchword) !== false) {
                    $searchresults = true;
                    $art_num = intval($art['numero']);
                    $art_url = plxUtils::strCheck($art['url']);
                    $art_title = plxUtils::strCheck($art['title']);
                    $art_date = plxDate::dateIsoToHum($art['date'], $format_date);
                    echo '<li>'.$art_date.': <a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'</a></li>'; 
                }
            }
        }
    
    
    
        $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxShow->plxMotor->aConf['racine_statiques']);
        $aFiles = $plxGlob_arts->query('/[0-9]{3}.[a-z0-9-]+.php$/','search','rsort');
    
        
    
        if(is_array($aFiles)) { # On a des fichiers
        
            $searchword = strtolower(htmlspecialchars($_POST['searchfield']));
            while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers
    
                $searchstring  = strtolower(addslashes(file_get_contents(PLX_ROOT.$plxShow->plxMotor->aConf['racine_statiques'].$v))); 
            
                if (strpos($searchstring,$searchword) !== false and intval(substr($v, 0, 3)) != ID_DE_LA_PAGE_STATIQUE) {
                    $searchresults = true;
                    $st_num = substr($v, 0, 3);
                    $st_title = substr($v, 4, -4);
                    echo '<li>'.$art_date.': <a href="'.$plxShow->plxMotor->aConf['racine'].'?static'.$st_num.'/'.$st_title.'">'.ucwords ($st_title).'</a></li>'; 
                }
    
            }
        }
    
        $content = ob_get_clean(); 
        if ($content!='')
            echo '<p>Résultats de la recherche pour <strong>'.$searchword.'</strong>.<br /><ol class="search_results">'.$content.'</ol></p>';
            else
                echo '<p>Aucun résultat pour <strong>'.$searchword.'</strong></p>';
    
    
    }
    ?>
    

    2. Repère l'identifiant de la page créée (vérifie au passage que la page est bien active)
    3. Dans le fichier sidebar.php de ton thème

    remplace dans la ligne suivante le chiffre 5 par l'id de ta page recherche
     <form method="get" id="searchform" action="<?php echo PLX_ROOT ?>?static5/recherche" class="clearfix">
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonjour,

    J'ai essayé Stéphane, mais ça ne fonctionne pas.
    J'ai essayé d'autres choses. Par exemple, j'ai installé un autre thème, en l’occurrence Nostalgie V42B
    Et là, la recherche ne fonctionne pas non-plus.
    Du coup, je me suis dit que ça venait de PLUXML lui-même. J'ai réinstallé le répertoire "CORE", mais ça n'a rien donné.
    Est-ce qu'il y a une fonction quelque part dans le source de PLUXML qui gère la recherche ?
    Je devrais peut-être changer de catégorie dans le forum ??
  • Jerry WhamJerry Wham Member
    août 2012 modifié
    On va procéder par étapes.


    Supprimes, si tu l'as créée, la page statique 5.


    Télécharges le plugin plxMySearch, importe le sur ton site et active le.


    A la place du code :
    <!-- search form -->
                    <li class="block">
                      <div class="search-form">
                        <form method="get" id="searchform" action="<?php echo PLX_ROOT ?>?static5/recherche" class="clearfix">
                          <fieldset>
                            <div id="searchfield">
                              <input type="hidden" name="search" value="search"  />
                              <input type="text" name="searchfield" id="searchbox" class="text clearField" value="Rechercher..." onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" />
                            </div><input type="submit" value="" class="submit" />
                          </fieldset>
                        </form>
                      </div>
                    </li>
                    <!-- /search form -->
    

    que tu as dans ta sidebar, mets celui qui suit :
                    <!-- search form -->
                    <li class="block">
                      <div class="search-form">
                        <?php eval($plxShow->callHook('MySearchForm')) ?>
                      </div>
                    </li>
                    <!-- /search form -->				
    

    et dis nous si ça fonctionne.


    Si tu pouvais également mettre un lien vers ton site, ça pourrait nous aider à t'aider.
  • Merci Jerry, je n'avais pas vu ta réponse.
    J'ai tout fait...bien je pense. J'ai la barre de recherche qui s'affiche, ainsi que la page. Mais lorsque je lance une recherche, il ne trouve rien !

    L'adresse c'est www.teoufouwak.com

    On avance.

    Merci
  • StéphaneStéphane Member, Former PluXml Project Manager
    Y a un truc bizarre qui se passe quand on lance la recherche
    l'url affichée dans le navigateur devient
    http://www.teoufouwak.perozeni.com/index.php?search#.UCI0t8g0N30
    

    Ton nom de domaine change.

    sans parler de ce qui se rajoute derriere le mot search (#.UCI0t8g0N30)

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • En fait l'url exacte du site est http://www.teoufouwak.perozeni.com/
    Je donne l'adresse courte pour simplifier.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Ok.
    Donc reste à savoir pourquoi se rajoute dans l'url #.UCI5AMg0N30

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonjour à tous j'ai moi aussi le même problème je viens de mettre en place un site sous pluxml version 5.1.6 avec le thème mystique mais impossible de lier le champ de recherche avec le plugin MySearch version 1.1.4.
    J'ai aussi tenté le coup de la page static que l'on appel mais rien non plus de ce côté la...
    Le mieux que j'ai réussi à faire c'est de supprimer le champ de recherche du thème et de le remplacer par celui du plugin. La ça fonctionne évidement mais on perd l'avantage du thème car le champ est pas joli...
    Si vous avec une idée soit pour donner au champ l'apparence de celui du thème si c'est possible, soit une autre piste je vous en remercie par avance.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Barry
    Je te conseille de supprimer tout ce qui fait référence à la fonction de recherche dispo dans le theme mystique et d'utiliser à la place le plugin plxMySearch. Le bouton affiché dispose d'une classe qu'il suffit de personnaliser dans le fichier css de ton thème. Est-ce quelqu'un peut donner un coup de main à Barry pour lui fournir un bout de code css. Merci d'avance

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • BarryBarry Member
    novembre 2012 modifié
    Salut Stéphane, et merci pour ta réponse rapide.
    J'ai pas mal avancé en fait j'ai modifié la partie du plugin qui affiche le champ de recherche en y intégrant les id et les class du thème mystique. Du coup tout s'affiche correctement et la fonction de recherche fonctionne mais j'ai encore le libellé du bouton qui s'affiche devant le bouton du thème. En attendant j'ai rusé en mettant "__" comme nom ce qui me fait juste un souligné du libellé OK du bouton de thème.
    J'aimerais quand même trouver une solution définitive pour donner une solution propre.
    J'e profite pour donner le code a modifier pour ceux que ça intéresse :

    Le fichier à modifier s'appel plxMySearch il faut aller tout à la fin et mettre à la place de :
    <div class="searchform">
    	<form action="<?php// echo $plxMotor->urlRewrite('?'.$plxPlugin->getParam('url')) ?>" method="post">
    		<?php// if($title) : ?>
    		<p class="searchtitle"><?php// $plxPlugin->lang('L_FORM_SEARCHFIELD') ?>&nbsp;:</p>
    		<?php// endif; ?>
    		<p class="searchfields">
    		<input type="text" class="searchfield" name="searchfield" value="<?php// echo $searchword ?>" />
    		<input type="submit" class="searchbutton" name="searchbutton" value="<?php// echo $plxPlugin->getParam('frmLibButton') ?>" />
    		</p>
    	</form>
    </div>
    
    les lignes de code suivantes :
    <div class="searchform">
    	<form method="post" action="<?php echo $plxMotor->urlRewrite('?'.$plxPlugin->getParam('url')) ?>"  id="searchform" class="clearfix">
    		<?php if($title) : ?>
    		<p class="searchtitle"><?php $plxPlugin->lang('L_FORM_SEARCHFIELD') ?>&nbsp;:</p>
    		<?php endif; ?>
    		<p id="searchfield">
    		<input type="text" class="text clearField" class="searchfield" id="searchbox" name="searchfield" value="<?php echo $searchword ?>" onblur="if(this.value=='') this.value='Rechercher...';" onfocus="if(this.value=='Rechercher...') this.value='';" />
    		<input type="submit" class="submit" name="searchbutton" value="<?php echo $plxPlugin->getParam('frmLibButton') ?>" />
    		</p>
    	</form>
    </div>
    
    Voilà c'est pas compliqué.
  • Tu as essayé de sortir ça
    value="<?php echo $plxPlugin->getParam('frmLibButton') ?>"
    
    pour résoudre l'affichage qui te gène ?
  • BarryBarry Member
    novembre 2012 modifié
    Oui excellent ç'était bien ça... je te remercie Jerry.
    Encore merci pour tout, à plus tard messieurs.
  • Bonjour,

    Je me permets de squatter le sujet, ayant un problème de fonction "Recherche" avec le thème Mystique.
    PluXml 5.1.7 avec Plugin PlxMySearch 1.2

    J'ai bien modifié le thème pour ajouter la ligne indiquée lors de la configuration du plugin.
    Affichage : Ok (page statique ou dans la sidebar)
    Recherche : Ok sur les pages statiques - Rien sur les articles (aucun mot d'aucun article trouvé)

    Si vous avez une piste à explorer, je suis preneur.

    Merci par avance
Connectez-vous ou Inscrivez-vous pour répondre.