+ Antworten
Ergebnis 1 bis 2 von 2

Thema: "Eigenes" Suche Plugin für eine Komponente

  1. #1
    Neu an Board
    Registriert seit
    24.11.2010
    Beiträge
    41
    Bedankte sich
    13
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard "Eigenes" Suche Plugin für eine Komponente

    Liebe Forengemeinschaft!

    Ich benutze eine Komponente (Peoplebook) zur der es leider kein Suchen-Plugin gibt (herrkömliche Suchfunktion in Joomla). Nun habe ich angefangen und eins gebastelt. Sieht alles ganz nett aus, nur dass die Suchergebnisse nicht angezeigt werden.
    Kann mir bitte jemand helfen (in der Datenbank gibt es keine Spalte mit "title" sondern eine mit "name" - nach der möchte ich suchen bzw die Suchresultate ausgeben).
    Mein Code:
    Code:
    <?php
    
    defined( '_JEXEC' ) or die( 'Restricted access' );
    $mainframe->registerEvent( 'onSearch', 'plgSearchPeoplebook' );
    $mainframe->registerEvent( 'onSearchAreas', 'plgSearchPeoplebookAreas' );
    JPlugin::loadLanguage( 'plg_search_peoplebook' );
    
    if (!JComponentHelper::isEnabled('com_peoplebook', true)) {
    	return JError::raiseError(JText::_('Peoplebook Error'), JText::_('Peoplebook is not installed on your system'));
    }
    
    function &plgSearchPeoplebookAreas() {
    	static $areas = array(
    		'peoplebook' => 'Kader'
    	);
    	return $areas;
    }
    
    function plgSearchpeoplebook( $text, $phrase = '', $ordering = '', $areas = null ) {
    	
    	$db		= &JFactory::getDBO();
    	$user	= &JFactory::getUser();
    	$menu 	= &JSite::getMenu();
    
    	if (is_array( $areas )) {
    		if (!array_intersect( $areas, array_keys( plgSearchPeoplebookAreas() ) )) {
    			return array();
    		}
    	}
    
    	// load plugin params info
     	$plugin 		= &JPluginHelper::getPlugin('search', 'peoplebook');
     	$pluginParams 	= new JParameter( $plugin->params );
    	$limit 			= $pluginParams->def( 'search_limit', 50 );
    
    	$text = trim( $text );
    	if ($text == '') {
    		return array();
    	}
    
    	$section = JText::_( 'Kader');
    
    	$text	= $db->Quote( '%'.$db->getEscaped( $text, true ).'%', false );
    
    	$rows = array();
    	
    	$query = 'SELECT a.id, a.name AS title, '
    		. ' a.description AS text,'
    		. ' CONCAT_WS( "/", a.name ) AS section,'
    		. ' "2" AS browsernav'
    		. ' FROM #__peoplebook AS a'
    		. ' WHERE ( a.name LIKE '.$text
    		. ' OR a.name LIKE '.$text
    		. ' OR a.description LIKE '.$text.' )'
    		. ' AND a.published = 1'
    		. ' AND a.approved = 1'
    		. ' AND a.access <= '.(int) $user->get( 'aid' )
    		. ' GROUP BY a.id'
    		. ' ORDER BY '. $orderingCode;
    	
    	$db->setQuery( $query, 0, $limit );
    	$listCategories = $db->loadObjectList();
    	$limit -= count($listCategories);
    
    	
    	$results = array();	
    	
    	if(count($rows)) {
    		foreach($rows as $row) {
    			$results = array_merge($results, (array) $row);
    		}
    	}
    	
    	return $results;
    }
    Vielen herzlichen Dank!
    lG
    Monika

  2. #2
    Neu an Board
    Registriert seit
    24.11.2010
    Beiträge
    41
    Bedankte sich
    13
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Codeanpassung Datenbankabfrage - bitte um Hilfe

    Liebe Forengemeinschaft!
    Nun habe ich es geschafft, dass das Gesuchte gefunden wird. Aber der Link beim Suchergebnis funktioniert nicht richtig. Kann mir bitte jemand helfen?

    Code:
    //die Datenbankabfrage:
            $query = 'SELECT a.name AS title,'
            . ' CONCAT_WS( " / ", '. $db->Quote($searchPeoplebook) .', b.title )AS section,'
            . ' "1" AS browsernav'
            . ' FROM #__peoplebook AS a'
            . ' INNER JOIN #__categories AS b ON b.id = a.catid'
            . ' WHERE ( '. $where .' )'
            . ' AND a.published = 1'
            . ' AND b.access <= '. (int) $user->get( 'aid' )
            . ' ORDER BY '. $order
            ;
     
    //Ausgabelink: 
            foreach($rows as $key => $row) {
                    $rows[$key]->href = 'index.php?option=com_peoplebook&catid='.$row->catslug.'&id='.$row->slug;
            }
    Jetzt habe ich als Ergbnis: index.php/component/peoplebook/?catid=&id=
    es sollte aber so sein: index.php/component/peoplebook/?Itemid=DIE GEFUNDENE ID&func=fullview&staffid=DIE GEFUNDENE ID

    Vielen herzlichen Dank!
    lG
    Monika

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein