Alors que les thèmes deviennent plus ambitieux, nous cherchons des moyens de leur permettre de manipuler le comportement principal côté serveur. Bien qu’ils ne disposeront jamais du même niveau de contrôle que les plugins, nous pouvons fournir quelques crochets prédéfinis que les thèmes peuvent manipuler.
Présentation des modificateurs de thème ![]()
Ils sont spécifiés en utilisant la clé modifiers dans le fichier about.json de votre thème.
Pour une liste complète et à jour des modificateurs, consultez le schéma de base de données au bas de theme_modifier_set.rb, mais voici un bref résumé de ce que nous avons jusqu’à présent :
-
serialize_topic_excerptsbooléen (défaut faux) - inclure toujours des extraits lors de la sérialisation des listes de sujets -
csp_extensionstableau de chaînes - ajouter des directives au CSP. Fonctionne de la même manière que l’ancienne méthode de paramètre de thème “extend_content_security_policy”. Mais rappelez-vous, les balises simples\u003cscript src=\"\"\u003esont automatiquement autorisées. -
svg_iconstableau de chaînes - une liste d’icônes qui doivent être incluses dans le sous-ensemble d’icônes -
topic thumbnailstableau de dimensions - demander des résolutions supplémentaires dans l’ensemble de miniatures de sujet. Notez qu’elles sont générées de manière asynchrone, vous devez donc revenir à l’image d’origine si la taille demandée n’est pas fournie. Plus d’informations disponibles dans le message de commit -
serialize_post_user_badgestableau de chaînes - une liste de noms d’insignes (correspondant aux entrées dans la tablebadges) à sérialiser avec les données de publication. Lorsqu’il est configuré, le système inclut les badges d’utilisateur spécifiés avec chaque publication pour le rendu côté client.
Un thème qui utilise intensivement ces nouveaux crochets est Topic List Thumbnails - consultez le code pour voir comment il fonctionne.
Modificateurs dépendants des paramètres
Les modificateurs de thème peuvent également être configurés pour extraire leur valeur d’un paramètre de thème, permettant aux opérateurs de site de remplacer le comportement du modificateur sans modifier le code du thème. Pour qu’un modificateur dépende d’un paramètre, utilisez cette syntaxe dans votre about.json :
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
Par exemple, si vous avez un paramètre de thème appelé show_excerpts et que vous souhaitez qu’il contrôle le modificateur serialize_topic_excerpts :
Dans settings.yml :
show_excerpts:
default: false
Dans about.json :
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
Lorsque le paramètre show_excerpts est modifié, la valeur du modificateur sera automatiquement mise à jour pour correspondre. Cela offre une flexibilité aux opérateurs de site pour personnaliser le comportement du thème via l’interface d’administration.
Ce document est contrôlé par version - suggérez des modifications sur github.
