8

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

4

3 回答 3

4

正如达斯汀格雷厄姆所说,这非常棘手。第一步:

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

  2. 创建新块以呈现您的自定义选项。

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

如果您的自定义类型不是很自定义:) - 它应该足够了。

于 2012-09-27T22:09:57.697 回答
2

我忘记了这个问题,但我需要再次在我的另一个项目中创建新的自定义选项类型。我使用此链接创建了新的自定义选项类型。 http://magento.ikantam.com/qa/custom-input-types-custom-options

解决方案有点冗长,不可能把整个代码放在这里,所以我刚刚分享了这个链接,通过这个链接我很容易创建新的自定义选项类型,这篇文章的解释很好。

我根据需要修改了一些更改。

希望这会对某人有所帮助。

正如达斯汀格雷厄姆所说,这非常棘手。

于 2013-05-09T06:13:45.217 回答
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 与选择进行交互。

于 2016-06-29T20:55:56.297 回答