如何在 magento 中创建新的产品自定义选项类型,例如,我必须在 magento 中提供新的图像自定义选项类型,该类型从我的自定义模块表中获取图像,并且我想将该图像分配给我的自定义选项图像字段。
3 回答
正如达斯汀格雷厄姆所说,这非常棘手。第一步:
在 下添加新节点
global/catalog/product/options/custom/groups
。请参阅 中的示例/app/code/core/Mage/Catalog/etc/config.xml
。创建新块以呈现您的自定义选项。
重写
Mage_Catalog_Model_Product_Option
并实现保存自定义类型选项(saveOptions()
方法)和加载自定义类型选项(getProductOptionCollection
方法)。
如果您的自定义类型不是很自定义:) - 它应该足够了。
我忘记了这个问题,但我需要再次在我的另一个项目中创建新的自定义选项类型。我使用此链接创建了新的自定义选项类型。 http://magento.ikantam.com/qa/custom-input-types-custom-options
解决方案有点冗长,不可能把整个代码放在这里,所以我刚刚分享了这个链接,通过这个链接我很容易创建新的自定义选项类型,这篇文章的解释很好。
我根据需要修改了一些更改。
希望这会对某人有所帮助。
正如达斯汀格雷厄姆所说,这非常棘手。
@Mufaddal 感谢分享此链接。我想提供一个替代方案,因为它需要相当多的知识。
如果您只是尝试更改特定下拉列表(例如)的显示方式,您还可以覆盖/template/catalog/product/view/options/type/select.phtml
如下:
` getOption() ?>
<dt><label<?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo $this->escapeHtml($_option->getTitle()) ?></label> </dt>
<dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
<div class="input-box">
<?php echo $this->getValuesHtml(); ?>
<?php if($_option->option_id == 2) : ?>
<script type="text/javascript">
jQuery('#select_2').css('display', 'none');
</script>
<?php foreach ($_option->getValues() as $_value) { ?>
<?php echo $_value->getTitle(); // the title of the option ?>
<?php echo $_value->getOptionTypeId(); // the id ?>
<?php } ?>
<!-- add custom code that triggers select in the background -->
<?php endif ?>
<?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>
`
然后,您可以隐藏选择并通过 jQuery 与选择进行交互。