我正在尝试在产品页面的“选择选项”下拉列表中添加属性标签,但没有硬编码,因为我可能会添加其他属性,所以例如我想显示“选择大小”或选择一种颜色“。
我玩过并试过各种论坛的代码,但似乎无法让它发挥作用 - 任何想法或任何建议的扩展
configurable.phtml中的核心代码是:
<?php
$_product = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
&GT;
isSaleable()&amp;&amp;计数($ _属性)):&GT;? <dt><label class="required"><em>*</em><?php echo $_attribute->getLabel() ?></label></dt>
<dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
<div class="input-box">
<select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select">
<option><?php echo $this->__('Choose Option')?></option>
</select>
</div>
</dd>
<?php endforeach; ?>
</dl>
var spConfig = new Product.Config(getJsonConfig()?&gt;);
</script>
答案 0 :(得分:1)
问题是你的前端Javascript改变了选项文本是什么,你的PHP无法修复它。
但是你可以用一些前端代码做很多事情。
如果你只有一个可预测的选项,例如大小,你可以做这样的事情:
<script type="text/javascript">
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
// if only one drop down then set it to 'choose size'. If 'One Size' set value and hide
if($$('select.super-attribute-select').length==1) {
$$('select.super-attribute-select')[0].options[0].update('Choose Size');
if($$('select.super-attribute-select')[0].options.length==2) {
$$('select.super-attribute-select')[0].options[1].selected=true;
$$('select.super-attribute-select')[0].up().hide();
}
}
</script>
如果只有一种尺寸,这也会隐藏下拉列表。
要扩展此方法并使其适用于任何下拉列表,您可能需要从页面中获取每个下拉列表的标签值:
$$('select.super-attribute-select').each(function(element) {
element.options[0].update('CHOOSE ' + element.up().up().previous().down().innerHTML.replace(/(<([^>]+)>)/ig,"").replace(/\*/g, '').toUpperCase());
if(element.options.length==2) {
element.options[1].selected=true;
element.up().up().up().hide();
}
});
答案 1 :(得分:1)
我上周刚刚在博客上写了an easy solution here。我不想扩展核心代码,因为这很麻烦。这就是我提出的,简而言之:
/~theme/default/template/catalog/product/view/type/options/configurable.phtml
<?php
$jsonConfig = json_decode($this->getJsonConfig());
$jsonConfig->chooseText = 'Select ' . $_attribute->getLabel();
?>
<script type="text/javascript">
var spConfig = new Product.Config(<?php echo json_encode($jsonConfig); ?>);
</script>
如果您有兴趣,我的博客文章会提供更多背景信息。