Question

J'ai créé une page imprimable des détails du produit et que tout fonctionne bien. La seule chose qui est en échec si la vérification est fixe ou pour cent le type de prix des enfants du produit;

entrer image description ici

J'ai avec succès par les cheveux et vérifiés options personnalisées pour le type de prix comme suit:

//get options                   
            $options = $product->getOptions();

        foreach ($options as $option)
        {
            $o = $option->getValues();

            foreach ($o as $v)
            {
                //if price_type fixed = echo price
                if ($v["price_type"] == "fixed")
                {
                    $optPrice = $v["price"];
                } //else percent = echo product price + %
                else
                {
                    $optPrice = $priceExcTax * ($v["price"]/100);
                }

                //number_format price
                $optPrice = number_format($optPrice, 2);

                //echo price and title

                $output .= $v['title'] . " (+ &pound;" . $optPrice . " + VAT)<br />";
            }
        }

J'espère que cela fonctionnerait d'une manière similaire pour les produits de l'enfant, mais je l'ai essayé ce qui suit sans chance;

$confAttributes = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);
                        foreach ($confAttributes as $confAttribute)
                        {
                            echo "<em>Choose " . $confAttribute['store_label'] . "...</em><br />";

                            foreach ($confAttribute["values"] as $value)
                            {
                                echo $value["label"] . " (+ &pound;";

                                //if price_type fixed = echo price
                                if ($value["price_type"] == "fixed")
                                {
                                    $optPrice = $value["pricing_value"];
                                }
                                else //else percent = product price + %
                                {
                                    $optPrice = $priceExcTax * ($value["pricing_value"]/100);
                                }

                                $optPrice = number_format($optPrice,2);
                                echo $optPrice . " + VAT)<br />";
                            }
                        }

Après avoir cherché un peu, je l'ai aussi essayé;

if ($value["is_percentage"])

pas de chance non plus.

Le prix des produits de l'enfant est toujours considéré comme étant fixe, quelqu'un peut-il aider?


Mise à jour:

J'ai même regardé le produit que je teste dans la base de données brutes et peut voir le champ « is_percent » donc je ne suis pas sûr de savoir pourquoi essayer quoi que ce soit, je ne fonctionne pas.

Était-ce utile?

La solution 2

J'ai trouvé ma réponse, après un peu d'aide et de chercher plus loin à mon code. Vraiment @mageUz a répondu à ma question, mais quand je l'ai essayé, ça n'a pas fonctionné comme je l'étais complètement en arrière dans où je mettais le code.

Pour vérifier le type de prix le champ $value['is_percent'] est là et fonctionne.

leçon à tirer ici, assurez-vous de vérifier votre code et que vous mettez les bonnes choses dans les bons endroits et d'autre part à l'aide echo '<pre>' . print_r(<the-var-you-want>) . '</pre>' est un excellent outil.

Autres conseils

Utilisez if ($value["is_percent"]). Voici les champs $confAttribute["values"]:

Array
(
    [product_super_attribute_id] => 11
    [value_index] => 45
    [label] => 4a
    [default_label] => 4a
    [store_label] => 4a
    [is_percent] => 1
    [pricing_value] => 10.0000
    [use_default_value] => 1
)

Et si vous utilisez le prix en pourcentage, vous devez entrer la valeur valide non Thero à l'entrée de prix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top