0

我在类别列表组件中添加了新参数,

这是一个组合框过滤器类型

  1. 全部
  2. 这个月
  3. 本星期
  4. 过去的

我能够通过使用代码 $params->get('filter_type') 来获取值。

现在我陷入了在 com_contents 中添加自定义 where 查询的问题上。那可能吗?

谢谢!

4

2 回答 2

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

请注意,caseAll选项没有;那是因为它不需要WHERE子句。

于 2013-05-16T04:09:07.853 回答
0

查看#__categories表格时,您会看到自定义参数params以 json 格式存储在列中。

你有两个解决方案:

  • 解析所有类别参数(使用本机JCateogies或自定义代码)。请注意,这可能对性能不利
  • 提出能够从 json 数据中检索参数的智能 sql 查询

在这两种情况下,您都必须创建自己的类别列表视图,

广告 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);
于 2013-05-16T07:51:40.473 回答