1

Magento 2中,当我们打开多个产品时,它会将这些产品的数据存储到window.localStorage.product_data_storage本地浏览器中,许多浏览器的数据会自动删除,但在某些浏览器中它不会被删除

我不得不说在这件事发生之前我开了大约 200 种产品,但一直不清楚。

当我们清除浏览器的缓存时,它正在从浏览器中删除该数据内容,但很简单,最终用户不会每次都去清除他们的缓存,所以我们如何从他们的浏览器中删除这些内容?

任何帮助将不胜感激

谢谢你!

4

1 回答 1

1

据我了解,当您/任何人打开您的网站以在某些地方使用它们时,您希望从浏览器中删除Magento 本地存储到每个浏览器中的内容,例如维护knock-out jsmagento 中的组件,如结帐页面、迷你购物车等

在这里,我创建了一个模块来实现这一点,通过这个模块,您可以管理应该将多少内容存储到浏览器本地存储中。意味着magento会将内容存储到浏览器的本地存储中,但是如果您希望在限制达到10-20时删除数据,无论您希望使用什么单位然后模块将从浏览器中删除内容,magento将再次开始将数据存储到本地,从 1 个计数到您想要的限制。

在以下位置创建一个模块

Magento_root/app/code/{VendorName}/{ModuleName}

在适当的给定位置创建以下文件。

  1. 注册.php
  2. 等/模块.xml
  3. 查看/前端/布局/catalog_product_view.xml
  4. 视图/前端/模板/产品/视图/removelocal.phtml
  5. 查看/前端/web/js/removelocal.js

在这里,我不是假设您已经理解了registration.php&的内容。module.xml对于这个答案,我正在使用VendorName => VendornameModuelName => Removelocal。这是自定义模块的代码。

目录产品视图.xml

<?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Framework\View\Element\Template" name="vendorname.removelocal.content" template="Vendorname_Removelocal::product/view/removelocal.phtml" before="-" />
        </referenceContainer>
    </body>
</page>

removelocal.phtml

<div class="swatch-opt" data-role="remov-local-content"></div>
<script type="text/x-magento-init">
    {
        "[data-role=remov-local-content]": {
            "Vendorname_Removelocal/js/removelocal": {

            }
        }
    }
</script>

removelocal.js

define([
    'jquery'
], function ($){
    'use strict';
    $.widget('mage.removelocal', {

        _init: function () {

            if(window.localStorage.product_data_storage)
            {
                var temp = window.localStorage.product_data_storage;
                var myObject = JSON.parse(window.localStorage.product_data_storage);
                var count = Object.keys(myObject).length;

                if(count >= 10){
                    window.localStorage.removeItem('product_data_storage');
                }
            }
        }
    });
    return $.mage.removelocal;
});

注意:完成后请运行以下命令。

php bin/magento module:enable Vendorname_Removelocal
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy -f
php bin/magento cache:flush
于 2018-07-10T04:20:35.827 回答