Pas un bug mais une amélioration dans la recherche

chritchanchritchan Member
novembre 2012 modifié dans Bogues
J'étais entrain de tester le moteur de recherche trouvé à cette adresse : http://wiki.pluxml.org/index.php?page=Ajouter+un+moteur+de+recherche+dans+une+page+statique

Et j'ai constaté qu'il affichait les articles qui sont planifiés. J'ai ajouté cette vérification.
Je ne suis pas un programmeur donc il est fort probable que ma méthode ne soit pas très "propre".
<?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]{5}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort');

	// Date du jour
	$maintenant = date('d/m/Y');

    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'])); 
			
			$art_date = plxDate::formatDate($art['date'], $format_date);
        
            if ((strpos($searchstring,$searchword) !== false) && ($maintenant > $art_date)) {
                $searchresults = true;
                $art_num = intval($art['numero']);
                $art_url = plxUtils::strCheck($art['url']);
				$art_chapo = plxUtils::strCheck($art['chapo']);
                $art_title = plxUtils::strCheck($art['title']);
                
				
                echo '<li>'.$art_date.': <a href="'.$plxMotor->urlRewrite("?article".$art_num."/".$art_url).'">'.$art['chapo'].'</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>';


}
?>
Bien à vous,
Chritchan ;)

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Et en remplaçant les lignes suivantes
    $aFiles = $plxGlob_arts->query('/[0-9]{5}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort');
    
    $aFiles = $plxGlob_arts->query('/[0-9]{3}.[a-z0-9-]+.php$/','search','rsort');
    

    par
    $aFiles = $plxGlob_arts->query('/[0-9]{5}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','search','rsort', 0, false, 'before');
    
    $aFiles = $plxGlob_arts->query('/[0-9]{3}.[a-z0-9-]+.php$/','search','rsort', 0, false, 'before');
    

    ça fonctionnerait pas ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.