如何在magento中创建新的自定义选项类型?

时间:2012-05-08 14:01:03

标签: php magento magento-1.7 option

如何在magento中创建新的产品自定义选项类型,例如我必须在magento中提供新的图像自定义选项类型,从我的自定义模块表中获取图像,并且我想将该图像分配给我的自定义选项图像字段。

3 个答案:

答案 0 :(得分:4)

正如Dustin Graham所说,这非常棘手。第一步:

  1. global/catalog/product/options/custom/groups下添加新节点。请参阅/app/code/core/Mage/Catalog/etc/config.xml

  2. 中的示例
  3. 创建新块以呈现自定义选项。

  4. 重写Mage_Catalog_Model_Product_Option并实施保存自定义类型选项(saveOptions()方法)并加载自定义类型选项(getProductOptionCollection方法)。

  5. 如果你的自定义类型不是很自定义:) - 它就足够了。

答案 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进行交互。