【问题标题】:How to set default selected options in magento product detail page如何在 magento 产品详细信息页面中设置默认选择的选项
【发布时间】:2011-07-01 07:14:12
【问题描述】:

我有要求从外部应用程序获取产品 ID,并使用颜色、尺寸等产品超级属性选项。我得到了所有这些,我可以添加到购物车选项。

但这里我的实际要求是选择客户请求的选项并将它们重定向到 magento 中的产品详细信息页面,以便他们仍然可以在此处输入可选文本进行打印。所以我需要在详细信息页面中设置请求的选项并将它们重定向到产品详细信息页面,而不是将其添加到购物车。他们将输入更多详细信息,然后他们将手动添加到购物车。

如何在加载时设置选定的选项。

请帮帮我。

【问题讨论】:

    标签: magento


    【解决方案1】:

    谢天谢地,这已经内置于大多数主题中。您需要知道可配置产品中包含的简单产品的属性和值的 ID。我只看到它适用于可配置类型,所以这可能是一个限制。

    【讨论】:

    • 但我在产品自定义选项方面确实存在问题。当我使用 # 设置默认选项时,如下所示 #965=167&966=170&967=187 它工作得很好。当我对产品自定义选项执行相同的操作时,如下 56=263&55=260&52=252 它不起作用。如何设置自定义下拉菜单的默认选项,而不是基于属性的下拉菜单。
    • 你可以看到初始化js/varien/product.js中的字段的脚本。查找window.location 的位置,您会发现它仅适用于可配置产品。您可能必须模仿它来为简单的产品制作自己的初始化脚本。
    • 如何根据列表页面上的分层导航过滤器选择在可配置产品的产品页面上显示默认选择的选项?
    • 穆克的问题真的很好,希望他能找到答案。如果有人关注,那么他也在这里问:stackoverflow.com/q/18572765/471559
    【解决方案2】:

    粗略的 Magento2 示例添加以下内容以通过 name=value 预先选择自定义选项:

    /www/mysite/app/design/frontend/mycompany/mytheme/Magento_Catalog/templates/product/view/options.phtml
    

    下面的代码查看选项的标签和选择的文本值。并且取决于您的主题结构。下面是 Luma 的示例。

    它期望 url 中的格式如下

    product.html?SelectLabel=OptionValue&SelectLabel=OptionValue
    

    这不考虑多语言等。您可以轻松地对其进行调整,以寻找更准确替换的 select id 和 option id

    $(label).parents().eq(1).find('select option:contains('+arr[k]+')').attr('selected', true);
    

    有(未测试)

    $("#"+k+" option[id='"+arr[k]+"']").attr("selected", "selected");
    

    <script>
            require(['jquery'],function($){
    
                $(document).ready(function(){
    
                    function getJsonFromUrl() {
                        var query = location.search.substr(1);
                        var result = {};
                        query.split("&").forEach(function(part) {
                            var item = part.split("=");
                            result[item[0]] = decodeURIComponent(item[1]);
                        });
                        return result;
                    }
                    var arr = getJsonFromUrl();
                    for (var k in arr){
                        if (arr.hasOwnProperty(k)) {
                            //alert("Key is " + k + ", value is" + arr[k]);
                            var label = $('.product-options-wrapper').find("span:contains('"+k+"')");
                            $(label).parents().eq(1).find('select option:contains('+arr[k]+')').attr('selected', true);
    
                        }
                    }
    
                });
    
            });
    
        </script>

    【讨论】:

    • 是的,这适用于 Magento 2,查询字符串如上所述:produc-url?OptionTextLael=OptionNumericValue
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多