当前位置: 技术文章>> magento2中的添加自定义 CSS 预处理器以及代码示例

文章标题:magento2中的添加自定义 CSS 预处理器以及代码示例
  • 文章分类: Magento
  • 10800 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在 Magento 2 中添加自定义 CSS 预处理器可以帮助您更高效地管理和开发样式表。以下是使用自定义 CSS 预处理器的代码示例:

创建自定义 CSS 预处理器

在 Magento 2 根目录中创建一个名为 app/design/frontend/<Vendor>/<Theme>/web/css/source/_custom.less 的文件,并添加以下代码:

@primary-color: #007bff;
body {
  background-color: #f8f8f8;
  color: #333;
}
h1, h2, h3 {
  color: @primary-color;
}

这个代码定义了一个名为 @primary-color 的 LESS 变量,并在样式表中使用它来设置标题的颜色。

配置 Magento 2

在 Magento 2 根目录中打开 app/design/frontend/<Vendor>/<Theme>/requirejs-config.js 文件,并添加以下代码:

var config = {
  map: {
    '*': {
      custom: 'js/custom',
      less: 'js/less'
    }
  },
  paths: {
    less: 'js/less',
    lessc: 'js/lessc.min',
    lessOpts: 'js/lessOpts'
  },
  shim: {
    lessc: {
      exports: 'less'
    },
    lessOpts: {
      deps: ['lessc']
    }
  },
  config: {
    mixins: {
      'mage/apply/main': {
        'js/apply-mixin': true
      }
    }
  }
};

这个代码将 less 和 lessc 库添加到 Magento 2 的 JavaScript 依赖项中,并配置了 apply-mixin。

创建 LESS 编译器

在 Magento 2 根目录中创建一个名为 app/design/frontend/<Vendor>/<Theme>/web/js/less.js 的文件,并添加以下代码:

define([
  'jquery',
  'lessc',
  'lessOpts'
], function($, lessc, lessOpts) {
  'use strict';
  $.widget('custom.less', {
    options: {
      lessUrl: '/<Vendor>/<Theme>/en_US/css/custom.less'
    },
    _create: function() {
      var self = this;
      var lessUrl = this.options.lessUrl;
      $.ajax({
        url: lessUrl,
        dataType: 'text',
        success: function(data) {
          lessc.render(data, lessOpts, function(css) {
            $('head').append('<style>' + css + '</style>');
          });
        }
      });
    }
  });
  return $.custom.less;
});

这个代码定义了一个名为 less 的 JavaScript 模块,并使用它来加载、编译和注入自定义 LESS 样式表。

添加 apply-mixin

在 Magento 2 根目录中创建一个名为 app/design/frontend/<Vendor>/<Theme>/web/js/apply-mixin.js 的文件,并添加以下代码:

define([
  'jquery',
  'mage/apply/main'
], function($, mageApply) {
  'use strict';
  return function(target) {
    $.widget('mage.apply', target, {
      _loadFiles: function(files, callback) {
      var lessFile = files.filter(function(file) {
      return file.indexOf('custom.less') !== -1;
    })[0];
    if (lessFile) {
      require(['less'], function(less) {
        require(['lessOpts'], function(lessOpts) {
          less.render('@import "' + lessFile + '";', lessOpts, function(css) {
            $('head').append('<style>' + css.css + '</style>');
            callback(files);
          });
        });
      });
    } else {
      this._super(files, callback);
    }
  }
});
return target;
};
});

这个代码添加了一个名为 `apply-mixin` 的 Magento 2 mixins,并使用它来加载、编译和注入自定义 LESS 样式表。

5. 保存文件并清除缓存

保存文件后,需要清除 Magento 2 的缓存,以便应用更改。可以通过在命令行中运行以下命令来清除缓存:

php bin/magento cache:clean

Copy code

现在,您可以使用自定义 CSS 预处理器来开发 Magento 2 主题。


推荐文章