質問

製品ページの製品数量をプリセットする必要があります。

nb1:私の製品には、Formument_Price-Activeと呼ばれるバックエンドで定義されている新しいyes / no属性があります。 NB2:Formula_PRice_Active製品の場合は、製品のURLを介してパラメータを渡して製品ページを設定します。

次にView.phpクラスを拡張してカスタム関数を追加/オーバーロードします。

    <?php
    class Mine_Quotemodule_Block_Catalog_Product_View extends Mage_Catalog_Block_Product_View
    {
        /**
         * Get default qty - either as preconfigured, or as 1.
         * Also restricts it by minimal qty.
         *
         * @param null|Mage_Catalog_Model_Product $product
         * @return int|float
         */
        public function getProductDefaultQty($product = null)
        {
            if (!$product) {
                $product = $this->getProduct();
            }

            $FPA_att_value = $product->getAttributeText('formula_price_active');

            if (isset($FPA_att_value) && (($FPA_att_value == 'yes') || ($FPA_att_value == 'oui')))
            {
                $params = Mage::app()->getRequest()->getParams();
                $urlParams = array();

                foreach ($params as $name=>$value)
                {
                    if ($name!="id") 
                    {
                    $urlParams[$name] = base64_decode($value);
                    }
                }

                if (isset($urlParams['Devis_Qty']))
                {
                    $qty = $urlParams['Devis_Qty'];
                }   
                else 
                {               
                    $qty = $this->getMinimalQty($product);
                    $config = $product->getPreconfiguredValues();
                    $configQty = $config->getQty();
                    if ($configQty > $qty) {
                        $qty = $configQty;
                    }
                }
            }
            else
            {
                $qty = $this->getMinimalQty($product);
                Mage::log('Qty'.$qty);

                $config = $product->getPreconfiguredValues();
                $configQty = $config->getQty();
                Mage::log('configQty '.$configQty);
                if ($configQty > $qty) {
                    $qty = $configQty;
                }

            }
            Mage::log('Final Qty'.$qty);
            return $qty;

        }

        public function testProductFP($product = null)
        {
             if (!$product) {
                $product = $this->getProduct();
            }

            $FPA_att_value = $product->getAttributeText('formula_price_active');

            if (isset($FPA_att_value) && (($FPA_att_value == 'yes') || ($FPA_att_value == 'oui')))
            {
                $params = Mage::app()->getRequest()->getParams();
                $urlParams = array();

                foreach ($params as $name=>$value)
                {
                    if ($name!="id") 
                    {
                    $urlParams[$name] = base64_decode($value);
                    }
                }

                if (isset($urlParams['Devis_Qty']))
                {
                    $result = true;
                }   
                else 
                {               
                    $result = false;
                }
            }
            else
            {
                $result = false;
            }

            return $result;
        }
...
. カスタムのものを追加するための

とView.phtml(ただし現在の問題とは何も関係ありません):

…

                <div class="extra-info">
                    <?php echo $this->getReviewsSummaryHtml($_product, 'default', false)?>

                    <!-- Modifs Perso -->
                    <!--<?php echo $this->getChildHtml('product_type_availability'); ?>-->
                    <?php echo $this->getDimHtml() ?>
                    <!-- ******************** -->

                </div>
…
.

これはうまく機能しているようです。 - ケース1:Formula_PRice_ActiveがNoに設定されている場合、またはYESに設定されている場合は、必要なパラメータが存在しない場合は、基本的なGetDefaultQuantityメソッドが使用されます。 -case 2:formulation_price_activeがyesとパラメータに設定されている場合は、希望の数量を設定します。 その後、ケース2の数量入力を無効にするために、カスタムaddtocart.phtmlを追加しました。

しかし、私のlayout.xmlに追加すると、問題が表示されます。

ケース2では動作していますが、1の場合、数量は0に設定されていますか?

奇妙なもの、数量のレイアウトが定義されたとおりに変化することです...

これは私のlayout.xml です。

  <?xml version="1.0"?>
    <layout version="0.1.0">
        <default>
            <reference name="content">
            </reference>
            <reference name="head">
                <action method="addItem"><type>skin_css</type><name>css/quote_form.css</name></action>
            </reference>
        </default>

        <routeurfrontend_index_index>
            <reference name="content">
                <block type="quotemodule/quoteformblock"  name="quoteform_quoteformblock"
                              template="quotemodule/quoteform.phtml" />
            </reference>
        </routeurfrontend_index_index>

        <catalog_product_view>
            <reference name="product.info">
                <action method="setTemplate">
                    <template>quotemodule/catalog/product/view.phtml</template>
                </action>
            </reference>

            <reference name="product.info.addtocart">
                <action method="setTemplate">
                    <template>quotemodule/catalog/product/view/addtocart.phtml</template>
                </action>
            </reference>
        </catalog_product_view>

    </layout>
.

あなたの助けをありがとう、

役に立ちましたか?

解決

それは愚かな間違いでした...すみません...

i誤ったテンプレートにmy addtocart.phtmlをベースにします(rwd / defaultの代わりにbase / default)。getProductDefaultQtyがnullを返す場合は、rwd / defaultが次のように返されますが、基本/デフォルトの1つは、数値を1で置き換えません。

ベース/デフォルトaddtocart.phtml

<input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getProductDefaultQty() * 1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
.

rwd / default addtocart.phtml

<input type="text" pattern="\d*" name="qty" id="qty" maxlength="12" value="<?php echo max($this->getProductDefaultQty() * 1, 1) ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top