css-Klassen in Simplicity einfügen in Abhängigkeit der aufgerufenen Seite | Forum

Position: Forum » Erweiterungen » Themes
pomuli Mär 3 '16
Hallo,

ich habe versucht, das Simplicity-Theme anzupassen und das eintönige Weiß etwas farbiger zu gestalten. Doch ich bräuchte weitere css-Klassen und zwar in Abhängigkeit, wo ich mich gerade befinde: Im Stream, Dashboard, Forum, Blog, Veranstaltungen usw., denn die css-Struktur ist praktisch immer identisch und ich kann so nicht unterscheiden, wo ich bin.

Kann ich denn im Theme-Ordner weitere Dateien unter /ow_themes/simplicity/master_pages für jeden Bereich anlegen? Falls ja, welche Dateinamen nimmt man da und gibt es dafür Vorlagen? Ich fand dazu leider kein Beispiel, um es abzuschauen.

Nimmt man hier evtl. die Dateien unter /ow_system_plugins/base/views/components/ oder gibt es woanders die Systemvorlagen?

Vielen Dank!
Revofire Mär 4 '16
Beim Simplicity-Theme wurde mir auch schon recht schwindelig, freihändig schaut man da die ersten 2-3 mal nicht gleich durch. Das einfachste aus meiner Sicht ist wie du schon angeführt hast über /ow_system_plugins/base/views/components/ neue separate Klassen im jeweiligen Dokument anzufügen.
pomuli Mär 4 '16
Das Problem ist: In welchen Dateien? Ich fand bisher keinen Zusammenhang, z.B. zu {content}. Aber ich hatte eben eine Idee, die ich noch testen muss:

In general.html steht:
<h1 class="ow_stdmargin {$heading_icon_class}">{$heading}</h1>

Das {$heading_icon_class} ist offenbar eindeutig, sodass ich z.B. sowas machen könnte:

<div class="ow_content bereich-{$heading_icon_class}">

Damit hätte ich prinzipiell, was ich suche, auch wenn ich danach trotzdem noch per css pfuschen müsste. Aber besser als gar nichts.

Irgendwie scheint mir das Oxwall System praktisch gänzlich undokumentiert zu sein und sonderlich viel tut sich offenbar auch nicht mehr. Ob ich da wohl auf das richtige Pferd gesetzt habe?
Team
Leo Mär 8 '16
{$heading_icon_class} beschreibt lediglich die CSS-Klasse des Menüsymbols der Seitenüberschrift und hat nichts mit dem Menü zu tun. Allerdings hat auch jeder Menüeintrag eine eindeutige CSS-Klasse (z.B. "base_page_123456789"). Du kannst in der Datei ow_core/html_document.php eine Abfrage einfügen, die dir die aktuelle CSS-Klasse ermittelt und in Abhängigkeit davon per assign diese Angaben an die HTML-Dateien übergeben.
pomuli Mär 8 '16
Danke für die Info. Es geht mir eigentlich auch nicht um das Menü, sondern nur darum, eine für die jeweilige Seite eindeutige css-Klasse zu bekommen. Selbst mit der obigen Lösung von heading_icon_class habe ich das Problem, dass viele Seiten dieselbe Klasse haben, ich aber jeweils andere css-Eigenschaften brauche und das eben leider nicht unterscheiden kann.

Würde das mit base_page_123456789 gehen? Ich bräuchte einfach nur eine Variable, die mir eindeutig sagt, wo ich auf der Seite bin, die aber nicht vom Menü abhängt und bei denselben Inhalten sich auch nicht unterscheidet (z.B. sollen natürlich alle Profilseiten immer dieselbe Variable (die ich dann als Klasse verwende) haben und nicht je User unterschiedlich sein. Weißt Du, was ich meine?
Team
Leo Mär 9 '16
Wie bereits geschrieben, musst du die CSS-Klasse jedes Menüeintrages abfragen und kannst dann deine Angaben per assign steuern.
pomuli Mär 9 '16
D.h. also, jede Seite, ob im Menü oder nicht, hat so eine Klasse?

Gibt es einen besseren Weg, als das im Core zu ändern? Wenn mal ein Update kommt, ist das ja schlecht. Ich habe in der Doku nichts dazu gefunden, wie man das im Theme selbst machen könnte, dort gibt es offenbar nur diese 5 fixen HTML-Dateien.
Team
Leo Mär 11 '16
Öffne einmal den Quellcode deiner Seite oder untersuche die Menüeinträge mit einem entsprechenden Tool. Dort siehst du, dass jeder Eintrag eine eigene Klasse hat.

Wie in post 3472 geschrieben, kannst du so verfahren.

Du hast auch die Möglichkeit, ein eigenes Plugin zu schreiben, dass in oder mithilfe der Datei init.php prüft, auf welcher Seite du dich befindest und in Abhängigkeit davon CSS-Klassen implementiert oder verändert.
pomuli Mär 11 '16
Vielen Dank.