首页 文章

Magento更改了div的下拉列表可配置产品选项

提问于
浏览
4

我需要将可配置产品的选项显示为内部带有“a”的div,让用户在选项中执行单击并选择它,而不是下拉列表 . 像菜单(目标是显示鞋子尺寸) .

正如你们许多人所知,Magento使用Json响应来填充下拉菜单的选项 . (var spConfig = new Product.Config(getJsonConfig()?>),该类位于js / varien / product.js(Product.Config = Class.create())中 .

然后,我所做的是编辑文件模板/ catalog / product / view / type / options / configurable.phtml并替换原来的行为,就像这样 .

'<?php
     echo ' 
                <ul class="super-attribute-select">';
         $resultado = json_decode($this->getJsonConfig(), true);
         $atributo=$resultado['attributes'][162]['options'];
         foreach($atributo as $att){
             echo '<li>';
             echo '<a value="'.$att['id'].'" price="'.$att['price'].'" href="javascript:void()" onclick="return assignValue()">'.$att['label'].'</a>';
             echo '</li>';
             }
     echo ' </ul>
            <div class="clear"></div>';
     ?>'

这个简单的mod允许我替换由div形成的小网格的菜单 . 现在我正在尝试创建一个模仿本机行为的Javascript函数,但仅针对所选的选项(在这种情况下是鞋号) . 当我理解代码时它会使用表单发送选项值,所以我的想法是创建一个隐藏的输入,然后在用户执行单击时通过Javascript函数分配值,如下所示:

'<script>
  function assignValue(value){
   //assign the value       
      document.getElementById('super_attribute[162]').value = value;
   //mod the class of the selected item
      this.addClassName("selected");
</script>'

我认为可能有必要创建一个函数或调用magento已经具有所需值的方法 . 即使我不知道在隐藏输入上设置类“required-entry”是否是个好主意 .

请问你能帮帮我吗?任何形式的帮助或其他想法将受到高度赞赏 .

1 回答

  • 0

    这里有一段代码片段 . 太简单=)!! ..

    <script type="text/javascript">
            function assignValue(idattribute,price,value){
                var sal = new String(value); //this value is what you are showing to the user in the div grid
                var disp = new String(idattribute);
    
                $('nameinputhidden').value=disp;
                $('advice-required-entry-attribute').fade();
                        $$('.nameinputhidden').each(
                         function(e){
                       e.removeClassName('active');
                          }
                          )
                        $(sal).addClassName('active');
    
        </script>
    

    并且不要忘记将输入值隐藏起来 . 此输入值必须是您在网格上显示的属性 .

    希望这可以帮助 . 如果我能帮你的话,请告诉我!

    问候!

相关问题