Jump to content

Themes


GELight

Recommended Posts

Hallo alle zusammen,

 

Ich möchte mir anfangen ein eigenes möglichst sauberes Theme zu erzeugen.

Die Regeln mit der Überladung der bestehenden Module und CSS Files vom Rool-"Modules" Verzeichnis kenne ich.

 

Ich möchte in meinem Theme gern die CSS Dinge wie auch Templates etwas sauberer umsetzen und nicht alles zigfach anlegen und hätte jetzt die Frage was ich tun muss, damit ich am Ende evtl, nur noch 2 oder 3 CSS Files habe und nicht 20, wie im CSS Verzeichnis zu sehen.

 

Bei den Modules die im Root existieren, muss ich dazu vermutlich sämtliche CSS Files im Themes Verzeichnis neu anlegen und einfach leer lassen oder gibts noch andere Möglichkeiten?

 

Die Templates überlade ich im Theme/Modules Verzeichnis ganz normal und passe sie mir an.

Bleibt also nur noch die Frage zu den CSS Sachen.

 

Dank euch für Tipps,

Gruß Mario

Link to comment
Share on other sites

Tja, Mario, und wozu genau soll das gut sein? Was meinst du denn mit einem 'sauberen Theme'?

 

Ich weiß ja nicht, was du mit Überladung meinst. Den Ausdruck kenne ich leider nicht.

Was machst du denn mit den CSS-Styles der Module? Willst du die etwa auch alle zusammenfassen? Dann musst du aber viele neue Styles kreieren, weil ja nichts mehr überschrieben werden darf. Denn im Gegensatz zu deiner Zählung komme ich in einem normalen Shop auf mehr als das 10fache an CSS-Dateien. Zähl sie mal richtig durch. :) Es gibt noch erheblich mehr als die paar im CSS-Verzeichnis.

 

Sei mir bitte nicht böse, aber das hört sich für mich irgendwie so an, als wolle jemand das Rad noch mal neu erfinden.

 

Gruß

eleazar

Link to comment
Share on other sites

Hi Eleazar,

 

Und nimm es "mir" bitte auch nicht übel aber 100 CSS Files um einen Shop zu stylen ist schon sehr am Sinn von CSS vorbei. :)

Ich muss beruflich an einem weitaus größerem und komplexeren Shop-System arbeiten und hier hat sich eben herauskristallisiert, dass der Weg der "vielen" CSS Files keine gute Wahl ist. Zumindest nicht, wenn man mehr als 1 Person ist, die damit arbeiten muss.

 

Mit Überladung bezeichnet man oft diese Technik des Überschreibens von Dateien wie bei den Templates oder CSS Dateien hier.

Und ja, ich meinte tatsächlich mit "sauberem" Theme, dass ich die bestehenden CSS Files der Module die ich benötige, zusammenführen möchte in wenige oder gar nur eine CSS Datei.

Da es absolut nicht notwendig ist sowas gänzlich zu trennen, solange es keine deutlichen Unterschiede zum Rest gibt.

Und wenn man mit CSS wirklich vertraut ist und dementsprechend natürlich auch die Template ( HTML ) Struktur der Templates der Module vereinfachen würde ( was ich vor habe ), kommt mit wesentlich weniger CSS aus als ich hier bislang sehen konnte.

 

Aber um auf meine Frage zurück zu kommen:

 

Ich möchte am Ende "förmlich" nur 3 - 4 Files haben..... zB. reset.css, styles.css, print.css und mobile.css

Und mit Rad neu erfinden hat das wirklich nun nichts zu tun, da es ehr eine Optimierung sein soll.

 

Der Shop ansich ist echt Top (aus dem Grund möchte ich ihn ja verwenden :) ) und ich verstehe natürlich auch den Sinn, warum ein Modul seine eigene CSS mitbringt. Allerdings wenn ich "das bestehende" CSS im Gesamten betrachte, werden hier Dinge unnötig zig mal mit verschiedenen Klassennamen definiert und ich will das einfach nur mal für mich vereinfachen/zusammenführen/säubern ... :)

 

In dem Sample-Theme, welches ich auf einer der Presta Seiten gefunden hatte, waren halt wesentlich weniger CSS Files vorhanden... und zwar ohne, dass sämtliche verwendeten Module einzeln mit leeren CSS Files überschrieben werden mussten.

Meine Frage bezieht sich also darauf, ob ich hier etwas übersehen habe bzw. wie man evtl. die CSS Files der installierten Module, die eben nicht im Themesverzeichnis liegen, ignoriert bekommt?!.

 

Gruß Mario

Link to comment
Share on other sites

Hi Mario,

 

ach so. Na ja, dann meinst du vermutlich das, was hier normalerweise als Override bezeichnet wird. :)

 

Die css-Styles der Module werden nur dann ignoriert, wenn sie nicht im Modulverzeichnis - egal ob im Hauptverzeicnis oder unter dem Template-Verzeichnis - vorhanden sind. Überschreiben mit leeren Files ist nicht nötig.

 

Gruß

eleazar

Link to comment
Share on other sites

Hi eleazar,

 

Alles klar... dann also hier "Override". :)

Das macht für mich gerade keinen Sinn irgendwie oder ich versteh deinen Satz falsch.

 

### Problem 1:

 

Beispiel:

/modules/module1/css/module1.css

/modules/module2/css/styles.css

 

Im Them will ich nicht, dass diese einzelnen CSS Files der beiden Module greifen, da ich das ja über eigene CSS Klassen global steuern will für die Templates. Hier bin ich doch laut der Technik schon gezwungen das Ganze im Theme so zu überschreiben oder?

 

Also im Theme dann:

css/modules/module1/module1.css (leer)

css//modules/module2/styles.css (leer)

 

 

### Problem 2:

Die CSS Files im <theme>/css Verzeichnis. global.css, product.css.....usw usw usw.....

 

Was muss ich tun, damit ich diese nicht mehr einzeln sondern in einem File definieren kann?

Wo wird denn überhauptdefiniert, wann welche dieser Dateien gezogen wird?

 

Gruß Mario

Link to comment
Share on other sites

Hi Mario,

 

ich dachte, ich hätte mich klar ausgedrückt. Ich versuche es dann mal anders:

 

Eine CSS-Datei, ein PHP-Datei oder auch eine .tpl im Template- oder im Overrideverzeichnis überschreibt den Core, und zwar ist das Template wiederum gegenüber dem Override-Verzeichnis proprietär. Das gilt mutatis mutandis auch für Mails und PDF-Dateien.

 

Ein leeres File im Template- oder Override-Verzeichnis bewirkt demgegenüber nur Eines: PrestaShop holt sich die benötigten Infos von der nächsthöheren Ebene. Dann kannst du die CSS-Datei ebensogut ganz weglassen.

 

Wenn du die Styles gern in eine oder wenige Datei(en) schreiben willst, dann such sie dir alle zusammen und mach das. Damit vergibst du dir aber die Möglichkeit, in einem einzigen Modul oder Teil deines Templates mal eben einen Style lokal umzudefinieren.

 

Auf künftige Software-Updates darst du nach der von dir geplanten Umstellung dann auch getrost verzichten. Sonst stünde dir nämlich jedesmal eine beträchtliche Anpassungsarbeit bevor.

 

Deshalb frage ich mich immer noch: Wozu soll das gut sein?

 

Übrigens sind es wirklich Overrides und nicht Überladungen, von denen ich rede. Ich habe jetzt auch nochmal nachgesehen, was mit dem von dir verwendeten Begriff gemeint ist. Hier mal eine kurze Begriffsklärung:

 

Beim Überladen erbt die abgeleitete Klasse alle Eigenschaften der Superklasse, einschl. der Variablen und Methoden. Wenn aber das vorgegebene Verhalten der geerbten Methode nicht mehr adäquat ist, muss sie ggf. modifiziert werden. Und dann spricht man vom Override, also der Möglichkeit, die geerbte Methode zu überschreiben.

Beim Override von Methoden besitzt eine Methode in einer Subklasse den Namen und die Parameterliste einer geerbten Methode. Aber sie ersetzt die ursprüngliche Methode der Superklasse.

 

Das ist eines der Kernstücke in der Funktionsweise von PrestaShop. Deine Argumente mögen ja richtig sein. Das ändert aber nichts daran, dass du hier meiner Ansicht nach gegen die Programmphilosophie agieren möchtest.

 

Gruß

eleazar

Edited by eleazar (see edit history)
Link to comment
Share on other sites

Danke für deine Ausführungen.

Genau aus den Gründen schaue ich halt vorher, wie ich am besten vorgehen sollte/möchte, um eben solche Probleme nicht wirklich zu bekommen.

 

Wenn du die Styles gern in eine oder wenige Datei(en) schreiben willst, dann such sie dir alle zusammen und mach das. Damit vergibst du dir aber die Möglichkeit, in einem einzigen Modul oder Teil deines Templates mal eben einen Style lokal umzudefinieren.

 

Auf künftige Software-Updates darst du nach der von dir geplanten Umstellung dann auch getrost verzichten. Sonst stünde dir nämlich jedesmal eine beträchtliche Anpassungsarbeit bevor.

 

Deshalb frage ich mich immer noch: Wozu soll das gut sein?

 

Wie soll ich das nur erklären / beschreiben ... hmm ...

Im Shop ist es derzeit so, dass jedes Modul in Sachen CSS förmlich "erstmal" tut, was es will und wie es will.

Erst danach wird versucht alles irgendwie zusammenzubringen. Das ist für Styling Geschichten wirklich ungeeignet, da man hier ehr das Vorgehen anstrebt, 100000 Klassen wieder im Notfall überschreiben zu müssen.

 

Besser funktioniert meiner Meinung nach der Ansatz, dass man förmlich grundlegende Formate/Klassen im Theme definiert die erstmal jeder nutzen kann und in den Modul CSS Files nur noch etwas anlegt oder hinzugefügt werden muss, wenn wirklich mal Ausnahmensweise etwas absolut modulspezifisch formatiert werden soll. (wobei auch für sowas ne schönere Lösung existiert).

 

Daher mein Gedanke, wie ich das Ganze etwas sauberer bekomme ohne für jeden Scheiß ne eigene CSS Datei zu haben.

Für die Entwicklung ist das echt anstrengend immer alles in den zig Files suchen zu müssen..... ( nur gut, dass es wenigstens Firebug gibt :) )

 

Na ich werd mich nochmal ganz in Ruhe hinsetzen und schauen, was ich wie mache.

Vielleicht lasse ich es auch einfach so von der Struktur her und versuche nur rein den CSS Code aller Module und bestehenden Theme-CSS Files zu bereinigen. Mal sehen ...

 

Danke dir aber dennoch erstmal für deine Gedanken.

 

 

Gruß Mario

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...