Hallo.
Ich portiere ein älteres Forum auf Discourse und die ursprüngliche Seite hatte ein einzigartiges Theme (einschließlich eines einzigartigen Header-Logos) für eine ihrer Kategorien.
Meine aktuelle Lösung ist eine Theme-Komponente, die ungefähr so aussieht:
CSS:
body.category-target-category{
/// Ersetzen Sie die #hexcodes durch die Farbwerte Ihrer Wahl
--primary: #primaryhexcode;
--secondary: #secondaryhexcode;
--tertiary: #tertiaryhexcode;
/// Fahren Sie für alle erforderlichen Farbwerte fort
}
HTML/JS:
<script type="text/discourse-plugin" version="0.2.0">
api.onPageChange(() => {
var logo = document.getElementById("site-logo");
var categories = document.getElementsByClassName("category-target-category");
if(categories.length > 0)
{
logo.src = "category-specific-logo-url";
}
else
{
logo.src = "standard-logo-url";
}
});
</script>
Derzeit muss ich jeden möglichen Farbwert in color_definitions.scss durchgehen, um sie zu überschreiben. Ich glaube, dass die Werte für diese Datei aus foundation/color_transformations.scss stammen, die sie aus den Werten in foundation/colors.scss generiert. Ich weiß, dass man die Root-Farbschemewerte entweder über das Admin-Menü oder in der about.json der Theme-Komponente überschreiben kann, aber ich glaube, dass diese Änderungen seitenweit erfolgen.
Gibt es eine effizientere Möglichkeit, eine bestimmte Kategorie anzupassen, anstatt alle über 100 Variablen in color_definitions.scss aufzulisten? Könnte beispielsweise die Datei foundation/colors.scss über eine Theme-Komponente modifiziert werden?
Vielen Dank für Ihre Hilfe!