Здравствуйте. Попытаюсь обьяснить как я сделал поиск по этажам и собственно этажность. (ну и не первый и не последний)
Сначала в:
..../components/com_properties/controllers/modulesearchajax.php
После
if($extra18 = JRequest::getInt('e18', 0, 'post'))
{
$urlVars['e18'] = $extra18;
}
Вставляем
if($extra41 = JRequest::getInt('minfloor', 0, 'post'))
{
$urlVars['minfloor'] = $extra41;
}
if($extra42 = JRequest::getInt('maxfloor', 0, 'post'))
{
$urlVars['maxfloor'] = $extra42;
}
$urlVars['last_floor']=JRequest::getInt('last_floor', 0, 'post');
$urlVars['first_floor']=JRequest::getInt('first_floor', 0, 'post');
Этим мы указываем что опции 41 и 42 теперь наши. (тут я запорол глупость в плане программирования ибо 41 и 42 это Этажность всего и Этаж квартиры...ну по тексту далее поймете, захотите исправите.)
Далее в этом же файле в 366 строке вставляем
$var['minfloor']=JRequest::getInt('minfloor','');
$var['maxfloor']=JRequest::getInt('maxfloor','');
После в этом же файле нужно вставить HTML код для всего этого добра)
в 684 строке я вставил
<div class="price_search">
<div class="price_title">
<?php echo JText::_('MOD_PROP_SEARCH_FIELD_FLOOR');?>
</div>
<input type="text" class="input_price" name="minfloor" id="minfloor" value="<?php echo $var['minfloor'];?>" />
<label class="price_max"><?php echo JText::_('MOD_PROP_SEARCH_FIELD_PRICES_DIVISOR');?></label>
<input type="text" class="input_price" name="maxfloor" id="maxfloor" value="<?php echo $var['maxfloor'];?>" />
<br>
<br>
<input type="checkbox" name="last_floor" id="last_floor" value="1" <? echo $javascriptcheck.' '.$checked;?>/> <?php echo JText::_('MOD_PROP_SEARCH_FIELD_FLOOR_NOT_LAST');?><br>
<input type="checkbox" name="first_floor" id="first_floor" value="1" <? echo $javascriptcheck.' '.$checked;?>> <?php echo JText::_('MOD_PROP_SEARCH_FIELD_FLOOR_NOT_FIRST');?><br>
</div>
Теперь в /components/com_properties/models/list.php
После
protected function populateState()
{
Вставляем
global $e41_min,$e41_max,$first_floor,$last_floor;
И в 100 строке
$e41_min = JRequest::getInt('minfloor',$e41_min);
$e41_max = JRequest::getInt('maxfloor',$e41_max);
$last_floor = JRequest::getInt('last_floor',$last_floor);
$first_floor = JRequest::getInt('first_floor',$first_floor);
После
$query->select('pt.published AS pt_published, pt.*');
$query->join('LEFT', '#__properties_products_translations AS pt ON pt.pt_pid = p.id AND pt.pt_langcode ="'.$thisLang.'"');
}
Вставляем
global $e41_min,$e41_max,$first_floor,$last_floor;
if (($e41_min!=0) AND ($e41_max!=0)) {
$query->where('(p.extra41 >= '.$e41_min.' AND p.extra41 <= '.$e41_max.')');
}
if ($first_floor)
{
$query->where('(p.extra41 > 1)');
}
if ($last_floor)
{
$query->where('(p.extra41 < p.extra42)');
}
Единственное что не описал, но было описано ранее, то что изменил название для полей в файлах перевода и добавил парочку новых.
Помог? Дайте плюсик)
Конец.