1

是否可以将可用的自定义选项列表输出到 Magento 中的 view.phtml 页面上?显然,下拉列表允许您向下过滤,但我需要在 html 表中列出它们并允许客户将每个项目添加到购物车。

4

1 回答 1

1

我将向您展示如何将选项转换dropdownmulti-select表格格式。这是解决问题的代码。

<?php
$product = Mage::Registry('current_product');
$options = $product->getOptions();
//check for option exists
if($options):
    foreach ($options as $option) :
        //table format allows only for select options
        if($option->getType()== Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN || 
            $option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE):

            $require = ($option->getIsRequire()) ? ' required-entry' : '';
            if($option->getType()== Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN):
                    $value_name = 'options['.$option->getid().']';
            else:
                $value_name = 'options['.$option->getid().'][]';
            endif;
?>
            <table border="1" style="width:500px;margin-bottom:30px">
                <thead>
                    <tr<?php if ($option->getIsRequire()) echo ' class="required"' ?>>
                        <th><?php echo $option->getTitle() ?></th>
                        <th><?php if ($option->getIsRequire()) echo '<em>*</em>' ?></th>
                    </tr>
                </thead>
                <tbody id="<?php echo 'select_'.$option->getId() ?>" class="<?php echo $require.' product-custom-option' ?>">       
            <?php
                foreach ($option->getValues() as  $values) :
                    $value = $values->getOptionTypeId();
                    $value_title = $values->getTitle();
            ?>
                    <tr>
                        <td>
                            <?php
                                if($option->getType()== Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN):
                            ?>
                                    <input type="radio" name="<?php echo $value_name; ?>" class="radio_option" id="<?php echo 'radio_option_'.$value ?>" value="<?php echo $value; ?>" />
                            <?php
                                else:
                            ?>
                                    <input type="checkbox" name="<?php echo $value_name; ?>" class="checkbox_option" id="<?php echo 'checkbox_option_'.$value ?>" value="<?php echo $value; ?>" />
                            <?php
                                endif;
                            ?>
                        </td>
                        <td><?php echo $value_title; ?></td>
                    </tr>
            <?php
                endforeach;
            ?>
                </tbody>
            </table>
<?php
        endif;  
    endforeach;
endif;
?>

对于dropdown选项,我们radio button用来显示它们的值。对于multiselect选项,checkbox使用输入。因此,如果复选框出现在表格中,这意味着它是一个多选选项,因此一次可以有多个复选框。由于单选按钮用于下拉选项,因此确保一次只选中一个单选按钮很重要。(我们需要使用 javascript 来确保这一点)。

因此,如果我们像这样通过管理员为产品设置一些自定义选项..

管理员自定义选项

与我们的代码对应的输出将如下所示

在此处输入图像描述

注意:请注意,代码是非常基本的格式。您可能需要额外的 css 和 javascripts 使其更加用户化。这是为了给你一个基本的想法和额外的 css,js 因此是开箱即用的主题。

有关代码的更多信息,请查看我的博客

希望能帮助到你

于 2014-07-14T19:16:56.280 回答