Jump to content

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.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.