如何使客户能够设置全局首选项并应用于Magento2中的过滤器和可配置产品

时间:2018-08-14 08:41:09

标签: javascript magento magento2

我正在寻找有关如何使商店具有全局首选项并将其应用于所有可配置产品上的所有类别页面过滤器和属性的逻辑或指南的确认。

用例:例如,当客户选择尺寸时,我希望所有可配置产品在显示时默认为这些选项。 (同样,我希望搜索和类别页面中的所有过滤器都可以通过应用这些默认选择来开始。)

我的过程:我正在编写一个magento 2小部件,该小部件将执行以下操作:

  1. 在标题中显示一个下拉列表,允许用户为该属性选择默认值(aka size = large)。 (使用对主题的修改)

  2. 如果选择了默认值或在标题或任何可配置的产品页面中进行了更改,则将其存储在cookie中。 (使用https://magento.stackexchange.com/questions/177167/how-to-set-cookie-in-magento-2或类似方法)

  3. 可以在每个位置(例如,在可配置产品页面中)选择该属性,然后为该客户/会话设置默认选项。

如果这种逻辑成立,那么我将停留在与#3特别相关的语法和文档上。

我怀疑要使其正常工作,我需要使用javascript扩展可配置形式(https://devdocs.magento.com/guides/v2.2/javascript-dev-guide/javascript/custom_js.html

然后,使用javascript,我可以通过将隐藏输入设置为默认值并显示“此产品符合您的偏好”之类的内容来填充表单,从而解决#3问题。

相关解决方案::我注意到,当您将可配置产品添加到购物车时,您可以“编辑”该产品,从而将您返回设置了产品属性的产品页面。 (请参阅/ vendor / magento / module-configurable-product / view / frontend / web / js)

那里的代码使我相信应该有一个相对简单的方法来设置和检索首选项,然后在设置默认值时应用我自己的自定义行为。

    /**
    * Listens to update of cart data or options initialization and update selected option according to customer data
    *
    */
    listen = function () {
        cartData.subscribe(function (updateCartData) {
            if (this.setProductOptions(updateCartData)) {
                this.updateOptions();
            }
        }.bind(this));
        $(selectors.formSelector).on(this.eventName, function () {
            this.setProductOptions(cartData());
            this.updateOptions();
        }.bind(this));
    },

最后,在编写我自己的模块时,我会停留在如何使用此功能上,以便它将利用客户数据并在可配置产品上设置默认功能。

同样,我可以避免使用cookie,而是使用url查询参数进行初始化,但是我似乎也无法使它正常工作。

建议非常感谢!

0 个答案:

没有答案