Я работаю на веб-сайте sj Live Template Adsmanger компонента. Мне нужно добавить фильтр в виде списка для фильтрации поля ad_location. У меня есть написать код, чтобы создать раскрывающийся список для всех мест, и каждое значение параметра, как показано ниже
<?php echo TRoute::_("index.php?option=com_adsmanager&view=list&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>
но когда я выбираю опцию, URL становится таким
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=58
или же
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=paris
но страница перезагрузится с тем же результатом, что и раньше.
Я выбрал «Объявления могут быть отсортированы по этому полю?» для поля местоположения да.
Пожалуйста, объясните мне, как мне добиться этого, чтобы можно было отфильтровать определенную категорию по местоположению.
заранее спасибо.
Ниже решение не совсем совпадает, но вы можете попробовать использовать логику.
Вы можете создать пользовательскую функцию, отправить форму каждой выбранной опции, чтобы получить значение имени, результаты в sql
Class AdsLocation {
public static function ListLocations($selected = -1) {
$options[] = JHTML::_('select.option', '-1', JText::_('Filter Locations') );
$options[] = JHTML::_('select.option', 'USA', JText::_('USA') );
.
.
.
$uri = JFactory::getURI();
$uri->delVar('limitstart');
$uri->delVar('start');
$attr = 'onchange="this.form.action=\''.$uri.'\';';
$attr .= ' this.form.submit();"';
$attr .= " class='select'";
return JHTML::_('select.genericlist', $options, 'filter_location', $attr, 'value', 'text', $selected);
}
}
Вы можете использовать имя класса имя функции, выбранный идентификатор, имя
например: Страница загрузки: echo AdsLocation :: ListLocations (‘США’);
Получить значение JRequest :: getVar (‘filter_location’);
В представлении списка Adsmanager нет порядка для фильтров, кроме даты. поэтому необходимо использовать представление результатов, поэтому значение параметра должно быть таким
`<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>`
а также тот, который я пропустил, чтобы использовать правильное значение идентификатора поля, который должен быть fieldvalue
вместо fieldvalueid
поэтому значения параметров должны выглядеть следующим образом
<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>
и полный код поля местоположения будет таким
<select onchange="jumpmenu('parent',this)">
<option value="<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid); ?>">Please Select a Location</option>
<?php
$ad_location = JRequest::getVar('ad_location');
$fieldmodel = $this->getModel("field");
$field_values = $fieldmodel->getFieldValues();
foreach($field_values[17] as $fields){ //print_r($fields); ?>
<option value="<?php echo TRoute::_("index.php?option=com_adsmanager&view=result&new_search=1&catid=".$this->catid."&ad_location=".$fields->fieldvalue); ?>" <?php if ($fields->fieldvalue == $ad_location) echo 'selected="selected"'; ?> ><?php echo $fields->fieldtitle; ?></option>
<?php }?>
</select>