2012-10-16 20 views
2

我需要獲取Prestahop存儲中存在的所有屬性,而不管這些屬性是什麼或分配了什麼產品我只是想生成這些屬性的數組,然後在ProductController.php類中使用它們。我檢查文件classes/Product.php,並且存在一個名爲getDefaultAttribute($ id_product,$ minimumQuantity = 0)的方法,但我認爲這隻適用於分配給特定產品的屬性,並且不會根據需要返回所有屬性。任何幫助?我是Prestashop的新手,需要學習很多東西如何獲取prestashop中的所有屬性

回答

4

檢查文件classes/Attribute.php。您可以使用靜態功能Attribute::getAttributes($id_lang, $not_null = false)。它返回給定語言的所有屬性。

+0

感謝@亞歷山大simonchik看到我用這一個我所提出的代碼之後'$ query_attributes =「SELECT ps_al.name FROM」。 _DB_PREFIX_。 「attribute_lang ps_al LEFT JOIN」。 _DB_PREFIX_。 「attribute_group_lang ps_agl ON(ps_al.id_lang = ps_agl.id_lang)LEFT JOIN」。 _DB_PREFIX_。 「屬性ps_a ON(ps_a.id_attribute_group = ps_agl.id_lang)WHERE ps_al.id_lang =」。 (int)Configuration :: get('PS_LANG_DEFAULT'); \t \t $ attributes = Db :: getInstance() - > ExecuteS($ query_attributes); \t \t $ existent_attributes = array(); \t \t foreach($ attributes as $ attr){ \t \t $ existent_attributes [] = $ attr ['name']; \t \t}' – ReynierPM

+0

但是你的工作太過分了,所以分數就交給你了。謝謝 – ReynierPM

0

您可以使用此SQL查詢得到的所有屬性:

$atbt = "SELECT a.id_attribute_group , a.name 
       FROM " . _DB_PREFIX_ . "attribute_group_lang a     
       where id_lang='".$id_lang."'"; 
    $res = Db::getInstance()->ExecuteS($atbt); 
    $product_result = array(); 
    $i=0; 
    foreach ($res as $key => $row) { 
    $sql = 'SELECT pal.name AS label,pal.id_attribute AS value,0 AS status' 
       . ' FROM ' . _DB_PREFIX_ . 'attribute AS pa 
     RIGHT JOIN ' . _DB_PREFIX_ . 'attribute_group_lang AS pagl ON (pagl.id_attribute_group =pa.id_attribute_group) 
     LEFT JOIN ' . _DB_PREFIX_ . 'attribute_lang AS pal ON (pal.id_attribute =pa.id_attribute) 
     JOIN ' . _DB_PREFIX_ . 'product_attribute_combination AS pacl ON (pacl.id_attribute =pal.id_attribute) 
     JOIN ' . _DB_PREFIX_ . 'product_attribute AS pat ON (pat.id_product_attribute =pacl.id_product_attribute) 
     JOIN ' . _DB_PREFIX_ . 'product AS prot ON (prot.id_product =pat.id_product) 
     WHERE pagl.id_lang="'.$id_lang.'" AND pal.id_lang="'.$id_lang.'" AND pagl.id_attribute_group=' . $row['id_attribute_group'].' AND prot.id_category_default = "'.$id_category.'" GROUP BY pacl.id_attribute'; 

     $result = Db::getInstance()->ExecuteS($sql); 
} 
+0

雖然這段代碼可以解決這個問題,包括一個解釋[真的有幫助](// meta.stackexchange.com/q/114762)來提高你的文章的質量。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –