Thème Shopify avec boussole et Sass

quelqu'un a-t-il un workflow pour développer des thèmes Shopify avec Compass et Sass? Je suis vraiment proche, j'ai juste besoin de comprendre comment ne pas faire Sass barf sur les étiquettes CSS liquid.

Voici ce que j'ai:

  • Un sass/compass projet dans le répertoire (ex:, "/newwebsite/)
  • un sous-répertoire contenant mon thème Shopify ("/newwebsite/newwebsite-theme/")
  • Une Boussole config.rb qui pointe le css, _dir images_dir et javascripts_dir all pour les actifs du dossier ("/newwebsite/newwebsite-thème/assets/")
  • montre Compass sur
  • shopify_theme gem aussi regarder sur la, le téléchargement de fichiers de thème à shopify (https://github.com/Shopify/shopify_theme)
  • MODIFIER Sass interpolation (voir anser ci-dessous)
  • modifier le rappel de Compass pour le renommer en .CSS.liquide

le problème: Compass barf's quand vous avez besoin D'utiliser les balises liquid templating de Shopify, par exemple, une image de fond - exemple, background: url ("{{"splash-1.jpg " / asset_url }}")

est-ce que quelqu'un sait comment donner des instructions à Compass / Sass pour cracher les étiquettes de modèle de liquide comme ils sont dans la CSS? Si j'ai cela, alors j'ai un flux de travail solide d'édition de Sass localement, et de réaliser les changements momentanément après sur la boutique shopify.

Merci

modifier: En utilisant la réponse de Hopper ci-dessous pour les étiquettes liquides dans Sass, et en renommant la sortie Compass .fichier css .CSS.liquide, j'ai maintenant avoir un flux de travail instantané pour concevoir un thème Shopify avec Compass et Sass! Voici le code pour le rappel de la boussole qui va dans la configuration.rb:

on_stylesheet_saved do |filename|
  s = filename + ".liquid"
  puts "copying to: " + s
  FileUtils.cp(filename, s)
  puts "removing: " + filename
end
26
demandé sur AlfonsoML 2012-06-28 07:43:36

9 réponses

Je ne suis pas familier avec les étiquettes Shopify ou liquide, mais je sais que dans SASS vous pouvez utiliser interpolations à la sortie de la plaine CSS-est. Par exemple, le SASS ici:

.test {
    background: url( #{'{{ "splash-1.jpg" | asset_url }}'} )
}

Serait compilé:

.test {
    background: url({{ "splash-1.jpg" | asset_url }}); }

est ce que vous obtenez près de ce que vous recherchez?

22
répondu hopper 2012-06-28 15:06:09

comment empêcher Compass d'aboyer sur la logique liquide entre les propriétés? Par exemple: chaque fois qu'il y a un liquide if j'ai des erreurs, et à l'aide de #{'...'} ne semble pas aider.

Ceci est un test, je ne peux pas vous mettre au travail:

#container {
  width:884px;
  margin:0px auto;
  min-height:500px;
  position:relative;
  padding:0 40px;
  {% if settings.page_bg_transparent %}
    background:transparent;
  {% else %}
    background:{{ settings.page_bg_color }};
  {% endif %}
}

UPDATE bizarrement, les commentaires de liquide logique fonctionne:

#container {
  width:884px;
  margin:0px auto;
  min-height:500px;
  position:relative;
  padding:0 40px; 
  /* {% if settings.page_bg_transparent %} */
    background:transparent;
  /* {% else %} */
    background:#{'{{ settings.page_bg_color }}'}; 
  /* {% endif %} */
}
10
répondu rda3000 2012-10-05 03:30:48

pour l'url des ressources, vous pouvez aussi utiliser SCSS fonctions personnalisées. Mettez ceci dans votre config.rb le fichier

module Sass::Script::Functions
  def shopify_image_url(string)
    assert_type string, :String
    Sass::Script::String.new("url({{'#{string.value}' | asset_url}})")
  end
end

Et ensuite l'utiliser dans votre les styles.scss comme ceci

background: shopify_image_url('image.png');
2
répondu Vitaliy Z 2013-05-28 14:18:12

j'ai trouvé utile de supprimer le fichier de sortie original après l'enregistrer pour que vous n'ayez pas ce fichier supplémentaire, non liquide flottant dans le dir des actifs.

on_stylesheet_saved do |filename|
  s = filename + ".liquid"
  puts "copying to: " + s
  FileUtils.cp(filename, s)
  puts "removing: " + filename
  FileUtils.remove_file(filename)
end
1
répondu Rodrigo Garcia Najera 2014-02-07 05:27:13

en S'appuyant sur la réponse de hopper, pour quiconque utilise autoprefixer pour traiter la sortie sass, vous devez ajouter une paire de guillemets supplémentaires parce que url( {{ ... }} ) provoque l'étouffement de l'analyseur du pilote automatique.

Faire ceci:

background: url( "#{'{{ "splash-1.jpg" | asset_url }}'}" )

qui devient ceci dans le *.css.liquid fichier :

background: url( '{{ "splash-1.jpg" | asset_url }}' )
1
répondu CheapSteaks 2014-04-25 16:15:14

si vous souhaitez préserver le ".scss.extension liquid" pour la nouvelle utilisation responsive checkout:

on_stylesheet_saved do |filename|
  FileUtils.mv filename, "#{File.dirname(filename)}/#{File.basename(filename,'.*')}.scss.liquid"
end

il renomme les fichiers au lieu de les copier et de les supprimer.

1
répondu Ilia luk 2014-12-21 11:45:18

j'ai écrit un article décrivant les méthodes que J'ai utilisées pour obtenir Compass et Sass bien travailler avec Shopify. C'est la même approche de la réponse de DOMUSNETWORK. Je vais dans un peu plus de détails sur la structure des fichiers.

http://www.mealeydev.com/blog/shopify-and-sass/

1
répondu nick 2015-02-28 15:53:44

cela a fonctionné pour moi, en partie-cependant j'ai trouvé que le thème Shopify app beaucoup de fois ne voulait pas télécharger mon Edité .CSS.liquid file, parce qu'apparemment il n'a pas reconnu que le fichier avait été édité.

ce qui l'a résolu pour moi était d'utiliser le code suivant dans ma configuration.rb, au lieu du code dans la question ci-dessus:

on_stylesheet_saved do |filename|
  move_to = filename + ".liquid"
  puts "Moving from #{filename} to #{move_to}"
  FileUtils.mv(filename, move_to)
end
0
répondu Rinocerontes 2013-10-15 07:32:10

plug sans vergogne...

je pense que @nick est sur la bonne voie.

scss est meilleur quand il est compilé avant l'envoi à Shopify.

Pour les autres qui trouvent cette réponse, je pense que Quickshot est l'outil que vous recherchez.

vous aurez toujours besoin d'interpoler les urls des actifs, mais quickshot va automatiquement recompiler votre scss et télécharger le résultat pour shopify en une seule étape. Qui vous donne également la possibilité d'utiliser @include dans votre scss fichier.

http://quickshot.io/

https://github.com/internalfx/quickshot

0
répondu InternalFX 2015-04-10 19:18:25