基于字段的 Joomla AdsManager 过滤器列表
Joomla AdsManager filter list on field based
我正在为基于网站的 sj 实时模板广告管理器组件工作。我需要在列表视图中添加过滤器以过滤字段 ad_location。我已经编写代码为所有位置创建下拉菜单,每个选项值如下所示
<?php echo TRoute::_("index.php?option=com_adsmanager&view=list&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>
但是当我 select 一个选项时 url 变成这样
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=58
或
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=paris
但页面重新加载后的结果与之前相同。
我有 select "Ads can be sorted by this field?" 作为位置字段是。
请指导我如何实现这一点,以便可以根据位置过滤特定类别。
提前致谢。
下面的解决方案并不完全匹配,但您可以尝试使用逻辑。
您可以创建自定义函数,表单提交每个选项选择的值以获取名称的值,结果在 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);
}
}
你可以使用class函数名的名字选择id,name
例如:加载页面:echo AdsLocation::ListLocations('USA');
获取值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); ?>`
还有一个我错过了使用字段 ID 的正确值应该是 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>
我正在为基于网站的 sj 实时模板广告管理器组件工作。我需要在列表视图中添加过滤器以过滤字段 ad_location。我已经编写代码为所有位置创建下拉菜单,每个选项值如下所示
<?php echo TRoute::_("index.php?option=com_adsmanager&view=list&catid=".$this->catid."&ad_location=".$fields->fieldvalueid); ?>
但是当我 select 一个选项时 url 变成这样
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=58
或
index.php/ads-manager/6-verktyg-foer-fordon?ad_location=paris
但页面重新加载后的结果与之前相同。 我有 select "Ads can be sorted by this field?" 作为位置字段是。
请指导我如何实现这一点,以便可以根据位置过滤特定类别。
提前致谢。
下面的解决方案并不完全匹配,但您可以尝试使用逻辑。 您可以创建自定义函数,表单提交每个选项选择的值以获取名称的值,结果在 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);
}
}
你可以使用class函数名的名字选择id,name
例如:加载页面:echo AdsLocation::ListLocations('USA');
获取值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); ?>`
还有一个我错过了使用字段 ID 的正确值应该是 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>