如何在magento产品详细信息页面中设置默认选定选项

如何在magento产品详细信息页面中设置默认选定选项,magento,Magento,我有一个要求,即我从外部应用程序获取产品ID,并带有产品超级属性选项,如颜色、大小。我得到所有这些,我可以做添加到购物车选项 但在这里,我的实际需求是按客户选择所请求的选项,并将它们重定向到magento中的产品详细信息页面,以便在这里他们仍然可以输入可选文本进行打印。所以我需要在详细信息页面中设置请求的选项,并将它们重定向到产品详细信息页面,而不是将其添加到购物车。他们将输入更多详细信息,然后手动执行addtocart 如何在加载自身时设置所选选项 请帮帮我。谢天谢地,大多数主题都内置了这一功

我有一个要求,即我从外部应用程序获取产品ID,并带有产品超级属性选项,如颜色、大小。我得到所有这些,我可以做添加到购物车选项

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

如何在加载自身时设置所选选项


请帮帮我。

谢天谢地,大多数主题都内置了这一功能。您需要知道可配置产品中包含的简单产品的属性和值的ID。我只见过它与可配置类型一起工作,所以这可能是一个限制

  • 为每个属性创建一个键=值对
  • 将属性组合为查询字符串,例如“123=345&678=890”
  • 将字符串附加为哈希片段(而不是查询)。
    这是官方演示中的一个示例,请注意,需要选择第一个选项,第二个选项才能工作,因此它有两个键/值对。


Rough Magento2示例添加以下内容,以便在中通过名称=值预先选择自定义选项:

/www/mysite/app/design/frontend/mycompany/mytheme/Magento_Catalog/templates/product/view/options.phtml
下面的代码查看选项的标签和select的文本值。这取决于你的主题结构。下面是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);
有(未经测试)


require(['jquery'],函数($){
$(文档).ready(函数(){
函数getJsonFromUrl(){
var query=location.search.substr(1);
var result={};
query.split(“&”).forEach(函数(部分){
变量项=部分拆分(“”);
结果[项目[0]]=decodeURIComponent(项目[1]);
});
返回结果;
}
var arr=getJsonFromUrl();
用于(arr中的var k){
if(arr.hasOwnProperty(k)){
//警报(“键为“+k+”,值为“+arr[k]);
var label=$('.product options wrapper')。查找(“span:contains(“+k+”)”);
$(label).parents().eq(1).find('select option:contains('+arr[k]+'))).attr('selected',true);
}
}
});
});

但我在产品定制选项方面确实有问题。当我使用#设置默认选项时,如下所示#965=167&966=170&967=187,效果非常好。当我为产品定制选项做同样的事情,如下56=263&55=260&52=252,它不起作用。如何为自定义下拉列表而不是基于属性的下拉列表设置默认选项。您可以在
js/varien/product.js
中看到初始化字段的脚本。查找它读取的位置
window.location
,您可以看到它仅适用于可配置产品。您可能需要模仿这一点,为简单的产品创建自己的初始化脚本。如何根据列表页上的分层导航过滤器选择,在产品页上显示可配置产品的默认选定选项?Muk的问题非常好,我希望他能找到答案。如果有人在跟踪,他也会在这里问:是的,这在Magento 2中有效,查询字符串如上所述:
produc url?OptionTextLael=OptionNumericValue
$("#"+k+" option[id='"+arr[k]+"']").attr("selected", "selected");