простенький плагин, для поиска по самописному компоненту
Joomla плагин поиска по своему компоненту
09.01.2016
sonews.php (Download)
<?php /** * @package Joomla.Plugin * @subpackage Search.SoNews */ defined('_JEXEC') or die; /** * SoNews search plugin. * * @since 1.6 */ class PlgSearchSoNews extends JPlugin { /** * Load the language file on instantiation. * * @var boolean * @since 3.1 */ protected $autoloadLanguage = true; /** * Search content (categories). * * The SQL must return the following fields that are used in a common display * routine: href, title, section, created, text, browsernav. * * @param string $text Target search string. * @param string $phrase Matching option (possible values: exact|any|all). Default is "any". * @param string $ordering Ordering option (possible values: newest|oldest|popular|alpha|category). Default is "newest". * @param mixed $areas An array if the search is to be restricted to areas or null to search all areas. * * @return array Search results. * * @since 1.6 */ public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null) { $db = JFactory::getDbo(); $searchText = $text; /* if (is_array($areas)) { if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) { return array(); } }*/ $limit = $this->params->def('search_limit', 50); $state = array(); $text = trim($text); if ($text == '') { return array(); } switch ($ordering) { case 'alpha': $order = 'a.title ASC'; break; default: $order = 'a.title DESC'; break; } $text = $db->quote('%' . $db->escape($text, true) . '%', false); $query = $db->getQuery(true); $query->select('a.id, a.title, a.short_text AS text') ->from('#__so_news_item AS a') ->where('published = 1 AND (a.title LIKE ' . $text . ' OR a.short_text LIKE ' . $text . ' OR a.full_text LIKE ' . $text . ')') ->order( $order ); ; // echo $query->__toString().'<br />'; $db->setQuery($query, 0, $limit); try { $rows = $db->loadObjectList(); } catch (RuntimeException $e) { $rows = array(); JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error'); } /*echo '<pre>'; print_r($rows); echo '</pre>';*/ $return = array(); foreach($rows as &$oRow) { $oRow->href = 'index.php?option=com_sonews&view=item&id='.$oRow->id; } return $rows; } }