我要求我从外部应用程序获取产品ID,其中包含颜色,大小等产品super_attribute选项。我得到了所有这些,我可以做添加到购物车选项。
但在这里,我的实际要求是按客户选择所请求的选项,并将它们重定向到magento的产品详细信息页面,这样他们仍然可以输入要打印的可选文本。因此,我需要在详细信息页面中设置所请求的选项,并将其重定向到产品详细信息页面,而不是将其添加到购物车。他们将输入更多细节,然后他们将手动添加addtocart。
如何在加载时设置所选选项。
请帮帮我。
答案 0 :(得分:13)
值得庆幸的是,这已经内置于大多数主题中。您需要知道可配置产品中包含的Simple产品的属性和值的ID。我只看到它适用于可配置类型,因此可能是一个限制。
答案 1 :(得分:1)
Rough Magento2示例添加以下内容,通过name = value预先选择自定义选项:
/www/mysite/app/design/frontend/mycompany/mytheme/Magento_Catalog/templates/product/view/options.phtml
以下代码查看选项的标签和select的文本值。并取决于您的主题结构。以下示例为Luma。
它希望网址中包含以下格式
product.html?SelectLabel=OptionValue&SelectLabel=OptionValue
这不考虑多语言等。你可以很容易地调整它来代替选择id和选项id,这将更准确的替换
$(label).parents().eq(1).find('select option:contains('+arr[k]+')').attr('selected', true);
with(未经测试)
$("#"+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>