[simple_columns] Einfache Spalten für Inhaltselemente

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Babelfisch
    Contao-Fan
    • 30.06.2009
    • 974

    #1

    [simple_columns] Einfache Spalten für Inhaltselemente

    Ich möchte hier mal meine Erweiterung zum einfachen Positionieren von Inhaltselemente in Spalten vorstellen:

    Mit SimpleColumns lassen sich Inhaltselemente einfach und ohne Änderungen am Template oder Stylesheet in Spalten anordnen. Unterstützt werden 2 bis 5-spaltige Layouts für alle Inhaltselemente. Die Elemente können auch über mehrere Spalten reichen, also bspw. ein 4-spaltiges Layout mit 3 Spalten, bei der die letzte Spalte über zwei Spalten reicht.

    Über die Funktion Spaltenhöhe können mehrere aufeinanderfolgende Inhaltselemente in einer Spalte untereinander angeordnet werden, wodurch sich auch aufwendigere Layouts erstellen oder zusammenhängende Inhalte gruppieren lassen.

    Die Positionierung wird standardmäßig über ein eingebautes Stylesheet realisiert. Das Stylesheet lässt sich in der localconfig.php einfach über $GLOBALS['SIMPLECOLUMNS']['style']='…' austauschen oder ganz entfernen, sodass eigene Styledefinitionen möglich sind, ohne ein unnötiges Stylesheet laden zu müssen.

    Für alle Elemente werden eindeutige Klassennamen vergeben:
    • Allgemein: sc, sc-first, sc-last, sc-close für die erste, letzte und manuell geschlossene Spalte
    • Spalten: sc2 bis sc5 für normale Spalten und sc3-2 bis sc5-4 für breitere Spalten
    • erste und letzte Spalte: sc2-first bis sc5-last für normale Spalten und sc3-2-first bis sc5-4-last für breitere Spalten
    • Spaltenhöhe: sc-rowspan ist die Klasse für das Umschlagelement (DIV) für ein Spaltenset

    Damit kann jedes Element eindeutig identifiziert und definiert werden.

    Die Standardstyles arbeiten mit Prozentangaben und sollten mit den meisten Layout funktionieren. In den Inhaltselementen müssen keine Zeilen begonnen oder beendet werden, das geschieht automatisch. Wichtig ist nur, dass pro Zeile immer die passenden Spalten vorhanden sind.

    Zusätzlich kann eine Zeile auch manuell beendet werden, sodass bspw. eine 3-spaltige Zeile schon nach zwei Elementen endet. Dies ist aber nur notwendig, wenn die Zeile vorzeitig beendet werden soll oder wenn nachfolgende Elemente, die nicht mit simple_columns positioniert werden, nicht richtig dargestellt werden.

    Hier könnt ihr das auch live sehen: deutsch.lingolia.com oder www.firmm.org

    Über Feedback, Fehlermeldungen und Verbesserungsvorschläge würde ich mich freuen. Wenn möglich diese bitte im Github posten.

    Hier noch mal der Link zur Erweiterung: http://www.contao.org/erweiterungsli...olumns.de.html

    Beispiel:



    Gruß
    Zuletzt geändert von Babelfisch; 12.06.2012, 17:44.
    Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm
  • andreasisaak
    Contao-Urgestein
    • 07.07.2009
    • 4107

    #2
    Entschuldige bitte die Frage aber was macht deine Extension anders als subcolumns?
    Ich habe mir deine Beispielseite angesehen und mir graust es ehrlich gesagt schon vor den Inline Styles. Die zu überschreiben ist sehr schwer und etwas umständlich. Wäre es nicht besser eine simple CSS im Head einzubinden?

    Kommentar

    • Babelfisch
      Contao-Fan
      • 30.06.2009
      • 974

      #3
      Zitat von jared Beitrag anzeigen
      Entschuldige bitte die Frage aber was macht deine Extension anders als subcolumns?
      Nun, es wird kein YAML benötigt und man braucht auch keine Spaltensets oder ähnliches definieren. Mit subcolumns lassen sich sicherlich deutlich aufwändigere Layouts gestalten jedoch um mal schnell drei Abschnitte nebeneinander zu stellen, ist meine Extension evtl. die einfachrere Wahl. Außerdem wird da auch (fast) kein zusätzliches Markup benötigt.

      Zitat von jared Beitrag anzeigen
      Ich habe mir deine Beispielseite angesehen und mir graust es ehrlich gesagt schon vor den Inline Styles. Die zu überschreiben ist sehr schwer und etwas umständlich.
      Die Inline-Styles kannst du ganz leicht überschreiben. Wie ich schon schrieb, kannst du alles Styles in der localconfig.php überschreiben und dabei eigene Klassennamen und Styles (allgemein und für das erste und letzte Element) definieren. Wenn du alles über Klassen regelst, dann lässt du die Styles halt leer und definierst das in deinem Stylesheet. So kannst du hiermit bspw. einfach die zweispaltigen Vorgaben ändern:
      PHP-Code:
      $GLOBALS['SIMPLECOLUMNS']['2'] = array
      (
          'class' => 'sc2',
          'styles' => '',
          'first' => '',
          'last' => ''
      ); 
      
      Deine Stylevorgaben macht du dann für die Klassen sc2, sc-first und sc-last.

      Zitat von jared Beitrag anzeigen
      Wäre es nicht besser eine simple CSS im Head einzubinden?
      Das kann jeder für sich machen, in der Extension kann ich es jedoch nicht, da die Spalten je nach verwendeten CSS und Layout anders definiert werden müssen. Würde ich ein festes Stylesheet vorgeben, wären Änderungen des Nutzers daran nicht updatesicher. Deshalb habe ich ein – für viele Fälle funktionierendes – Inline-Style definiert und alles andere kann der Nutzer dann selber ändern. Auf der Beispielseite werde ich später auch die Inline-Styles rausnehmen und es über die Klassen regeln. Zum Testen ist es so aber erst mal ok und vielen Leuten wird das auch ausreichen, zumal Inline-Style auch nicht böse oder schlecht sind.

      Gruß
      Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

      Kommentar

      • andreasisaak
        Contao-Urgestein
        • 07.07.2009
        • 4107

        #4
        Ok. Ich werd sie mir bei Gelegenheit mal anschauen.

        Ich mag jetzt keine Diskussion über den Sinn und Unsinn von Inlinestyles anfangen (ich nutze sie genauso in manchen dynamischen Fällen) aber ich kann mich nun mal ziemlich genau an einen anderen Thread mit dir erinnern wo es um die Skalierbarkeit, Flexibilität des Frameworks etc von Contao ging. Daher mein Einwand! Aber lassen wir das - jeder nach seinem Gemüt.

        Kommentar

        • Babelfisch
          Contao-Fan
          • 30.06.2009
          • 974

          #5
          Nun, wie schon gesagt wäre es ein leichtes, der Extension ein extra Stylesheet mitzugeben. Nur wäre es dann für den Nutzer schwerer, die Spalten an sein eigenes Layout anzupassen. Deshalb habe ich mich erst mal für die Inline-Styles entschieden und alles andere lässt sich mit wenig Aufwand an die eigenen Bedürfnisse anpassen. Ich denke schon, dass es so am einfachsten ist und da die Klassennamen frei definierbar sind, sollte es sich auch leicht an ein vorhandenes Grid-Layout anpassen lassen, indem man statt sc2 und Co. einfach die Klassen des Grids hinterlegt.

          Dein Einwand bezieht sich vermutlich darauf, dass Inline-Styles eine höhere Spezifität als Klassen und IDs haben und sich damit nicht mehr ändern lassen. Da hast du Recht und deshalb ist das Ganze ja auch frei konfigurierbar.

          Gruß
          Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

          Kommentar

          • psren
            Contao-Urgestein
            • 07.04.2010
            • 2733

            #6
            Könnte man die Styles die jetzt inline sind nicht auslagern und per
            $GLOBALS['TL_CSS'][] einbinden?

            Wenn ich euch helfen konnte könnt ihr euch gerne mal
            meine Amazon Wunschliste anschauen. Dankeschön.

            Kommentar

            • Babelfisch
              Contao-Fan
              • 30.06.2009
              • 974

              #7
              Zitat von psren Beitrag anzeigen
              Könnte man die Styles die jetzt inline sind nicht auslagern und per
              $GLOBALS['TL_CSS'][] einbinden?
              Siehe meine Antworten dazu vorher. Natürlich könnte man das, dann würde aber das Stylesheet im Extension-Verzeichnis liegen und Änderungen daran, um die Sachen ans eigene Layout anzupassen, wären nicht updatesicher. Oder habe ich da einen Denkfehler?

              Wie ich schon schrieb, kann man die Inline-Styles einfach in der localconfig.php überschreiben und bei Bedarf komplett weglassen. Die Styles definiert man dann im eigenen Stylesheet und Änderungen an der Extension haben keine Auswirkungen darauf.

              Gruß
              Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

              Kommentar

              • psren
                Contao-Urgestein
                • 07.04.2010
                • 2733

                #8
                Zitat von netspy Beitrag anzeigen
                dann würde aber das Stylesheet im Extension-Verzeichnis liegen und Änderungen daran, um die Sachen ans eigene Layout anzupassen, wären nicht updatesicher. Oder habe ich da einen Denkfehler?
                Dann könnte man Änderungen vornehmen indem man die CSS-Styles überschreibt?! Das ist doch updatesicher ;-)

                Wenn ich euch helfen konnte könnt ihr euch gerne mal
                meine Amazon Wunschliste anschauen. Dankeschön.

                Kommentar

                • Babelfisch
                  Contao-Fan
                  • 30.06.2009
                  • 974

                  #9
                  Zitat von psren Beitrag anzeigen
                  Dann könnte man Änderungen vornehmen indem man die CSS-Styles überschreibt?! Das ist doch updatesicher ;-)
                  Dann würde man aber immer ein (unnötiges) Stylesheet mitschleppen. Ich sehe da jetzt keinen Vorteil.

                  Gruß
                  Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

                  Kommentar

                  • Babelfisch
                    Contao-Fan
                    • 30.06.2009
                    • 974

                    #10
                    Ok, ich habe das ganze noch mal überarbeitet und jetzt komplett auf Inline-Styles verzichtet. In der localconfig.php kann man jetzt mit $GLOBALS['SIMPLECOLUMNS']['style'] = '…'; das extern eingebundene Stylesheet überschreiben oder komplett weglassen. Alle Elemente sind mit eindeutigen Klassennamen wie sc2 (zweispaltig), sc3-2 (dreispaltig über zwei Spalten), sc4-first/sc4-last (erste oder letzte Spalte) versehen und lassen sich so genau stylen. Einfach mal die simple_columns.css anschauen, duplizieren und entsprechend anpassen.

                    Gruß
                    Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

                    Kommentar

                    • Ulrike
                      Contao-Nutzer
                      • 11.08.2010
                      • 113

                      #11
                      Hallo,
                      heute habe ich simple_columns getestet. Dabei ist mir aufgefallen, dass es eine Abhängigkeit zur PageTeaser-Extension gibt, die im Extension Repository nicht erwähnt ist. Wenn PageTeaser nicht installiert ist, steigt simple_columns aus, weil SimpleColumnsPageTeaser die nicht vorhandene Klasse PageTeaser zu erweitern versucht. Dieses Problem konnte ich lösen.

                      Dann frage ich mich, warum es bei mir partout nicht klappen will mit der Mehrspaltigkeit. Wie kann ich einen Text (Contentelement Text) dazu überreden, zweispaltig zu werden? Bei mir wird aus einer breiten Spalte nur eine halbe, die dann doppelt so lang ist. Die Spalte daneben bleibt leer...

                      Mit dem Begriff "Zeile manuell schließen" kann ich nichts anfangen. Wie löse ich denn das manuelle Schließen aus?

                      Bin im Moment etwas frustriert...

                      MfG
                      Ulrike

                      Kommentar

                      • Babelfisch
                        Contao-Fan
                        • 30.06.2009
                        • 974

                        #12
                        Zitat von Ulrike Beitrag anzeigen
                        heute habe ich simple_columns getestet. Dabei ist mir aufgefallen, dass es eine Abhängigkeit zur PageTeaser-Extension gibt, die im Extension Repository nicht erwähnt ist. Wenn PageTeaser nicht installiert ist, steigt simple_columns aus, weil SimpleColumnsPageTeaser die nicht vorhandene Klasse PageTeaser zu erweitern versucht. Dieses Problem konnte ich lösen.
                        Ups, so war das nicht geplant. Die Erweiterung PageTeaser soll nur bei Bedarf erweitert werden und nicht zwingend. Habe gerade die 1.0.1 rausgebracht, wo das Problem hoffentlich gelöst ist.

                        Zitat von Ulrike Beitrag anzeigen
                        Dann frage ich mich, warum es bei mir partout nicht klappen will mit der Mehrspaltigkeit. Wie kann ich einen Text (Contentelement Text) dazu überreden, zweispaltig zu werden? Bei mir wird aus einer breiten Spalte nur eine halbe, die dann doppelt so lang ist. Die Spalte daneben bleibt leer...
                        Es ist schwer – eigentlich sogar unmöglich – ohne zusätzliches Markup für jedes Layout eine allgemein gültige Spaltendefinition zu erstellen. Daher funktionieren die Spalten nicht überall auf Anhieb und es muss manuell noch etwas nachgeholfen werden. Die Erweiterung liefert das Stylesheet simple_columns.css mit aus, welches du dir mal anschauen kannst. Vermutlich haben deine Inhaltselemente einen zusätzlichen Margin, Padding oder Border, durch den sie breiter als die Spalte werden. Wenn es nur eine kleine Änderung am Spaltenlayout ist, kannst du sie am besten im Contao-Styleeditor überschreiben. Muss du mehr oder weniger alles ändern, kannst du dir das Stylesheet auch nach tl_files/… kopieren, anpassen und in der localconfig.php definieren:

                        PHP-Code:
                        $GLOBALS['SIMPLECOLUMNS']['style'] = '/tl_files/…/simple_columns.css'; 
                        
                        Kannst du mir mal deine Seite mit den Spalten zeigen? Dann schaue ich es mir mal an und kann dir vielleicht schon einen Tipp geben.

                        Zitat von Ulrike Beitrag anzeigen
                        Mit dem Begriff "Zeile manuell schließen" kann ich nichts anfangen. Wie löse ich denn das manuelle Schließen aus?
                        Das manuelle Schließen bedeutet, dass eine Zeile schon beendet werden kann, bevor alle Spalten voll sind. Bei einem dreispaltigen Layout können also zwei Spalten gesetzt werden und wenn bei der zweiten Spalte „Zeile manuell schließen“ angeklickt ist, dann fängt die nächste Spalte in einer neuen Zeile an:

                        Code:
                        X X X
                        X Y
                        X X X
                        Das Y ist eine Spalte mit aktivierten „Zeile manuell schließen“.

                        Zitat von Ulrike Beitrag anzeigen
                        Bin im Moment etwas frustriert...
                        Das war nicht meine Absicht. Durch die unterschiedlichen Layouts braucht die Erweiterung jedoch teilweise erst ein paar Anpassungen, damit sie funktioniert. Danach hat sie aber den Vorteil, dass Spalten schnell und ohne vorherigen Definition von Splatensets oder zusätzliches Markup eingesetzt werden können.

                        Gruß
                        Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

                        Kommentar

                        • Ulrike
                          Contao-Nutzer
                          • 11.08.2010
                          • 113

                          #13
                          Hallo,
                          erst einmal vielen Dank für die ausführliche Antwort!!!

                          Bei weiterem Herumprobieren ist mir klar geworden, warum ich gestern nicht zurecht gekommen bin. Und zwar hatte ich geglaubt, innerhalb nur eines Content-Elementes mehrere Spalten anlegen zu können. Da hatte ich wohl ein Brett vor dem Kopf bzw. mir war der Ansatz einfach nicht klar.

                          Habe nun folgendes Markup (schematisiert) und so klappt nun auch alles wie gewünscht:
                          PHP-Code:
                          <?php
                          /*
                           * Content-Element 1 (zweispaltig, erste Spalte)
                           */
                          ?> 
                          <div class="ce_text sc sc2 sc-first sc2-first block">
                          <p>Dies ist Spalte 1</p>
                          </div>
                          <?php
                          /*
                           * Content-Element 2 (zweispaltig, zweite Spalte)
                           */
                          ?>
                          <div class="ce_text sc sc2 sc-last sc2-last sc-close block">
                          <p>Dies ist Spalte 2</p>
                          </div>
                          <div class="sc-clear"></div>
                          Die neue Version aus dem Extension Repository habe ich installiert. Da mir jetzt das Element PageTeaser nicht mehr angeboten wird, kommt es auch nicht mehr zum oben angesprochenen Fehler.

                          Kleiner Hinweis: Mit TCPDF werden die Spalten nicht neben-, sondern nacheinander angezeigt, da TCPDF kein float umsetzt.

                          Da ich die Schulhomepage, die ich mit Contao eingerichtet habe, nicht zum Testen verwende, kann ich leider keinen Link angeben. Testen findet nur lokal statt.

                          Wenn man die grundlegende Funktionsweise erst mal verstanden hat, ist simple_columns eine schöne Erweiterung!

                          MfG
                          Ulrike

                          Kommentar

                          • Babelfisch
                            Contao-Fan
                            • 30.06.2009
                            • 974

                            #14
                            Ja, der Ansatz von simple_columns ist anders als der von anderen Spaltenerweiterungen. Mein Ziel war es, ohne irgendwelche vorherigen Spaltendefinitionen auszukommen und einfach so mal „mittendrin“ Inhalte mehrspaltig anzuordnen. Das kommt insbesondere einfachen Editoren zu gute, da es nur ein paar Einstellungen zu den Spalten gibt und nichts vorbereitet werden muss.

                            Mit der PDF-Erstellung habe ich mich noch nicht beschäftigt. Werde mir das mal anschauen. Sofern Contao dazu die Möglichkeit gibt, könnte man dort ein anderes Stylesheet anwenden oder die Inhalte in Tabellen packen.

                            Gruß
                            Meine aktiven Contao-Projekte: Lingolia • Stiftung firmm

                            Kommentar

                            • gregor
                              Contao-Fan
                              • 20.06.2009
                              • 555

                              #15
                              Kann es sein, dass man Simple_Columns nicht für den Inhaltstyp Tabelle verwenden kann?

                              Ich finde beim Inhaltstyp Tabelle nicht die Möglichkeit der Spalteneinstellungen.
                              Bei anderen Inhaltstypen ist sie vorhanden.

                              Habe Contao 2.10.3 und Simple_Columns 1.0.1 Build 3.


                              LG
                              Gregor

                              Kommentar

                              Lädt...