2012-05-28 71 views
1

我在編寫我的第一個prestashop模板時遇到了問題。所以我想要做的是獲得在同一父類別下的所有子類別的列表。所以運行foreach循環我需要發送父類別id。 在互聯網上沒有太多有關Prestas的編碼,模塊或東西的信息,但我找到了兩種可能的解決方案。 一個是:{$product->id_category_default}但只適用於產品頁面(?)也許我錯了,並有可能得到一個解決方案呢? 另一種方式聽起來有點絕望:{$cookie->last_visited_category} 這個問題,它只適用於直接來自父類別,但後跟直接鏈接或任何其他方式失敗。 另外我正在考慮編寫php函數,它發送MySQL查詢並返回父類別id,但這是最佳方式嗎?此外,我還沒有嘗試在smarty中編寫我自己的php函數,似乎它不僅僅是調用函數的方式。Prestashop:獲得父類別的ID

因此,總而言之,有誰知道如何獲得父類別ID沒有單獨的PHP函數,如果它是如此絕望,在哪裏以及如何定義自己的PHP函數smarty以及如何調用它們。

我正在使用prestashop 1.4。

感謝您的關注。

+1

這取決於你需要的地方,知道你需要修改哪個控制器。它是爲了一個模塊,還是在你需要的頁面上? – romainberger

+0

是啊對不起,也許我忘了提及,我想這在類別頁面中,如果是在子類別中,那麼我想獲得父類別ID –

回答

3

我已經在模塊中使用了這段代碼,您可能需要修改它,但基本上,父類別的id存儲在數據庫中。

$parentCategoryList = array(2, 3, 4, 5); 
if(!in_array($id_category, $parentCategoryList)){ 
    $parentCategory = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' 
     SELECT DISTINCT c.id_parent 
     FROM '._DB_PREFIX_.'category c 
     WHERE c.id_category = '.(int)($id_category) 
    ); 
    $id_category_parent = $parentCategory[0]['id_parent']; 
} 
else{ 
    $id_category_parent = $id_category; 
} 

在我的代碼中,$parentCategoryList商店我的主要類別(將其更改爲你的價值觀)的ID。然後它會檢查您正在查看的類別($id_category)是否爲主要類別。如果不是,它會在數據庫中查找父類別。

我真的不喜歡使用數組來手動存儲主要類別,但它的工作原理。

希望這會有所幫助!

+0

如何將此代碼添加到我的主題header.tpl模板文件中的smarty代碼? –

相關問題