Personnalisation
Il existe de nombreuses façons de personnaliser un thème, et Grav ne limite vraiment pas votre créativité à ce sujet. Cependant, il existe plusieurs fonctionnalités et certaines fonctionnalités fournies par Grav pour faciliter ce processus.
CSS personnalisé
Le moyen le plus simple de personnaliser un thème consiste à fournir votre propre fichier custom.css
. Le thème par défaut de Quark fournit une référence à un fichier css/custom.css
via Asset Manager. Heureusement, Asset Manager s'en charge pour nous, et si le fichier n'est pas trouvé, la référence n'est pas ajoutée au HTML.
Cependant, si vous fournissez un fichier appelé custom.css
dans le dossier css/
de Quark, il sera récupéré et référencé. Vous devez juste vous assurer que vous fournissez des éléments CSS avec suffisamment de spécificité pour remplacer le CSS par défaut. Par exemple:
SCSS/LESS personnalisé
1 | body a {
2 | color: #CC0000;
3 | }
Cela remplacera la couleur de lien par défaut et utilisera une couleur rouge à la place.
SCSS/LESS personnalisé
La prochaine étape après avoir fourni un fichier CSS personnalisé consiste à utiliser un fichier _custom.scss
. Quark est écrit à l'aide de SCSS, qui est un préprocesseur compatible CSS qui vous permet d'écrire du CSS plus efficacement via l'utilisation de variables, de structures imbriquées, de partiels, d'importations, d'opérateurs et de mix-ins.
Cela peut sembler un peu intimidant au début, mais vous pouvez utiliser autant ou aussi peu de SCSS que vous le souhaitez, et une fois que vous aurez commencé, vous aurez du mal à revenir au CSS traditionnel. Promis !
Le thème Quark a un dossier scss/
qui contient une variété de fichiers .scss
. Ceux-ci doivent être compilés dans le dossier css-compiled/
.
Vous pouvez créer un fichier appelé scss/theme/_custom.scss
et l'importer dans le fichier theme.scss
en bas en utilisant @import 'theme/custom';
. Il y a plusieurs grands avantages à mettre votre code dans ce fichier :
- Les modifications résultantes seront compilées dans le fichier
css-compiled/theme.min.css
avec tous les autres CSS. - Vous avez accès à toutes les variables et mix-ins disponibles pour l'un des autres SCSS utilisés dans le thème.
- Vous avez accès à toutes les fonctionnalités et fonctionnalités SCSS standard pour faciliter le développement.
Un exemple de ce fichier serait :
_custom.scss
1 | body {
2 | a {
3 | color: darken($core-accent, 30%);
4 | }
5 | }
L'inconvénient de cette approche est que ce fichier est écrasé lors de toute mise à niveau de thème, vous devez donc vous assurer de créer une sauvegarde de tout travail personnalisé que vous effectuez. Ce problème est résolu en utilisant l'héritage de thème comme décrit ci-dessous.
Wellington SCSS
Wellington est un wrapper natif pour libsass disponible pour Linux et MacOS. Il fournit une solution beaucoup plus rapide pour compiler SCSS que le compilateur scss basé sur Ruby par défaut. Par plus rapide, nous entendons environ 20 fois plus rapide !. C'est super facile à installer (via brew):
$ | brew install wellington
Pour en profiter pour compiler un dossier scss
dans un css-compiled
par css comme dans l'exemple ci-dessus, vous pouvez utiliser ce gist.
Héritage du thème
C'est l'approche préférée pour modifier ou personnaliser un thème, mais cela nécessite un peu plus de configuration.
Le concept de base est que vous définissez un thème comme le thème de base dont vous héritez, et ne fournissez que les éléments que vous souhaitez modifier et laissez le thème de base gérer le reste. Le grand avantage de cela est que vous pouvez plus facilement maintenir le thème de base à jour et à jour sans affecter directement votre thème hérité personnalisé.
Il existe deux manières d'hériter d'un thème existant :
- Utilisation de l'interface de ligne de commande (CLI) avec le plug-in DevTools.
- Manuellement.
Héritage à l'aide de la CLI
Comme indiqué dans le didacticiel sur les thèmes, vous pouvez créer un nouveau thème à l'aide du plug-in DevTools. Mais vous pouvez aussi hériter d'un thème existant. La procédure est simple.
- Installez le plugin DevTools si ce n'est déjà fait.
- Suivez ensuite la procédure créer un thème de base, mais lorsqu'on vous demande de choisir un type de modèle (
Please choose a template type
) , tapez héritage (inheritance
). Si Quark est le seul thème, il sera affiché en tant qu'option 0. Tapez donc0
pour hériter de Quark. Votre nouveau thème hérité sera créé. - Copiez toutes les options du fichier YAML du thème dont vous héritez (ou du dossier
user/config/themes
si vous l'avez personnalisé) en haut du fichier de configuration YAML nouvellement créé de votre thème :/user/themes/mytheme/ mythème.yaml
. - Copiez la section "form" du fichier
/user/themes/quark/blueprints.yaml
dansuser/themes/mytheme/blueprints.yaml
afin d'inclure les éléments personnalisables du thème dans l'admin. (Ou remplacez simplement le fichier et modifiez son contenu.) - Modifiez votre thème par défaut pour utiliser votre nouveau mytheme en éditant l'option
pages : thème :
dans votre fichier de configurationuser/config/system.yaml
:
1 | pages :
2 | thème : mythème
Héritage manuel
Pour y parvenir, vous devez suivre ces étapes :
-
Créez un nouveau dossier :
user/themes/mytheme
pour héberger votre nouveau thème. -
Copiez le fichier YAML du thème du thème dont vous héritez (ou du dossier
user/config/themes
si vous l'avez personnalisé) dans/user/themes/mytheme/mytheme.yaml
et ajoutez le contenu suivant (en remplaçantuser/themes/quark
avec le nom du thème dont vous héritez) :
1 | streams:
2 | schemes:
3 | theme:
4 | type: ReadOnlyStream
5 | prefixes:
6 | '':
7 | - user/themes/mytheme
8 | - user/themes/quark
-
Copiez le fichier
/user/themes/quark/blueprints.yaml
dans/user/themes/mytheme/blueprints.yaml
afin d'inclure les éléments personnalisables du thème dans l'admin. -
Modifiez votre thème par défaut pour utiliser votre nouveau mytheme en éditant l'option
pages : thème :
dans votre fichier de configurationuser/config/system.yaml :
1 | pages :
2 | thème : mythème
- Créez un nouveau fichier de classe de thème qui peut être utilisé pour ajouter des fonctionnalités avancées pilotées par les événements. Créez un fichier
user/themes/mytheme/mytheme.php
:
1 | <?php
2 | namespace Grav\Theme;
3 |
4 | class Mytheme extends Quark
5 | {
6 | // Some new methods, properties etc.
7 | }
8 | ?>
Vous avez maintenant créé un nouveau thème appelé mytheme et configuré les flux de sorte qu'il regarde d'abord dans le thème mytheme, puis essaie quark. Donc, en substance, Quark est le thème de base de ce nouveau thème.
Vous pouvez ensuite fournir uniquement les fichiers dont vous avez besoin, y compris JS, CSS ou même des modifications aux fichiers de modèle Twig si vous le souhaitez.
Utilisation de SCSS
Afin de modifier des fichiers SCSS spécifiques, nous devons utiliser une petite configuration pour qu'il sache d'abord regarder dans votre nouvel emplacement mytheme
, puis quark
ensuite. Cela nécessite plusieurs choses.
- Tout d'abord, vous devez copier le fichier SCSS principal de quark qui contient tous les appels
@import
pour divers sous-fichiers. Donc, copiez le fichiertheme.scss
dequark/scss/
vers le dossiermytheme/scss/
. - Dans le fichier
theme.scss
, remplacez le début de toutes les lignes d'importation par@import '../../quark/scss/theme/';
il saura donc utiliser les fichiers du thème quark. Ainsi, par exemple, la première ligne sera@import '../../quark/scss/theme/variables';
. - Ajoutez
@import 'theme/custom';
tout en bas du fichiertheme.scss
. - L'étape suivante consiste à créer un fichier situé dans
mytheme/scss/theme/_custom.scss
. C'est là que vos modifications iront. - Copiez les fichiers
gulpfile.js
etpackage.json
dans le dossier de base du nouveau thème.
Afin de compiler le nouveau scss pour le mytheme, vous devrez ouvrir un terminal et accéder au dossier du thème. Quark utilise gulp pour compiler le sass, vous aurez donc besoin de ceux installés et du fil pour les dépendances. Exécutez npm install -g gulp, yarn install
, puis gulp watch
. Désormais, toutes les modifications apportées aux fichiers seront recompilées.