2

Prestahop ストアに存在するすべての属性を取得する必要があります。どの製品が割り当てられているかに関係なく、これらの属性の配列を生成して、ProductController.php クラスで使用したいだけです。ファイル classes/Product.php を確認すると、getDefaultAttribute($id_product, $minimumQuantity = 0) というメソッドが存在しますが、これは特定の製品に割り当てられた属性に対してのみ機能し、必要に応じてすべてを返すわけではないと思います。何か助けはありますか?私は Prestashop の初心者で、多くのことを学ぶ必要があります

4

2 に答える 2

4

ファイルを調べますclasses/Attribute.php。static function を使用できますAttribute::getAttributes($id_lang, $not_null = false)。特定の言語のすべての属性を返します。

于 2012-10-16T17:07:43.077 に答える
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);
}
于 2016-11-16T11:55:18.957 に答える