Для того, чтобы в списке категории можно было создать фильтр материалов по каким либо параметрам заданным в дополнительных полях материала,  надо создать плагин модифицирующий запрос к базе данных перед его отправкой.

Для этого надо создать точку подключения плагина в методе getListQuery класса ContentModelArticles и создать плагин редактирующий запрос.

В свою очередь, для создания точки прерывания, можно воспользоваться плагином

edit_contentmodelcategory.xml

 

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5"  method="upgrade" type="plugin" group="system">
	<name>Edit_contentmodelcategory</name>
	<creationDate>2013-05-19</creationDate>
	<author>Vadim Rigin</author>
	<authorEmail>vadim@rigin.net</authorEmail>
	<authorUrl>http://www.rigin.net</authorUrl>
	<copyright>Copyright (C) 2013 Vadim Rigin Open Source Matters. All rights reserved.</copyright>	
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
	<version>1</version>
	<description></description>
	<files>
		<filename plugin="edit_contentmodelcategory">edit_contentmodelcategory.php</filename>
		<filename>index.html</filename>
		<filename>articles.php</filename>
	</files>
</install>

 

edit_contentmodelcategory.php

 

<?php

// No direct access
defined('_JEXEC') or die;

$app = JFactory::getApplication();

if($app->isSite())
{
	// Считываем базовый класс ContentModelArticles .
	
	$ContentModelArticlesOld = implode('',file(JPATH_ROOT . '/components/com_content/models/articles.php'));
	
	// переименовываем его
	$ContentModelArticlesOld = str_replace (
										' ContentModelArticles ',
										' ContentModelArticles_Edit_contentmodelcategory ',
										$ContentModelArticlesOld
									);			
	
	// отрезаем <?php
	$ContentModelArticlesOld = substr($ContentModelArticlesOld,5);
	
	
	// запускаем переименованный класс
	eval($ContentModelArticlesOld);
	
	// Вызываем новый класс ContentModelArticles на замену
	include_once JPATH_ROOT . '/plugins/system/edit_contentmodelcategory/articles.php';
}

 

articles.php

 

<?php
/**
 * @copyright	Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.application.component.modellist');

/**
 * This models supports retrieving lists of articles.
 *
 * @package		Joomla.Site
 * @subpackage	com_content
 * @since		1.6
 */
class ContentModelArticles extends ContentModelArticles_Edit_contentmodelcategory
{
	function getListQuery ()
	{
		$query = & parent::getListQuery();
		
		$dispatcher = & JDispatcher::getInstance();
		JPluginHelper::importPlugin( 'content' );
		$dispatcher->trigger( 'onContentAfterGetListQuery',array( & $query, & $this));
		
		return $query;
	}
}

 

Или сделать соответствующий хак с помощью компонента JHack

Примечание: при переопределении класса плагином, если вы создаете страницы списка избранных материалов, необходимо переопределить класс ContentModelFeatured, убрав строку 

require_once dirname(__FILE__) . '/articles.php';

в начале файла

 

 

Теперт собственно плагин коррекции запроса. Он приводится для примера и зависит от конкретного набора параметров поиска.

search_kotedje.xml

 

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5"  method="upgrade" type="plugin" group="content">
	<name>Search_kotedje</name>
	<creationDate>2013-05-18</creationDate>
	<author>Vadim Rigin</author>
	<authorEmail>vadim@rigin.net</authorEmail>
	<authorUrl>http://www.rigin.net</authorUrl>
	<copyright>Copyright (C) 2013 Vadim Rigin Open Source Matters. All rights reserved.</copyright>	
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
	<version>1</version>
	<description></description>
	<files>
		<filename plugin="search_kotedje">search_kotedje.php</filename>
		<filename>index.html</filename>
	</files>
</install>

 

search_kotedje.php

 

<?php

// No direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

class plgContentSearch_kotedje extends JPlugin
{
	


	/**
	 * Example prepare content method
	 *
	 * Method is called by the view
	 *
	 * @param	string	The context of the content being passed to the plugin.
	 * @param	object	The content object.  Note $article->text is also available
	 * @param	object	The content params
	 * @param	int		The 'page' number
	 * @since	1.6   context = "com_content.articles"
	  
	public function onContentPrepare($context, &$article, &$params, $limitstart)
	{
		$app = JFactory::getApplication();
		if ($app->isAdmin() or $context != 'com_content.category') return true;
		dump($article,'$article');dump($params,'$params');dump($limitstart,'$limitstart');
	}*/
	
	public function onContentAfterGetListQuery($query, $_this)
	{
		$app = JFactory::getApplication();
		if ($app->isAdmin()) return true;
		
		
		$jinput = $app->input; 
		$paramrequest = $jinput->getArray($_POST)+$jinput->getArray($_GET);
		
		if(!isset($paramrequest['option']) || $paramrequest['option'] != "com_content") return TRUE;
		
		if($paramrequest['view'] == "category")
		{
			if($paramrequest['layout']== "usertemplate:catalogkotedg")
			{
				
				
				
				$typDom = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 1)';
				
				$Garazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 2)';
						
				$bass  = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 3)';
				
				$etazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 4)';
				
				$S     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 5)';
				
				$price     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 6)';
				
						
				
				$query->join('LEFT',$typDom.' AS typDom ON typDom.articleid = a.id')
					 ->join('LEFT',$Garazh.'  AS Garazh ON Garazh.articleid = a.id')
					 ->join('LEFT',$bass.'  AS Bass ON Bass.articleid = a.id')
					 ->join('LEFT',$etazh.'  AS Etazh ON Etazh.articleid = a.id')
					 ->join('LEFT',$S.'  AS sObsh ON sObsh.articleid = a.id')
					 ->join('LEFT',$price.'  AS price ON price.articleid = a.id')
					 ->select(array('typDom.value AS typDom','Garazh.value  AS Garazh','Bass.value  AS Bass',
					 			'Etazh.value  AS Etazh','sObsh.value  AS sObsh','price.value  AS price'));
				
				
				if (isset($paramrequest['typDom']))
				{
					$aa = '';
					foreach ($paramrequest['typDom'] as $a)
					{
						$aa .= $query->q($a).',';
					};
					$aa = substr($aa,0,strlen($aa)-1);
					$query->where( "typDom.value IN ($aa)");
				};
				if (isset($paramrequest['Garazh'])) 
				{
					$aa = '';
					foreach ($paramrequest['Garazh'] as $a)
					{
						$aa .= (int)$a.',';
					};
					$aa = substr($aa,0,strlen($aa)-1);
					$query->where( "Garazh.value IN ($aa)");
				};
				if (isset($paramrequest['bass'])) 
				{
					$aa = '';
					foreach ($paramrequest['bass'] as $a)
					{
						$aa .= (int)$a.',';
					};
					$aa = substr($aa,0,strlen($aa)-1);
					$query->where( "Bass.value IN ($aa)");
				};
				if (isset($paramrequest['etazh'])) 
				{
					$aa = '';
					foreach ($paramrequest['etazh'] as $a)
					{
						$aa .= (int)$a.',';
					};
					$aa = substr($aa,0,strlen($aa)-1);
					$query->where( "Etazh.value IN ($aa)");
				};
				
				if (isset($paramrequest['minS']) and isset($paramrequest['maxS']) )
					$query->where('sObsh.value BETWEEN  '.(int)$paramrequest['minS'].' AND '.(int)$paramrequest['maxS']);
					
				if (isset($paramrequest['minPrice']) and isset($paramrequest['maxPrice']) )
					$query->where('price.value BETWEEN  '.(int)$paramrequest['minPrice'].' AND '.(int)$paramrequest['maxPrice']);	 
				
				
			}
			elseif($paramrequest['layout']== "usertemplate:catalogtaunhouse")
			{
				
				
				
				$typDom = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 1)';
				
				$Garazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 2)';
						
				$bass  = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 3)';
				
				$etazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 4)';
				
				$S     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 5)';
				
				$price     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 6)';
				
						
				
				$query->join('LEFT',$typDom.' AS typDom ON typDom.articleid = a.id')
					 ->join('LEFT',$Garazh.'  AS Garazh ON Garazh.articleid = a.id')
					 ->join('LEFT',$bass.'  AS Bass ON Bass.articleid = a.id')
					 ->join('LEFT',$etazh.'  AS Etazh ON Etazh.articleid = a.id')
					 ->join('LEFT',$S.'  AS sObsh ON sObsh.articleid = a.id')
					 ->join('LEFT',$price.'  AS price ON price.articleid = a.id')
					 ->select(array('typDom.value AS typDom','Garazh.value  AS Garazh','Bass.value  AS Bass',
					 			'Etazh.value  AS Etazh','sObsh.value  AS sObsh','price.value  AS price'));
			}
			elseif($paramrequest['layout']== "usertemplate:cataloggaraj")
			{
				
				
				
				$typDom = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 1)';
				
				$Garazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 2)';
						
				$bass  = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 3)';
				
				$etazh = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 4)';
				
				$S     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 5)';
				
				$price     = '(SELECT fv.value, fv.articleid '.
						'FROM #__fieldsattach_values AS fv  '.
						'JOIN #__fieldsattach_groups AS fg ON fg.note = '.$query->q('g1').' '.
						'JOIN #__fieldsattach AS fa ON   fa.groupid = fg.id AND fv.fieldsid = fa.id '.
						'WHERE fa.ordering = 6)';
				
						
				
				$query->join('LEFT',$typDom.' AS typDom ON typDom.articleid = a.id')
					 ->join('LEFT',$Garazh.'  AS Garazh ON Garazh.articleid = a.id')
					 ->join('LEFT',$bass.'  AS Bass ON Bass.articleid = a.id')
					 ->join('LEFT',$etazh.'  AS Etazh ON Etazh.articleid = a.id')
					 ->join('LEFT',$S.'  AS sObsh ON sObsh.articleid = a.id')
					 ->join('LEFT',$price.'  AS price ON price.articleid = a.id')
					 ->select(array('typDom.value AS typDom','Garazh.value  AS Garazh','Bass.value  AS Bass',
					 			'Etazh.value  AS Etazh','sObsh.value  AS sObsh','price.value  AS price'));
			}
		}
		
	}


}

 

Далее надо переопределить вывод списка материалов категории в шаблоне, прочитав нужные параметры из запроса и создав форму самого фильтра. Форму фильтра можно включить в шаблон списка категории, или оформить в виде модуля.

Вот шаблон вывода списка материалов категории:

catalogkotedg.php

 

<?php
/**
 * @package		Joomla.Site
 * @subpackage	com_content
 * @copyright	Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');

$app = JFactory::getApplication('site');
$template = $app->getTemplate(true);


$this->document->addStyleSheet($this->baseurl.'/templates/'.$template->template.'/css/jquery-ui-1.10.3.custom.css');

$this->document->addScript($this->baseurl.'/templates/'.$template->template.'/js/jquery-ui-1.10.3.custom.js');

$minS = $this->params->get('minS');
$maxS = $this->params->get('maxS');

$minPrice = $this->params->get('minPrice');
$maxPrice = $this->params->get('maxPrice');

$jinput = JFactory::getApplication()->input; 

$this->siarchparam = $jinput->getArray($_POST)+$jinput->getArray($_GET);

if (isset($this->siarchparam['typDom'])) foreach ($this->siarchparam['typDom'] as $a) $typDom[$a] = 1;
if (isset($this->siarchparam['Garazh'])) foreach ($this->siarchparam['Garazh'] as $a) $Garazh[$a] = 1;
if (isset($this->siarchparam['bass'])) foreach ($this->siarchparam['bass'] as $a) $bass[$a] = 1;
if (isset($this->siarchparam['etazh'])) foreach ($this->siarchparam['etazh'] as $a) $etazh[$a] = 1;


$script =
'
$(document).ready(function(){


/* слайдер цен */

$("#slider-2").slider({
	min: '.$minPrice.',
	max: '.$maxPrice.',
	values: ['.(isset($this->siarchparam['minPrice'])? $this->siarchparam['minPrice']:$minPrice).','.(isset($this->siarchparam['maxPrice'])? $this->siarchparam['maxPrice']:$maxPrice).'],
	range: true,
	stop: function(event, ui1) {
		$("input#minPrice").val($("#slider-2").slider("values",0));
		$("input#maxPrice").val($("#slider-2").slider("values",1));
		
    },
    superslide: function(event, ui1){
		$("input#minPrice").val($("#slider-2").slider("values",0));
		$("input#maxPrice").val($("#slider-2").slider("values",1));
    }
});

$("input#minPrice").change(function(){

	var value1=$("input#minPrice").val();
	var value2=$("input#maxPrice").val();
	
	if (value1 < '.$minPrice.') { value1 = '.$minPrice.'; $("input#minPrice").val('.$minPrice.')}
	
	if(parseInt(value1) > parseInt(value2)){
		value1 = value2;
		$("input#minPrice").val(value1);
	}
	$("#slider-2").slider("values",0,value1);	
});

	
$("input#maxPrice").change(function(){
		
	var value1=$("input#minPrice").val();
	var value2=$("input#maxPrice").val();
	
	if (value2 > '.$maxPrice.') { value2 = '.$maxPrice.'; $("input#maxPrice").val('.$maxPrice.')}

	if(parseInt(value1) > parseInt(value2)){
		value2 = value1;
		$("input#maxPrice").val(value2);
	}
	$("#slider-2").slider("values",1,value2);
});








/* слайдер площади */

$("#slider-1").slider({
	min: '.$minS.',
	max: '.$maxS.',
	values: ['.(isset($this->siarchparam['minS'])? $this->siarchparam['minS']:$minS).','.(isset($this->siarchparam['maxS'])? $this->siarchparam['maxS']:$maxS).'],
	range: true,
	stop: function(event, ui1) {
		$("input#minS").val($("#slider-1").slider("values",0));
		$("input#maxS").val($("#slider-1").slider("values",1));
		
    },
    superslide: function(event, ui1){
		$("input#minS").val($("#slider-1").slider("values",0));
		$("input#maxS").val($("#slider-1").slider("values",1));
    }
});

$("input#minS").change(function(){

	var value1=$("input#minS").val();
	var value2=$("input#maxS").val();
	
	if (value1 < '.$minS.') { value1 = '.$minS.'; $("input#minS").val('.$minS.')}
	
	if(parseInt(value1) > parseInt(value2)){
		value1 = value2;
		$("input#minS").val(value1);
	}
	$("#slider-1").slider("values",0,value1);	
});

	
$("input#maxS").change(function(){
		
	var value1=$("input#minS").val();
	var value2=$("input#maxS").val();
	
	if (value2 > '.$maxS.') { value2 = '.$maxS.'; $("input#maxS").val('.$maxS.')}

	if(parseInt(value1) > parseInt(value2)){
		value2 = value1;
		$("input#maxS").val(value2);
	}
	$("#slider-1").slider("values",1,value2);
});



// фильтрация ввода в поля
	$("input").keypress(function(event){
		var key, keyChar;
		if(!event) var event = window.event;
		
		if (event.keyCode) key = event.keyCode;
		else if(event.which) key = event.which;
	
		if(key==null || key==0 || key==8 || key==13 || key==9 || key==46 || key==37 || key==39 ) return true;
		keyChar=String.fromCharCode(key);
		
		if(!/\d/.test(keyChar))	return false;
	
	});



// уборка лишних  чекбоксов

if (!$("#Garazh1").get(0).checked && !$("#Garazh2").get(0).checked)
	{
		$("#Garazh0").get(0).checked = true;
	}
	
if (!$("#bass1").get(0).checked && !$("#bass2").get(0).checked)
	{
		$("#bass0").get(0).checked = true;
	}

$("#etazh1").click(function () {
	if ($("#etazh1").get(0).checked && $("#etazh2").get(0).checked && $("#etazh3").get(0).checked)
	{
		$("#etazh2").get(0).checked = false;
		$("#etazh3").get(0).checked = false;
	}
	
});

$("#etazh2").click(function () {
	if ($("#etazh1").get(0).checked && $("#etazh2").get(0).checked && $("#etazh3").get(0).checked)
	{
		$("#etazh1").get(0).checked = false;
		$("#etazh3").get(0).checked = false;
	}
	
});

$("#etazh3").click(function () {
	if ($("#etazh1").get(0).checked && $("#etazh2").get(0).checked && $("#etazh3").get(0).checked)
	{
		$("#etazh1").get(0).checked = false;
		$("#etazh2").get(0).checked = false;
	}
	
});


$("#typDom1").click(function () {
	if ($("#typDom1").get(0).checked && $("#typDom2").get(0).checked)
	{
		$("#typDom2").get(0).checked = false;
	}
	
});

$("#typDom2").click(function () {
	if ($("#typDom1").get(0).checked && $("#typDom2").get(0).checked)
	{
		$("#typDom1").get(0).checked = false;
	}
	
});


$("#Garazh1").click(function () {
	if ($("#Garazh1").get(0).checked && $("#Garazh2").get(0).checked)
	{
		$("#Garazh2").get(0).checked = false;
		$("#Garazh0").get(0).checked = false;
	}
	
});

$("#Garazh2").click(function () {
	if ($("#Garazh1").get(0).checked && $("#Garazh2").get(0).checked)
	{
		$("#Garazh1").get(0).checked = false;
		$("#Garazh0").get(0).checked = false;
	}
	
});

$("#Garazh0").click(function () {
	if ($("#Garazh0").get(0).checked)
	{
		$("#Garazh1").get(0).checked = false;
		$("#Garazh2").get(0).checked = false;
	}
	
});


$("#Garazh1, #Garazh2").click(function () {
	if ($("#Garazh1").get(0).checked || $("#Garazh2").get(0).checked)
		{
			$("#Garazh0").get(0).checked = false;
		}
	if (!$("#Garazh1").get(0).checked && !$("#Garazh2").get(0).checked)
		{
			$("#Garazh0").get(0).checked = true;
		}
});

$("#bass1").click(function () {
	if ($("#bass1").get(0).checked && $("#bass2").get(0).checked)
	{
		$("#bass2").get(0).checked = false;
		$("#bass0").get(0).checked = false;
	}
	
});

$("#bass2").click(function () {
	if ($("#bass1").get(0).checked && $("#bass2").get(0).checked)
	{
		$("#bass1").get(0).checked = false;
		$("#bass0").get(0).checked = false;
	}
	
});

$("#bass0").click(function () {
	if ($("#bass0").get(0).checked)
	{
		$("#bass1").get(0).checked = false;
		$("#bass2").get(0).checked = false;
	}
	
});
	

$("#bass1, #bass2").click(function () {
	if ($("#bass1").get(0).checked || $("#bass2").get(0).checked)
		{
			$("#bass0").get(0).checked = false;
		}
	if (!$("#bass1").get(0).checked && !$("#bass2").get(0).checked)
		{
			$("#bass0").get(0).checked = true;
		}
});

});
';

$this->document->addScriptDeclaration($script);

	

//dump ($this->items,'$this->items');

?>
<div class="category-list<?php echo $this->pageclass_sfx;?>">

	<?php if ($this->params->get('show_page_heading', 1)) : ?>
	<h1>
		<?php echo $this->escape($this->params->get('page_heading')); ?>
	</h1>
	<?php endif; ?>

	<?php if ($this->params->get('show_category_title', 1) or $this->params->get('page_subheading')) : ?>
	<h2>
		<?php echo $this->escape($this->params->get('page_subheading')); ?>
		<?php if ($this->params->get('show_category_title')) : ?>
			<span class="subheading-category"><?php echo $this->category->title;?></span>
		<?php endif; ?>
	</h2>
	<?php endif; ?>

	<?php if ($this->params->get('show_description', 1) || $this->params->def('show_description_image', 1)) : ?>
	<div class="category-desc">
		<?php if ($this->params->get('show_description_image') && $this->category->getParams()->get('image')) : ?>
			<img src="/<?php echo $this->category->getParams()->get('image'); ?>"/>
		<?php endif; ?>
		<?php if ($this->params->get('show_description') && $this->category->description) : ?>
			<?php echo JHtml::_('content.prepare', $this->category->description, '', 'com_content.category'); ?>
		<?php endif; ?>
		<div class="clr"></div>
	</div>
	<?php endif; ?>
	<div class="filters_cover">
	<div class="filters">
		<form action="" method="post">
		<table width="100%">
			<tr>
				<td class="tabcell">
				<table border="0" cellpadding="0" cellspacing="0" class="tab2">
					<tr>
						<td class="name" colspan="4">
							<b>Поиск по параметрам коттеджей: </b>
						</td>
					</tr>
					<tr>
						<td>
							<b>Материал стен:</b>
						</td>
						<td>
							<input id="typDom1" name="typDom[]" type="checkbox" value="kam" 
									<?php echo isset($typDom['kam'])?' checked="checked" ':'' ?>/>&nbsp;
							<label for="typDom">Камень </label>
						</td>
						<td>
							<input id="typDom2" name="typDom[]" type="checkbox" value="der"
									<?php echo isset($typDom['der'])?' checked="checked" ':'' ?>/>&nbsp;
							<label for="typDom">Дерево </label>
						</td>
						<td>
							
						</td>
					</tr>
					<tr>
						<td>
							<b>Этажность:</b>
						</td>
						<td>
							<input id="etazh1" name="etazh[]" type="checkbox" value="1"
								<?php echo isset($etazh[1])?' checked="checked" ':'' ?>/>&nbsp;
								<label for="etazh">1 этаж</label>
						</td>
						<td>
							<input id="etazh2" name="etazh[]" type="checkbox" value="2"
								<?php echo isset($etazh[2])?' checked="checked" ':'' ?>/>&nbsp;
								<label for="etazh">2 этажа</label>
						</td>
						<td>
							<input id="etazh3" name="etazh[]" type="checkbox" value="3"
								<?php echo isset($etazh[3])?' checked="checked" ':'' ?>/>&nbsp;
								<label for="etazh">3 этажа: </label>
						</td>
					</tr>
				</table>	
				</td>
				<td class="tabcell2">	
					<b>Наличие гаража:</b><br />
					<input id="Garazh1" name="Garazh[]" type="checkbox" value="1" 
					<?php echo isset($Garazh[1])?' checked="checked" ':'' ?>/>&nbsp;<label for="Garazh">Да</label>&nbsp;
					<input id="Garazh2" name="Garazh[]" type="checkbox" value="0"  
					<?php echo isset($Garazh[0])?' checked="checked" ':'' ?>/>&nbsp;<label for="Garazh">Нет</label><br />
					<input id="Garazh0"  type="checkbox" value="0" />&nbsp;<label for="Garazh">Не важно</label>
				</td>
				<td class="tabcell2">
					<b>Наличие бассейна:</b><br />
					<input id="bass1" name="bass[]" type="checkbox" value="1"
					<?php echo isset($bass[1])?' checked="checked" ':'' ?>/>&nbsp;<label for="bass">Да</label>&nbsp;
					<input id="bass2" name="bass[]" type="checkbox" value="0" 
					<?php echo isset($bass[0])?' checked="checked" ':'' ?>/>&nbsp;<label for="bass">Нет</label><br />
					<input id="bass0"  type="checkbox" value="0" />&nbsp;<label for="Garazh">Не важно</label>
				</td>
			</tr>
		</table>
		<table width="100%">
			<tr>
				<td class="tabcell">
					<div class="formCost">
					<label for="minS"><b>Общая площадь:&nbsp;&nbsp; </b></label>  от <input id="minS" name="minS" 
						value="<?php echo isset($this->siarchparam['minS'])? $this->siarchparam['minS']:$minS; ?>" type="text">
					<label for="maxS"> до </label> <input id="maxS" name="maxS" 
						value="<?php echo isset($this->siarchparam['maxS'])? $this->siarchparam['maxS']:$maxS; ?>" type="text">  кв.м.
					</div>
					<div class="sliderCont1">
							<div id="slider-1"></div>
					</div>
					<div class="formCost">
					<label for="minPrice"><b>Цена:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b></label>  от <input id="minPrice" name="minPrice" 
						value="<?php echo isset($this->siarchparam['minPrice'])? $this->siarchparam['minPrice']:$minPrice; ?>" type="text">
					<label for="maxPrice"> до </label> <input id="maxPrice" name="maxPrice" 
						value="<?php echo isset($this->siarchparam['maxPrice'])? $this->siarchparam['maxPrice']:$maxPrice; ?>" type="text">  Руб.
					</div>
					<div class="sliderCont1">
							<div id="slider-2"></div>
					</div>
				</td>
				<td class="tabcell">
					<input type="submit" class="button finder" value="Подобрать"/>
					<input type="hidden" name="project_param" value="kotedje"/>
				</td>
			</tr>
		</table>	
		</form>
	</div>
	</div>
	<div class="clear"></div>
	<div class="cat-items">
		<?php echo $this->loadTemplate('articles'); ?>
	</div>

	<?php if (!empty($this->children[$this->category->id])&& $this->maxLevel != 0) : ?>
	<div class="cat-children">
		<h3>
			<?php echo JTEXT::_('JGLOBAL_SUBCATEGORIES'); ?>
		</h3>

		<?php echo $this->loadTemplate('children'); ?>
	</div>
	<?php endif; ?>
</div>



 

catalogkotedg_articles.php

 

<?php
/**
 * @package		Joomla.Site
 * @subpackage	com_content
 * @copyright	Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::core();

// Create some shortcuts.
$params		= &$this->item->params;
$n			= count($this->items);
$listOrder	= $this->escape($this->state->get('list.ordering'));
$listDirn	= $this->escape($this->state->get('list.direction'));
?>

<?php if (empty($this->items)) : ?>

	<?php if ($this->params->get('show_no_articles', 1)) : ?>
	<p><?php echo JText::_('COM_CONTENT_NO_ARTICLES'); ?></p>
	<?php endif; ?>

<?php else : ?>

<form action="<?php echo htmlspecialchars(JFactory::getURI()->toString()); ?>" method="post" name="adminForm" id="adminForm">

	<?php
	if(isset($this->siarchparam['project_param']))
	{
		echo '<input type="hidden" name="project_param" value="kotedje"/>';
		$this->pagination->setAdditionalUrlParam("project_param","kotedje");
		
		echo '<input type="hidden" name="minS" value="'.$this->siarchparam['minS'].'"/>';
		$this->pagination->setAdditionalUrlParam("minS",$this->siarchparam['minS']);
		
		echo '<input type="hidden" name="maxS" value="'.$this->siarchparam['maxS'].'"/>';
		$this->pagination->setAdditionalUrlParam("maxS",$this->siarchparam['maxS']);
		
		echo '<input type="hidden" name="minPrice" value="'.$this->siarchparam['minPrice'].'"/>';
		$this->pagination->setAdditionalUrlParam("minPrice",$this->siarchparam['minPrice']);
		
		echo '<input type="hidden" name="maxPrice" value="'.$this->siarchparam['maxPrice'].'"/>';
		$this->pagination->setAdditionalUrlParam("maxPrice",$this->siarchparam['maxPrice']);
		
		if (isset($this->siarchparam['typDom'])) foreach ($this->siarchparam['typDom'] as $kay => $a) 
				echo '<input type="hidden" name="typDom[]" value="'.$a.'"/>';
				$this->pagination->setAdditionalUrlParam("typDom[$kay]",$a);
				
		if (isset($this->siarchparam['Garazh'])) foreach ($this->siarchparam['Garazh'] as $kay => $a) 
				echo '<input type="hidden" name="Garazh[]" value="'.$a.'"/>';
				$this->pagination->setAdditionalUrlParam("Garazh[$kay]",$a);
				
		if (isset($this->siarchparam['bass'])) foreach ($this->siarchparam['bass'] as $kay => $a)  
				echo '<input type="hidden" name="bass[]" value="'.$a.'"/>';
				$this->pagination->setAdditionalUrlParam("bass[$kay]",$a);
				
		if (isset($this->siarchparam['etazh'])) foreach ($this->siarchparam['etazh'] as $kay => $a)  
				echo '<input type="hidden" name="etazh[]" value="'.$a.'"/>';
				$this->pagination->setAdditionalUrlParam("etazh[$kay]",$a);
				
	}
	 ?>
	
	<?php if ($this->params->get('show_headings') || $this->params->get('filter_field') != 'hide' || $this->params->get('show_pagination_limit')) :?>
	<fieldset class="filters">
		<?php if ($this->params->get('filter_field') != 'hide') :?>
		<legend class="hidelabeltxt">
			<?php echo JText::_('JGLOBAL_FILTER_LABEL'); ?>
		</legend>

		<div class="filter-search">
			<label class="filter-search-lbl" for="filter-search"><?php echo JText::_('COM_CONTENT_'.$this->params->get('filter_field').'_FILTER_LABEL').'&#160;'; ?></label>
			<input type="text" name="filter-search" id="filter-search" value="<?php echo $this->escape($this->state->get('list.filter')); ?>" class="inputbox" onchange="document.adminForm.submit();" title="<?php echo JText::_('COM_CONTENT_FILTER_SEARCH_DESC'); ?>" />
		</div>
		<?php endif; ?>

		<?php if ($this->params->get('show_pagination_limit')) : ?>
		<div class="display-limit">
			<?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?>&#160;
			<?php echo $this->pagination->getLimitBox(); ?>
		</div>
		<?php endif; ?>

	<!-- @TODO add hidden inputs -->
		<input type="hidden" name="filter_order" value="" />
		<input type="hidden" name="filter_order_Dir" value="" />
		<input type="hidden" name="limitstart" value="" />
	</fieldset>
	<?php endif; ?>

	<div class="category">

		

		<?php foreach ($this->items as $i => $article) : ?>
		
				<?php 
				// подготовка данных для элемента представления проекта в списке

				$article->images = json_decode($article->images);	

				$pathToImage = JURI::root(TRUE).$article->images->image_intro;

				
				switch ($article->Etazh)
				{
					case 1:
						$article->Etazh = '1 этаж. ';
						break;
					case 2:
						$article->Etazh = '2 этажа. ';
						break;
					case 3:
						$article->Etazh = '3 этажа. ';
				};
				

				?>
		

				<div class="cat-list row<?php// echo $i % 2; ?>" >
				<table cellpadding="0" cellspacing="0">
					<tr>
						<td class="title" align="center" colspan="2">
								<a href="/<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid)); ?>">
									<?php echo $this->escape($article->title); ?></a>
						</td>
					</tr>	
					<tr>
						
							
								<td  class="image"  align="center" valign="middle" colspan="2">
									<a href="/<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid)); ?>">
										<img  src="/<?php echo $pathToImage; ?>" alt="<?php echo $this->escape($article->title); ?>"/></a>
								</td>
							
						
					</tr>
					
					
						<?php echo '<tr class="str"><td class="td1">Общая площадь:</td><td class="td2">'.number_format($article->sObsh,2,',',' ').
						' кв. м.</td></tr>'.
						'<tr class="str"><td class="td1">Этажность:</td><td class="td2">'.$article->Etazh.'</td></tr>'.
						'<tr class="str"><td class="td1">Стоимость:</td><td class="td2">'.number_format($article->price,0,'',' ').
						' руб.</td></tr>';?>
					
				</table>
					<div class="readmore">
							<a href="/<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid)); ?>">
								подробнее... </a>
					</div>

				</div>
		<?php endforeach; ?>
		
	</div>
<?php endif; ?>

<?php // Code to add a link to submit an article. ?>
<?php if ($this->category->getParams()->get('access-create')) : ?>
	<?php echo JHtml::_('icon.create', $this->category, $this->category->params); ?>
<?php  endif; ?>

<?php // Add pagination links ?>
<?php if (!empty($this->items)) : ?>
	<?php if (($this->params->def('show_pagination', 2) == 1  || ($this->params->get('show_pagination') == 2)) && ($this->pagination->get('pages.total') > 1)) : ?>
	<div class="pagination_cover">
	<div class="pagination">

		<?php if ($this->params->def('show_pagination_results', 1)) : ?>
		 	<p class="counter">
				<?php echo $this->pagination->getPagesCounter(); ?>
			</p>
		<?php endif; ?>

		<?php echo $this->pagination->getPagesLinks(); ?>
	</div>
	</div>
	<?php endif; ?>
</form>
<?php  endif; ?>

 

Чтобы при переходе на следующую страницу параметры фильтрации не сбрасывались, их надо передать в форму пагинации в виде скрытых параметров.