如何在magento中创建新的产品自定义选项类型,例如我必须在magento中提供新的图像自定义选项类型,从我的自定义模块表中获取图像,并且我想将该图像分配给我的自定义选项图像字段。
答案 0 :(得分:4)
正如Dustin Graham所说,这非常棘手。第一步:
在global/catalog/product/options/custom/groups
下添加新节点。请参阅/app/code/core/Mage/Catalog/etc/config.xml
。
创建新块以呈现自定义选项。
重写Mage_Catalog_Model_Product_Option
并实施保存自定义类型选项(saveOptions()
方法)并加载自定义类型选项(getProductOptionCollection
方法)。
如果你的自定义类型不是很自定义:) - 它就足够了。
答案 1 :(得分:2)
我忘记了这个问题,但我需要再次在我的另一个项目中创建新的自定义选项类型。我使用此链接创建了新的自定义选项类型。 http://magento.ikantam.com/qa/custom-input-types-custom-options
解决方案有点冗长,不可能将整个代码放在这里,所以我只是分享这个链接,通过这个链接我很容易创建新的自定义选项类型,在本文中解释很好。
我已根据需要修改了一些更改。
希望这会对某人有所帮助。
正如达斯汀格雷厄姆所说的那样难以置信。
答案 2 :(得分:0)
@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与select进行交互。