Contao-Summit 2026

Ankündigung

Collapse
No announcement yet.

Asset Management in Twig Templates

Collapse
X
 
  • Filter
  • Zeit
  • Show
Clear All
new posts

    #16
    Das ist aber m.E. ein ein wenig anderes Szenario. Der TO möchte das CSS nicht nur für ein bestimmtes Theme optimieren, sondern pro tatsächlich genutzte Art von Inhaltselementen auf der entsprechenden Seite.
    Wenn also auf eine Seite keine Tabelle geladen wird, dann wird auch kein CSS für die Tabelle geladen. Auf einer zweiten Seite der gleichen Installtion ist aber vielleicht sehr wohl eine Tabelle geladen und dort wird dann auch das CSS für die Tabelle benötigt.
    Zumindest habe ich das so verstanden.
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    :cool:Für Dinge die man mit HTML und CSS lösen kann, braucht man kein javascript.





    Comment


      #17
      Ah ok, ja, das ist dann tatsächlich anders.

      Frage ist, ob das von der Performance wirklich was bringt? Denn dann wäre da eine Grund-CSS und je nach aufgerufener Seite wird Zusatz-CSS geladen. Und bei jeder Seite mit Zusatz-CSS wäre das ein Extra-Request, den der Server verarbeiten muss. Ist es da von der Performance nicht besser, einmal nur eine optimierte CSS vom Browser laden zu lassen, die für den ganzen Webauftritt gilt?
      The idea is to die young as late as possible!

      Comment


        #18


        Die Frage habe ich oben auch gestellt. Aber das kann man wahrscheinlich nur einschätzen, wenn man es sich konkret anschaut.
        Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
        Contao-Online-Video-Kurse: Contao Academy
        Funktionalität erweitern: Contao-Erweiterungen

        :cool:Für Dinge die man mit HTML und CSS lösen kann, braucht man kein javascript.





        Comment


          #19
          Nicht unbedingt. Wenn der Client in seiner Session auf deiner Website nur 10% des CSS benötigt hat, dann wäre es besser gewesen, dass es einzeln ausgeliefert wird - und nur auf den Seiten, wo es benötigt wird.
          » sponsor me via GitHub or Revolut

          Comment


            #20
            Zitat von mlweb Beitrag anzeigen
            Ich denke Du kannst hier nicht extenden und musst das Template in dem Fall komplett überschreiben.
            Dann werd ich das mal machen.

            Danke für eure Hilfe und Überlegungen!
            Am schönsten wär es natürlich eh wenn das individuelle CSS inline im Head geladen wird.

            Comment


              #21
              eine etwas unkonventionelle Möglichkeit:

              - öffne das Template Studio
              - Suche nach dem Template content_element/templates und erstelle daraus über Variante erstellen ein Varianten-Template
              - überschreibe den Inhalt mit

              PHP-Code:
              {% use "@Contao/component/_stylesheet.html.twig" %}

              {
              # Adds a stylesheet #}
              {% add "my_css" to stylesheets %}
                  {% 
              with {file: asset('styles.css')} %}
                      {{ 
              block('stylesheet_component') }}
                  {% 
              endwith %}
              {% 
              endadd %} 
              - Speichern und Prod.Cache löschen
              - im Backend an gewünschter Stelle - im gleichen Artikel, wo auch das Formular eingefügt wurde - ein Inhaltselement individuelles Template erstellen
              - als Inhaltselement-Template das vorher erstellte Template auswählen.
              Grüsse
              Bernhard

              Comment


                #22
                Zitat von derRenner Beitrag anzeigen
                eine etwas unkonventionelle Möglichkeit:

                - öffne das Template Studio
                - Suche nach dem Template content_element/templates und erstelle daraus über Variante erstellen ein Varianten-Template
                - überschreibe den Inhalt mit

                PHP-Code:
                {% use "@Contao/component/_stylesheet.html.twig" %}

                {
                # Adds a stylesheet #}
                {% add "my_css" to stylesheets %}
                    {% 
                with {file: asset('styles.css')} %}
                        {{ 
                block('stylesheet_component') }}
                    {% 
                endwith %}
                {% 
                endadd %} 
                - Speichern und Prod.Cache löschen
                - im Backend an gewünschter Stelle - im gleichen Artikel, wo auch das Formular eingefügt wurde - ein Inhaltselement individuelles Template erstellen
                - als Inhaltselement-Template das vorher erstellte Template auswählen.

                Danke für die Idee!

                Ich weiß garnicht wo content_element/templates zum Einsatz kommt?
                Außerdem darf es nicht notwendig sein ein extra Templat auszuwählen - da wäre eine größere globale CSS Datei noch die bessere Lösung.

                Comment


                  #23
                  Ich habe jetzt eine eigenes Template "form_wrapper.html.twig" angelegt und darin lade ich das CSS File.

                  {% use "@Contao/component/_stylesheet.html.twig" %}

                  {% with {file: asset('files/assets/styles/content-elemente/form.css')} %}
                  {{ block('stylesheet_component') }}
                  {% endwith %}


                  Danke allen für die Unterstützung!

                  Comment


                    #24
                    Zitat von Spooky Beitrag anzeigen
                    Zitat von esc Beitrag anzeigen
                    Zitat von Spooky Beitrag anzeigen
                    PHP-Code:
                    {# templates/form_wrapper.html.twig #}
                    {% extends '@Contao/form_wrapper.html.twig' %}
                    {% use 
                    '@Contao/component/_stylesheet.html.twig' %}

                    {% 
                    add "foobar" to stylesheets %}
                        {% 
                    with {file: asset('foobar.css')} %}
                            {{ 
                    block('stylesheet_component') }}
                        {% 
                    endwith %}
                    {% 
                    endadd %} 
                    Damit bekomm ich diesen Fehler:

                    A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?
                    Hm ja stimmt, das geht dann doch nicht.
                    Ist übrigens ein Bug in Contao: https://github.com/contao/contao/pull/10086
                    » sponsor me via GitHub or Revolut

                    Comment

                    Working...
                    X