我已成功修改“产品信息”>“自定义选项”表单以允许输入特定选项的数量。现在我正在努力让数量出现在产品 View 页面上“标题”和“固定价格”旁边的下拉列表中。
通过一些研究,我已经能够追踪到选项布局的负责文件:
app/design/frontend/default/MY_TEMPLATE/template/catalog/product/view/options/type/select.phtml
但是现在我不确定我需要修改哪些代码才能在下拉列表中显示数量。任何帮助将不胜感激!
这是来自 select.phtml 文件的代码:
<?php
//开始我的自定义
$_option = $this->getOption();
$configValue = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $_option->getId());
$store = $this->getProduct()->getStore();
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN
|| $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
$require = ($_option->getIsRequire()) ? ' required-entry' : '';
$extraParams = '';
$select = $this->getLayout()->createBlock('core/html_select')
->setData(array(
'id' => 'select_'.$_option->getId(),
'class' => $require.' product-custom-option'
));
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN) {
$title_options = ($_option->getIsRequire())?$this->htmlEscape($_option->getTitle())." *":$this->htmlEscape($_option->getTitle()) ;
$select->setName('options['.$_option->getid().']')
->addOption('', $title_options );
} else {
$select->setName('options['.$_option->getid().'][]');
$select->setClass('multiselect'.$require.' product-custom-option');
}
foreach ($_option->getValues() as $_value) {
if( $_value->getPrice(($_value->getPriceType() == 'percent') )== 0){
$sign = '+';
$priceStr = $sign . $this->helper('core')->currencyByStore(0, $store, true, false);
}
else{
$priceStr = $this->_formatPrice(array(
'is_percent' => ($_value->getPriceType() == 'percent'),
'pricing_value' => $_value->getPrice(($_value->getPriceType() == 'percent'))
), false);
}
$select->addOption(
$_value->getOptionTypeId(),
$_value->getTitle() . ' ' . $priceStr . '',
array('price' => $this->helper('core')->currencyByStore($_value->getPrice(true), $store, false))
);
}
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
$extraParams = ' multiple="multiple"';
}
if (!$this->getSkipJsReloadPrice()) {
$extraParams .= ' onchange="opConfig.reloadPrice()"';
}
$select->setExtraParams($extraParams);
if ($configValue) {
$select->setValue($configValue);
}
$selectHtml = $select->getHtml();
}
//结束我的自定义
?>
得到选项(); ?> getIsRequire()) echo ' class="required"' ?>>getIsRequire()) echo '*' ?>htmlEscape($_option->getTitle()) ?> */?>decoratedIsLast){?> class="last">
<div class="input-box">
getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN
|| $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) { ?>
<?php echo $selectHtml; ?>
<?php
} else{
echo $this->getValuesHtml(); ?>
<?php } ?>
<?php if ($_option->getIsRequire()): ?>
<?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX): ?>
<span id="options-<?php echo $_option->getId() ?>-container"></span>
<?php endif; ?>
<?php endif;?>
</div>
最佳答案
是的,应该覆盖类
Mage_Catalog_Block_Product_View_Options_Type_Select
和改变
$_value->getTitle() 。 ''。 $价格海峡。 '',
到
$_value->getTitle() 。 ' (' . $_value->getQty() . ') ' . $价格海峡。 '',
其中 Qty 是 Magento 索引,在其下保存数量。
关于php - Magento 1.8.1.0 : Display Quantity In Drop Down list of product options, 编辑 select.phtml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068585/