製品ビュー/ AddToCartクラス(PHPとPHTM)の拡張に問題がある
質問
製品ページの製品数量をプリセットする必要があります。
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" />
.