2013-05-16 50 views
0

我在類別列表中的組件添加了新的參數添加一個WHERE查詢,在類別列表組件

它是一個組合框 過濾器類型

  1. 所有
  2. 本月
  3. 本週
  4. 過去的

我能夠通過使用代碼$ params-> get('filter_type')來獲取值。

現在我陷入了在com_contents中添加自定義查詢的位置。那可能嗎?

謝謝!

+0

請問您可以顯示您的查詢字符串嗎? – BlitZ

+0

這是「本月」 - SELECT * FROM'content' where月份(已創建)=月份(now()) – user1675030

+0

Joomla 3支持日期數學,您可以查看標籤查詢或者熱門標籤模塊。 – Elin

回答

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子句。

+0

謝謝埃德吉布斯。 .. \ components \ com_content \ models \ articles.php – user1675030

0

當您查看#__categories表時,您會看到自定義參數以json格式存儲在params列中。

有兩種解決方法:

  • 解析所有類別的參數(使用本地JCateogies或自定義代碼)。請注意,這可能對性能
  • 拿出智能SQL查詢將能夠檢索JSON數據參數

在這兩種情況下,你必須創建自己的分類列表視圖是壞的,

廣告1(did't test):

// 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);