Jump to content

Search Box in Joomla 1.5


Blackened Radio

Recommended Posts

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.

Link to comment
https://forums.phpfreaks.com/topic/139571-search-box-in-joomla-15/
Share on other sites

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.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.