我在类别列表组件中添加了新参数,
这是一个组合框过滤器类型
- 全部
- 这个月
- 本星期
- 过去的
我能够通过使用代码 $params->get('filter_type') 来获取值。
现在我陷入了在 com_contents 中添加自定义 where 查询的问题上。那可能吗?
谢谢!
这里没有很多事情要做,但这是一般方法:
$sql = 'SELECT whatever FROM com_contents';
switch ($params->get('filter_type')) {
case 'This Month':
$sql .= ' WHERE EXTRACT(YEAR_MONTH FROM my_date) = EXTRACT(YEAR_MONTH FROM CURRENT_DATE)';
break;
case 'This Week':
$sql .= ' WHERE YEARWEEK(my_date) = YEARWEEK(CURRENT_DATE)';
break;
case 'Past':
$sql .= ' WHERE <whatever "past" means>';
break;
}
... and then execute the query
请注意,case
该All
选项没有;那是因为它不需要WHERE
子句。
查看#__categories
表格时,您会看到自定义参数params
以 json 格式存储在列中。
你有两个解决方案:
JCateogies
或自定义代码)。请注意,这可能对性能不利在这两种情况下,您都必须创建自己的类别列表视图,
广告 1(未测试):
// Get Extension Categories helper
$catInstance = JCategories::getInstance($extension);
// Get Root
$catRoot = $catInstance->get('root');
// Get Children
$categories = $catRoot->getChildren(true);
// Uncompress parameters and set duration
foreach ($categories as $childId => &$child)
{
$params = $child->getParams();
$child->duration = $params->get('duration', 0);
}
// Sort by duration
JArrayHeper::sortObjects($categories, 'duration', $direction = 1);