Blackened Radio Posted January 5, 2009 Share Posted January 5, 2009 Hi, I'm using Joomla and it uses a couple PHP files to perform the search on the site. Right now, when I do a search, it gives me results based on the date the article was posted. I want to change this to show results based on the accuracy of what I'm typing. EXAMPLE: I search for the band "VANLADE" and the band page comes up third in the search list, because other things have posted since then. I want to change it so that the VANLADE page is the first to show if I type "VANLADE." My site is www.blackenedradio.com Here is the PHP files that I think the search is using. The first is CONTROLLER.PHP: ______________________________________________________________________________ <?php /** * @version $Id: controller.php 10869 2008-08-30 07:24:03Z willebil $ * @package Joomla * @subpackage Content * @copyright Copyright © 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' ); jimport('joomla.application.component.controller'); /** * Search Component Controller * * @package Joomla * @subpackage Search * @since 1.5 */ class SearchController extends JController { /** * Method to show the search view * * @access public * @since 1.5 */ function display() { JRequest::setVar('view','search'); // force it to be the polls view parent::display(); } function search() { $post['searchword'] = JRequest::getString('searchword', null, 'post'); $post['ordering'] = JRequest::getWord('ordering', null, 'post'); $post['searchphrase'] = JRequest::getWord('searchphrase', 'exact', 'post'); $post['limit'] = JRequest::getInt('limit', null, 'post'); if($post['limit'] === null) unset($post['limit']); $areas = JRequest::getVar('areas', null, 'post', 'array'); if ($areas) { foreach($areas as $area) { $post['areas'][] = JFilterInput::clean($area, 'cmd'); } } // set Itemid id for links $menu = &JSite::getMenu(); $items = $menu->getItems('link', 'index.php?option=com_search&view=search'); if(isset($items[0])) { $post['Itemid'] = $items[0]->id; } unset($post['task']); unset($post['submit']); $uri = JURI::getInstance(); $uri->setQuery($post); $uri->setVar('option', 'com_search'); $this->setRedirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')), false)); } } ______________________________________________________________________________ Here is the second. It's called SEARCH.PHP: <?php /** * @version $Id: search.php 10752 2008-08-23 01:53:31Z eddieajau $ * @package Joomla * @subpackage Search * @copyright Copyright © 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ // Check to ensure this file is included in Joomla! defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.model'); /** * Search Component Search Model * * @package Joomla * @subpackage Search * @since 1.5 */ class SearchModelSearch extends JModel { /** * Sezrch data array * * @var array */ var $_data = null; /** * Search total * * @var integer */ var $_total = null; /** * Search areas * * @var integer */ var $_areas = null; /** * Pagination object * * @var object */ var $_pagination = null; /** * Constructor * * @since 1.5 */ function __construct() { parent::__construct(); global $mainframe; //Get configuration $config = JFactory::getConfig(); // Get the pagination request variables $this->setState('limit', $mainframe->getUserStateFromRequest('com_search.limit', 'limit', $config->getValue('config.list_limit'), 'int')); $this->setState('limitstart', JRequest::getVar('limitstart', 0, '', 'int')); // Set the search parameters $keyword = urldecode(JRequest::getString('searchword')); $match = JRequest::getWord('searchphrase', 'exact'); $ordering = JRequest::getWord('ordering', 'alpha'); $this->setSearch($keyword, $match, $ordering); //Set the search areas $areas = JRequest::getVar('areas'); $this->setAreas($areas); } /** * Method to set the search parameters * * @access public * @param string search string * @param string mathcing option, exact|any|all * @param string ordering option, newest|oldest|popular|alpha|category */ function setSearch($keyword, $match = 'exact', $ordering = 'newest') { if(isset($keyword)) { $this->setState('keyword', $keyword); } if(isset($match)) { $this->setState('match', $match); } if(isset($ordering)) { $this->setState('ordering', $ordering); } } /** * Method to set the search areas * * @access public * @param array Active areas * @param array Search areas */ function setAreas($active = array(), $search = array()) { $this->_areas['active'] = $active; $this->_areas['search'] = $search; } /** * Method to get weblink item data for the category * * @access public * @return array */ function getData() { // Lets load the content if it doesn't already exist if (empty($this->_data)) { $areas = $this->getAreas(); JPluginHelper::importPlugin( 'search'); $dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger( 'onSearch', array( $this->getState('keyword'), $this->getState('match'), $this->getState('ordering'), $areas['active']) ); $rows = array(); foreach($results AS $result) { $rows = array_merge( (array) $rows, (array) $result); } $this->_total = count($rows); if($this->getState('limit') > 0) { $this->_data = array_splice($rows, $this->getState('limitstart'), $this->getState('limit')); } else { $this->_data = $rows; } } return $this->_data; } /** * Method to get the total number of weblink items for the category * * @access public * @return integer */ function getTotal() { return $this->_total; } /** * Method to get a pagination object of the weblink items for the category * * @access public * @return integer */ function getPagination() { // Lets load the content if it doesn't already exist if (empty($this->_pagination)) { jimport('joomla.html.pagination'); $this->_pagination = new JPagination( $this->getTotal(), $this->getState('limitstart'), $this->getState('limit') ); } return $this->_pagination; } /** * Method to get the search areas * * @since 1.5 */ function getAreas() { global $mainframe; // Load the Category data if (empty($this->_areas['search'])) { $areas = array(); JPluginHelper::importPlugin( 'search'); $dispatcher =& JDispatcher::getInstance(); $searchareas = $dispatcher->trigger( 'onSearchAreas' ); foreach ($searchareas as $area) { $areas = array_merge( $areas, $area ); } $this->_areas['search'] = $areas; } return $this->_areas; } } ______________________________________________________________________________ Please let me know if anyone can help, I'm VERY new on PHP, and I'm not sure how to accomplish this task. Quote Link to comment https://forums.phpfreaks.com/topic/139571-search-box-in-joomla-15/ Share on other sites More sharing options...
Maq Posted January 5, 2009 Share Posted January 5, 2009 So what is the problem besides, it doesn't do what I want it to do? Use code tags, please! Quote Link to comment https://forums.phpfreaks.com/topic/139571-search-box-in-joomla-15/#findComment-730123 Share on other sites More sharing options...
Blackened Radio Posted January 5, 2009 Author Share Posted January 5, 2009 I'm trying to alter the code so that it shows the search results based on what I'm typing, not based on when the article posted. I don't know enough about PHP to be able to alter this. Could someone help me? Quote Link to comment https://forums.phpfreaks.com/topic/139571-search-box-in-joomla-15/#findComment-730127 Share on other sites More sharing options...
premiso Posted January 5, 2009 Share Posted January 5, 2009 I'm trying to alter the code so that it shows the search results based on what I'm typing, not based on when the article posted. I don't know enough about PHP to be able to alter this. Could someone help me? Umm look at Joomla's forums, chances are someone already created a mod/hack for it. 2nd post in the right forum, this is a Third Party Script question. My 2 cents it is already done and looking at joomla forums you can find your answer. Quote Link to comment https://forums.phpfreaks.com/topic/139571-search-box-in-joomla-15/#findComment-730165 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.