[PLUGIN SEARCH] Problème de merge entre plugins de type search

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

  • [PLUGIN SEARCH] Problème de merge entre plugins de type search

    Bonjour a tous,

    Je suis actuellement en train de travailler sur un plugin de type search me permettant de rechercher des articles dans un flux XML donné.

    Tout cela fonctionne très bien sauf que lorsque j'affiche la pages des résultats, les articles que je remonte avec mon plugin sont séparés du reste des autres articles et s'affichent en premier au lieux d'être mélé avec le plugin de com_content.

    En simple ma page de résultat affiche les articles dans cet ordre :

    Résultat de mon plugin{
    Article 1
    Article 2
    Article 3
    }
    Résultat de plgContent{
    Article 1
    ...
    Article n
    }

    Voici le code du plugin :
    Code PHP:
    <?php
    defined
    ('_JEXEC') or die;

    require_once 
    JPATH_SITE '/components/com_content/router.php';

    class 
    PlgSearchArticleReader extends JPlugin
    {
        
    /** 
         * @return array An array of search areas
         */ 
        
    public function onContentSearchAreas()
        {
            static 
    $areas = array( 
                
    'articlereader' => 'JGLOBAL_ARTICLES'
            
    );
            return 
    $areas;
        }

        
    /**
         * Content Search method
         * The sql must return the following fields that are used in a common display
         * routine: href, title, section, created, text, browsernav
         * @param string Target search string
         * @param string mathcing option, exact|any|all
         * @param string ordering option, newest|oldest|popular|alpha|category
         * @param mixed  An array if the search it to be restricted to areas, null if search all
         */
        
    public function onContentSearch($text$phrase ''$ordering ''$areas null)
        {
            require_once(
    JPATH_SITE."/plugins/search/articlereader/XmlParser.php");
            require_once 
    JPATH_SITE '/components/com_content/helpers/route.php';
            require_once 
    JPATH_ADMINISTRATOR '/components/com_search/helpers/search.php';
        
            
    $app JFactory::getApplication();
            
    $user JFactory::getUser(); 
            
    $groups implode(','$user->getAuthorisedViewLevels());
            
    $tag JFactory::getLanguage()->getTag();

            
    $componentParams JComponentHelper::getParams('com_articlereader');
            
    $param $componentParams->get('remoteOrLocal');  
            
    $parserXML = new XmlParser(JPATH_SITE."components/com_articlereader/web-contents.xml",$param);

               
    $words explode(" ",$text);
    //Switch en fonction du type de recherche
            
    switch ($phrase) {
     
                    
    // Search exact
                    
    case 'exact':
                        
    $articles $parserXML->getExact($text);
                            break; 
                    
    // Search all or any
                    
    case 'any':
                         
    $articles $parserXML->getAny($words);
                            break;
                    case 
    'all':
                     
    // Set default
                    
    default:
                         
    $articles $parserXML->getAll($words);
                            break;
            }
            
                    
    // Ordering of the results
            
    switch ( $ordering ) {
     
                    
    //Alphabetic, ascending
                    
    case 'alpha':
                          function 
    string_compare($a$b)
                        {
                            return 
    strcasecmp($a->title$b->title);
                        }    
                        
    usort($articles'string_compare');                
                  
                    break;
     
                    
    // Oldest first
                    
    case 'oldest':
                        function 
    date_compare($a$b)
                        {
                            
    $t1 strtotime($a->created);
                            
    $t2 strtotime($b->created);
                            return 
    $t1 $t2;
                        }    
                        
    usort($articles'date_compare');                
                     break;
                    
    // Popular first
                    
    case 'category':
                        function 
    string_compare($a$b)
                        {
                            return 
    strcasecmp($a->section$b->section);
                        }     
                        
    usort($articles'string_compare');                
                  
                        break;
                    
    // Newest first
                    
    case 'newest':
                        function 
    date_compare($a$b)
                        {
                            
    $t1 strtotime($a->created);
                            
    $t2 strtotime($b->created);
                            return 
    $t2-$t1;
                        }    
                        
    usort($articles'date_compare');                
                     
                    break;   
                    
    // Default setting: alphabetic, ascending
                    
    default: 

            }
            return 
    $articles;
        }
    }
    l'array $articles est un tableau d'objet construit de cette maniere :
    Code PHP:
                    $articles[] = (object) array(
                                    
    'href'        => "lien",
                                    
    'title'       => "Titre article",
                                    
    'section'     => "catégorie"
                                    
    'created'     =>"date",
                                    
    'text'        => "contenue",
                                    
    'browsernav'  => '0'
                               
    ); 
    Je suis plus habitué à la création de composant que de plugin, il y a donc très certainement des particularité qui m'ont échappé.
    Que faudrait-il que je fasse pour que le tableau d'article que je renvoie ce mélange avec les autres résultats ?

    En espérant avoir été suffisamment clair.

    Merci d'avance.

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X