这里有一个公认的答案,但我不认为它回答了这个问题,而是提供了一个替代解决方案。这绝对没问题,我并不是要侮辱任何人,但这里没有的是关于add_import_path
它对你有什么作用的信息。
如果有人曾经在 Magento 工作过,那么您就会熟悉它用于主题和模板文件的后备结构。为了设置使用相同默认皮肤的多个商店,我们需要包含一个备用结构,该结构允许在预定义的层次结构上进行更改。所以检查 dis config.rb 文件
myThemeA - config.rb
require "font-awesome-sass"
http_path = "/skin/frontend/rwd/myThemeA/"
add_import_path "../../../rwd/default/scss"
css_dir = "../css"
sass_dir = "../scss"
images_dir = "../images"
javascripts_dir = "../js"
fonts_dir = "../css/fonts"
relative_assets = true
output_style = :expanded
environment = :production
sourcemap = true
myThemeB - config.rb
require "font-awesome-sass"
http_path = "/skin/frontend/rwd/myThemeB/"
add_import_path "../../../rwd/default/scss"
additional_import_paths = ["../../../rwd/myThemeA/scss"]
css_dir = "../css"
sass_dir = "../scss"
images_dir = "../images"
javascripts_dir = "../js"
fonts_dir = "../../myThemeA/css/fonts"
relative_assets = true
output_style = :expanded
environment = :production
sourcemap = true
所以这里的想法是我们有三个皮肤,我们可以使用导入路径只覆盖某些文件,而不是在每个皮肤中包含每个文件。这也意味着,当我们想要进行全局更改时,取决于我们更改的内容,我们没有进行 3 次更改——只有在它的依赖项位于链中的位置。
所以...
默认是所有皮肤的基础
myThemeA本身就是皮肤,并使用默认值作为默认值
myThemeB使用 myThemeA 作为默认值,而 myThemeA 使用 default 作为默认值。
add_import_path
使这项工作有效的是和的放置additional_import_paths
。本质上,它add_import_path
首先使用定义的作为默认值,然后随后的additional_import_paths
数组将覆盖 in 中的add_import_path
内容,但是任何未包含在附加值中的内容,它将在默认值中查找。
希望这对寻找有关导入路径的更多信息的任何人都有意义。