Où placer ses feuilles de styles CSS ?

Dans un projet Kirby, vous êtes libre d'organiser et de placer vos fichiers CSS où bon vous semble dans votre architecture de fichiers si il s'agit de styles que vous souhaitez appliquer globalement.

Personnellement, je suis l'organisation proposée dans le Starterkit de Kirby et je place mes feuiles de styles globales dans un dossier : /assets/css/

Dans certains cas particulier, vous pourriez avoir besoin d'appliquer des styles CSS que pour des templates spécifiques. Il sera alors nécessaire de placer ces feuilles de styles dans un dossier /assets/css/templates/, nous verrons plus en détail cette particularité un peu plus loin dans cet article.

La fonction CSS()

Kirby nous propose une liste de fonctions d'aide dites "helpers" que vous pouvez utiliser dans vos templates, controllers ou snippets. Libre à vous d'en faire usage ou pas mais personnellement je les trouve très pratiques. Parmi ces fonctions "helpers", on trouve la fonction css() que nous allons détailler ici.

Cette fonction permet de gérer l'appel des fichiers CSS dans notre projet. On l'utilisera le plus souvent dans un fichier snippet "header" /site/snippets/header.php Elle générera une balise <link> avec l'appel de la ou des feuilles de styles indiquées en paramètres.

Cette fonction accepte deux paramètres : $url et $options. Seul le premier paramètre $url est obligatoire.

Paramètre Usage
$url URL absolue ou relative de la feuille de style, tableau d'URLs ou instruction @auto pour charger automatiquement des styles de templates.
$options Attribut de média ou tableau d'attributs custom.

Exemples d'utilisation :

Appeler une feuille de style globale

// /site/snippets/header.php

<?= css('assets/css/styles.css') ?>

Appeler plusieurs feuilles de styles globales

// /site/snippets/header.php

<?= css([
  'assets/css/reset.css',
  'assets/css/tailwind.css',
  'assets/css/styles.css'
]) ?>
Les feuilles de styles seront appelées dans l'ordre dans lequel elles sont déclarées en paramètres de la fonction css().

Appeler des feuilles de styles spécifiques à un template

// /site/snippets/header.php

<?= css( @auto ) ?>

Grâce au mot clé @auto , il est possible de charger une feuille de styles uniquement lorsque qu'un template particulier est utilisé pour afficher une page. Pour cela, la feuille de style doit suivre les règles suivantes :

  • Elle doit être stockée dans un dossier /assets/css/templates/

  • Elle doit être nommée de la même manière que le template auquel elle doit s'appliquer

Template Feuille de styles
/site/templates/home.php /assets/css/templates/home.css

Il est aussi possible d'appeler des feuilles de styles pour des pages spécifiques qui partagent le même template en passant en paramètre de la fonction css() l'URL de façon dynamique.

Passer un attribut media à la balise <link>

// /site/snippets/header.php

<?= css('assets/css/print.css', 'print') ?>

Dans cet exemple un attribut media='print' sera ajouté à la balise <link> générée par la fonction css()

// Code généré par la fonction css() dans le rendu de la page

<link rel="stylesheet" type="text/css" href="print.css" media="print">

La vidéo YouTube

En cours de tournage ...