基于字段的Joomla AdsManager过滤器列表

时间:2016-05-20 07:50:48

标签: php joomla components

我正在为一个基于网站的sj live template adsmanger组件工作。我需要在列表视图中添加一个过滤器,用于过滤字段ad_location。我已经编写代码来为所有位置创建一个下拉列表,每个选项值如下所示

<?php echo TRoute::_("index.php?option=com_adsmanager&view=list&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>

但是当我选择一个选项时,网址会变成这样的

index.php/ads-manager/6-verktyg-foer-fordon?ad_location=58

index.php/ads-manager/6-verktyg-foer-fordon?ad_location=paris

但页面重新加载的结果与以前相同。 我选择“广告可以按此字段排序吗?”对于位置字段是。

请指导我如何实现这一点,以便根据位置过滤特定的类别。

提前感谢。

2 个答案:

答案 0 :(得分:0)

解决方案下方不完全匹配,但您可以尝试使用逻辑。 你可以创建自定义函数,表单提交每个选项选择值来获取名称的值,结果在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);  
    }
}

您可以使用选择了id,name

的函数名的类名

ex:加载页面:echo AdsLocation :: ListLocations('USA');

获取值JRequest :: getVar('filter_location');

答案 1 :(得分:0)

Adsmanager列表视图除了日期之外没有其他过滤器的排序。因此需要使用结果视图,因此选项值应该像这样

protected void onPostExecute(List<String> result){
    listItems.addAll(result);
    adapter.notifyDataSetChanged();
}

还有一个我错过了使用正确的字段ID值`<?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); ?>