dans un composant de thème, qui affiche une image (chapeau) à l’écran
pour utiliser une image en scss, cela fonctionne directement avec son nom d’actif comme ceci,
ces images sont définies dans about.json
{
"name": "christmas-decorations",
"about_url": "",
"license_url": "",
"author": "",
"assets": {
"red-hat1": "assets/decorations/red-hat1.png",
"red-hat2": "assets/decorations/red-hat2.png",
"squirrel2": "assets/decorations/squirrel2.png"
}
}
pour utiliser ces images en scss, cela fonctionne bien si vous utilisez directement le nom de l’actif comme ceci
background: transparent url($red-hat1) top left no-repeat;
Je veux ajouter un paramètre pour choisir une image.
dans settings.yml, j’ai ceci, pour sélectionner une image de chapeau à afficher à l’écran
hat_type:
default: red-hat1
type: enum
choices:
- red-hat1
- red-hat2
- squirrel2
Je pourrais faire un if else dans le scss pour utiliser l’image, mais ce bloc if else pourrait être trop long …
@if $hat_type == "red-hat1" {
background: url($red-hat1) no-repeat center;
} @else if $hat_type == "red-hat2" {
background: url($red-hat2) no-repeat center;
} @else if $hat_type == "squirrel2" {
background: url($squirrel2) no-repeat center;
}
J’ai essayé d’utiliser une fonction en scss
background: url(get_image($hat_type)) no-repeat center;
@function get_image($name){
@return "assets/decorations/" + $name + ".png"
}
mais cela donne une url comme
https://www.domain.com/stylesheets/assets/decorations/squirrel2.png
cela ne fonctionne pas, cela devrait plutôt être résolu comme ceci…
https://www.domain.com/uploads/db9860/original/3X/9/1/91d36fdb030047c6390f9ca85604fdbfd2e3fc12.png
quelqu’un pourrait donner une piste, merci beaucoup
…


