Я не знаю что Вы молчите? Вот далее принцип того, что мне необходимо... Я думаю это надо прикрутить к sub_listings.tpl.php и прописать в фильтрах , то что мне необходимо... Я создал несколько шаблонов и необходимые мне категории выводятся в разных шаблонах, что дает мне возможность установить разные фильтра для разных категорий. Правда я хотел немного по другому, что бы шел запрос в таблицу б.д. по указанному cat_id (ячейка в таблице). Что Вам проще? и какая все таки цена на доработку???
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/*# Include the language file. Default is English
global $mt_language;
if ($mt_language=='') $mt_language='english';
include_once('components/com_mtree/language/'.$mt_language.'.php');
if ( !isset($_MT_LANG) ) $_MT_LANG =& new mtLanguage();*/
# Get params
$moduleclass_sfx = $params->get( 'moduleclass_sfx' );
$filter_by_country = $params->get( 'filter_by_country', '1' );
$filter_by_state = $params->get( 'filter_by_state', '1' );
$filter_by_city = $params->get( 'filter_by_city', '1' );
$filter_by_cust1 = $params->get( 'filter_by_cust1', '0' );
$filter_by_cust2 = $params->get( 'filter_by_cust2', '0' );
$caption_cust2 = $params->get( 'caption_cust2', 'Select %1' );
$caption_country = $params->get( 'caption_country', 'Select Country' );
$caption_state = $params->get( 'caption_state', 'Select State' );
$caption_city = $params->get( 'caption_city', 'Select City' );
$caption_cust1 = $params->get( 'caption_cust1', 'Select %1' );
$caption_cust2 = $params->get( 'caption_cust2', 'Select %1' );
$text = "Что ищем?..." /*_SEARCH_BOX*/;
if( $filter_by_cust2 == $filter_by_cust1 ) {
$filter_by_cust2 = '0';
}
# Countries
$loc_countries = array();
$loc_countries[] = mosHTML::makeOption( '', $caption_country );
$database->setQuery( "SELECT DISTINCT country AS text, country AS value FROM #__mt_links WHERE country <> '' ORDER BY country ASC" );
$tmp_countries = $database->loadObjectList();
$loc_countries = array_merge( $loc_countries, $tmp_countries );
/*if there is only one country it creates the ,select. however it does not show it (display:none)*/
if(sizeof($loc_countries)>2){$displayCountry= " ";}else{$displayCountry=" style='display:none;' ";}
$lists['countries'] = mosHTML::selectList( $loc_countries, 'country', 'name="country"'.$displayCountry.' class="inputbox" size="1" '.( ( $filter_by_state ) ? 'onChange="loadLoc(this,\'State\')"' : ''), 'value', 'text', '' );
# Filter 1
/*$database->setQuery( "SELECT name, value FROM #__mt_config WHERE name LIKE 'cust_%'" );
$custom_fields = $database->loadObjectList('name');
if ( $filter_by_cust1 <> '0' ) $caption_cust1 = str_replace("%1", $custom_fields[$filter_by_cust1]->value, $caption_cust1);
if ( $filter_by_cust2 <> '0' ) $caption_cust2 = str_replace("%1", $custom_fields[$filter_by_cust2]->value, $caption_cust2);
if ( $filter_by_cust1 <> '0' ) {
$filterItems = array();
$filterItems[] = mosHTML::makeOption( '', $caption_cust1 );
$database->setQuery( "SELECT DISTINCT ".$filter_by_cust1." AS text, ".$filter_by_cust1." AS value FROM #__mt_links WHERE ".$filter_by_cust1." <> '' ORDER BY ".$filter_by_cust1." ASC" );
$tmp_filter_1 = $database->loadObjectList();
$filterItems = array_merge( $filterItems, $tmp_filter_1);
$lists['filter1'] = mosHTML::selectList( $filterItems, $filter_by_cust1, 'name="'.$filter_by_cust1.'" class="inputbox" size="1" '.( ($filter_by_cust2 <> '0') ? 'onChange="loadLoc(this,\''.$filter_by_cust2.'\')"' : '' ), 'value', 'text', '' );
}*/
?>
<script language="Javascript">
var state = new Array();
var city = new Array();
var filter2 = new Array();
<?php
foreach( $tmp_countries AS $tmp_country ) {
$database->setQuery( "SELECT DISTINCT state FROM #__mt_links WHERE country = '".$tmp_country->text."' AND country <> '' ORDER BY state ASC" );
$tmp_states = $database->loadResultArray();
if( count($tmp_states) > 0 ) {
echo "state['".$tmp_country->text."']=new Array('";
echo implode("','",$tmp_states);
echo "');\n";
}
if( $filter_by_city ) {
foreach( $tmp_states AS $tmp_state ) {
$database->setQuery( "SELECT DISTINCT city FROM #__mt_links WHERE state = '".$tmp_state."' AND state <> '' ORDER BY city ASC" );
$tmp_cities = $database->loadResultArray();
if( count($tmp_cities) > 0 && !empty($tmp_cities[0]) ) {
echo "city['".$tmp_state."']=new Array('";
echo implode("','",$tmp_cities);
echo "');\n";
}
}
}
}
/*foreach( $tmp_filter_1 AS $tmp_filter ) {
$database->setQuery( "SELECT DISTINCT ".$filter_by_cust2." FROM #__mt_links WHERE ".$filter_by_cust1." = '".$tmp_filter->text."' ORDER BY ".$filter_by_cust1." ASC" );
$tmp_filter_2 = $database->loadResultArray();
if( count($tmp_filter_2) > 0 ) {
echo "filter2['".$tmp_filter->text."']=new Array('";
echo implode("','",$tmp_filter_2);
echo "');\n";
}
}*/
?>
function loadLoc(ref,loc) { loadLoc2(ref.options[ref.selectedIndex].value,loc) }
function loadLoc2(val,loc) { switch(loc) { case 'State':
if(typeof state[val] != "undefined") { var locations = state[val]; <?php if( $filter_by_city ) { ?>
clearList('City'); disableLoc('City'); <?php } ?>
} else { disableLoc(loc); return;}
break; case 'City':
if(typeof city[val] != 'undefined') { var locations = city[val];} else { disableLoc(loc); return;}
break; case '<?php echo $filter_by_cust2 ?>':
if(typeof filter2[val] != 'undefined') { var locations = filter2[val];} else { disableLoc(loc); return;}
break;}
enableLoc(loc); clearList(loc); if ( typeof locations != 'undefined' && locations.length > 0 ) { for (c=0; c < locations.length; c++) { var newOpt = document.createElement("OPTION"); newOpt.text = locations[c]; newOpt.value = locations[c]; document.mtdrilldown.elements['dd'+loc].options[c+1] = newOpt;}
}
}
function disableLoc(id) { gebid('dd'+id).disabled=true;}
function enableLoc(id) { gebid('dd'+id).disabled=false;}
function clearList(id) { var clength = gebid('dd'+id).length; for(var i=(clength-1);i>=0;i--) { gebid('dd'+id).remove(i);}
var newOpt = document.createElement("OPTION"); newOpt.value = ''; switch(id) { <?php if( $filter_by_cust1 <> '0' ) { ?>
case '<?php echo $filter_by_cust1 ?>':
newOpt.text = '<?php echo $caption_cust1 ?>'; break; <?php } ?>
<?php if( $filter_by_cust2 <> '0' ) { ?>
case '<?php echo $filter_by_cust2 ?>':
newOpt.text = '<?php echo $caption_cust2 ?>'; break; <?php } ?>
case "Country":
newOpt.text = '<?php echo $caption_country ?>'; break; case "State":
newOpt.text = '<?php echo $caption_state ?>'; break; case "City":
newOpt.text = '<?php echo $caption_city ?>'; break;}
document.mtdrilldown.elements['dd'+id].options[0] = newOpt;}
function gebid(id){return document.getElementById(id);}
function NormalizeAccents(text) { var i, ac, nc; ac = 'бдвагйлкинпомуцфтъ&\щзс%$БДВАГЙЛКИНПОМУЦФТХЪЬЫЩЗСЭ'; nc = 'aaaaaeeeeiiiiooooouuuucnyyAAAAAEEEEIIIIOOOOOUUUUCNY'; for (i = 0; i < ac.length; i++) { text = text.replace(ac.charAt(i), nc.charAt(i));}
return text;}
</script>
<form action="<?php echo sefRelToAbs($mosConfig_live_site) /*sefRelToAbs("index.php")*/; ?>" method="post" name="mtdrilldown" style="padding:0px; margin:0px;" >
<?php
echo '<input type="text" name="link_desc" size="20" class="inputbox" value="'. $text .'" onblur="if(this.value==\'\') this.value=\''. $text .'\';" onfocus="if(this.value==\''. $text .'\') this.value=\'\';" />'; ?>
<?php echo $lists['countries']; ?>
<?php if( $filter_by_state ) { ?>
<select name="state" class="inputbox" size="1" id="ddState" <?php if( $filter_by_city ) echo "onChange=\"loadLoc(this,'City')\" " ?>disabled>
<option value="" selected="selected"><?php echo $caption_state ?></option>
</select>
<?php } ?>
<?php if( $filter_by_city && $filter_by_state ) { ?>
<select name="city" class="inputbox selectCity" size="1" id="ddCity" disabled>
<option value="" selected="selected"><?php echo $caption_city ?></option>
</select>
<?php } ?>
<?php if ( $filter_by_cust1 <> '0') echo $lists['filter1']; ?>
<?php if ( $filter_by_cust1 <> '0' && $filter_by_cust2 <> '0' ) { ?>
<select name="<?php echo $filter_by_cust2 ?>" class="inputbox" size="1" id="dd<?php echo $filter_by_cust2 ?>" disabled>
<option value="" selected="selected"><?php echo $caption_cust2 ?></option>
</select>
<?php } ?>
<?php
?>
<br><input type="submit" value="Поиск" class="button" />
<input type="hidden" name="Itemid" value="<?php echo $Itemid ?>" />
<input type="hidden" name="option" value="com_mtree" />
<input type="hidden" name="task" value="advsearch2" />
</form><?php
if(sizeof($loc_countries)<=2){ ?>
<script language="Javascript">
loadLoc2(document.mtdrilldown.country.options[1].value,"State"); </script>
<?php } ?>