我在Category List组件中添加了新参数,
这是一个组合框 过滤器类型
我可以使用代码$ params-> get('filter_type')来获取值。
现在我陷入了在com_contents中添加自定义查询位置的问题。这可能吗?
谢谢!
答案 0 :(得分:0)
此处没有太多内容,但这是一般方法:
$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
子句。
答案 1 :(得分:0)
当您查看#__categories
表时,您会看到自定义参数以json格式存储在params
列中。
您有两种解决方案:
JCateogies
或自定义代码)。请注意,这可能对性能不利在这两种情况下,您都必须创建自己的类别列表视图
ad 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);