Joomla AdsManager фильтр список на основе поля

Я работаю на веб-сайте 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

но страница перезагрузится с тем же результатом, что и раньше.
Я выбрал «Объявления могут быть отсортированы по этому полю?» для поля местоположения да.

Пожалуйста, объясните мне, как мне добиться этого, чтобы можно было отфильтровать определенную категорию по местоположению.

заранее спасибо.

2

Решение

Ниже решение не совсем совпадает, но вы можете попробовать использовать логику.
Вы можете создать пользовательскую функцию, отправить форму каждой выбранной опции, чтобы получить значение имени, результаты в 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’);

0

Другие решения

В представлении списка 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>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector