• Gelöst Uwe T.

    (@uwe367)


    Hallo allerseits,

    ich nutze bei meiner Arbeit sehr gerne Bootstrap, da dieses sehr flexibel einsetzbar ist.
    Ich nutze ein Child Theme von twentytwentyfive.
    Bootstrap selbst habe ich über die functions.php eingebunden und die benötigten Dateien werden im Header bzw. im Footer geladen.
    Ich habe auch bereits verschiedene Plugins zu Bootstrap getestet, aber bis auf eines, welches scheinbar nicht mehr weiter entwickelt wird und laut unterstützter WP Versionen nicht mit WP 7 kompatibel ist, kommt leider kein anderes in Frage.

    Also dachte ich, ich füge meine Bootstrap Blöcke (Container, Row, Column etc) mit dem Block „individuelles HTML“ manuell ein um dann zwischen diesen Blöcken meine Inhalte in den Blöcken von WordPress zu platzieren.
    Beispielhaft sieht das so aus:
    Block individuelles HTML:

    <div class="container">
    <div class="row">
    <div class="col-md-3">

    Hier folgt zum Beispiel der Block „Bild“ um ein Bild in die Column einzufügen.

    Und zum Schließen der Div´s wieder ein Block individuelles HTML mit folgendem Inhalt:

    </div> <!--schliessen div col-md-3-->
    </div> <!--schliessen div row-->
    </div> <!--schliessen div container-->

    Rein theoretisch sollte das doch so funktionieren, aber die Realitiät sieht leider etwas anders aus denn der Editor fügt nach dem Speichern automatisch HTML Code in den Abschnitten hinzu, bzw. leert Abschnitte, so dass diese zum Beispiel so aussehen:

    <div class="container">
    <div class="row">
    <div class="col-md-3"></div></div></div>

    Ich denke, es ist jedem klar, dass das nicht funktionieren kann da die Div´s ohne Inhalte beendet werden.

    Mache ich hier etwas falsch, habe ich vielleicht einen Denkfehler oder hat der Editor vielleicht einen Bug?
    Oder sollte ich vielleicht vollkommen anders vorgehen?

    Besten Dank für hilfreiche Antworten im voraus.

Ansicht von 13 Antworten – 46 bis 58 (von insgesamt 58)
  • Thread-Starter Uwe T.

    (@uwe367)

    Ok, danke dir.
    Dann werde ich mich damit mal etwas näher befassen.

    Alles Gute dir 🙂

    Moderator La Geek

    (@la-geek)

    Danke sehr 🙂 Dir auch!

    Moderator Hans-Gerd Gerhards

    (@hage)

    Hallo @uwe367
    ich muss mir das mal genauer ansehen, wenn ich etwas mehr Zeit habe.

    Ich verwende in der Tat seit einiger Zeit (ca. 1,5 Jahre) nur noch Block Themes. Vorher habe ich als klassisches Theme z. B. GeneratePress eingesetzt.

    Nur so viel: Ich erstelle in der Regel mit dem Plugin „Create Block Theme“ normalerweise ein Child Theme z. B. für TT5, wenn ich eine WordPress-Instanz einrichte.
    Anschließend passe ich dann die Templates an. In der Regel kann man das dann direkt völlig problemlos über den Block Editor machen.
    Notfalls kann man auch über den (eingebauten) Code-Editor spezielle Anpassungen durchführen. Das kommt aber recht selten vor.

    Vielleicht ist das ja schon mal ein Ansatz.

    Viele Grüße
    Hans-Gerd

    Thread-Starter Uwe T.

    (@uwe367)

    @hage

    Das Plugin verwende ich ebenfalls um Child Themes zu erstellen. Ich wollte das Template „Seiten“ von TT5 als allgemeines Template so anpassen, dass ich Bootstrap ohne Plugin verwenden kann.

    Ich hatte ein tolles Plugin gefunden, welches auch in der Version WP 7 läuft, aber eben vom Entwickler noch nicht für die 7 angepasst bzw. freigegeben wurde und ich habe den Verdacht, dass das Plugin nicht weiter entwickelt wird was es dann leider, auch aus sicherheitstechnischer Sicht, unbrauchbar macht. Das Plugin heißt All Bootstrap Blocks. In der 6.9 hatte ich noch experimentell damit gearbeitet und ich war von dem Plugin begeistert.

    Ja, und so kam es, dass ich Bootstrap manuell einbinden wollte. Von der reinen Logik her wäre das auch kein Problem gewesen – wenn der Blockeditor mitgespielt hätte.

    Nun suche ich nach einer Möglichkeit, die Dinge direkt in den HTML Templates oder über die functions.php einzusteuern.

    Moderator La Geek

    (@la-geek)

    @hage
    Die öffnenden und schließenden Divs sind dabei leider ein Problem (s. Topic) und machen einen Strich durch die Rechnung, das rein über den Site-Editor zu erstellen.

    @uwe367
    Ich war gedanklich auf die Hooks fokussiert. Es gibt aber auch noch eine andere Möglichkeit, siehe dort:

    https://gitlab.com/La-Geek/test/-/tree/ea7550ef67cee2353ced2ca3bbd23496aea1e8bc/

    Dieses von mir soeben erstellte Child-Theme kannst du über den Button Code und dann zip herunterladen und als Vorlage, zu Anschauungszwecken oder auch als von dir anpassbares Child-Theme verwenden.

    Entpacke das Zip-File und lade alles, was im Verzeichnis ist, auf deinen Server hoch:
    wp-content/themes/twentyfive
    Das Verzeichnis twentyfive musst du zuvor erstellen. Du solltest dann, wenn du das Verzeichnis twentyfive auf dem Server öffnest, dieselbe Struktur sehen wie unter dem obigen Link bzw. wie auf dem nachfolgenden Screenshot

    Nun in deinem WordPress-Backend unter Design => Themes das (Child-)Theme twentyfive aktivieren.

    Was habe ich gemacht?
    1. Mit einem Child-Theme-Generator auf die Schnelle das Childtheme twentyfive erstellt.
    2. den Ordner templates erstellt.
    3. das Template bzw. die Datei bootstrap.html erstellt und im Verzeichnis „templates“ abgelegt
    4. die Datei theme.json hinzugefügt.
    5. das Template bootstrap als Seiten-Template registriert in der theme.json

    Nachdem du das Child-Theme twentyfive aktiviert hast, navigiere zu
    Design => Editor => Templates => Alle Templates => (klick auf) Bootstrap Layout.

    Dort kannst du deine Inhalte einfügen, es besteht aus linker/rechter Spalte und Inhaltsbereich.

    Navigiere zurück zum Adminbereich/Dashboard und lege anschl. eine neue Seite an. Wähle in der rechten Spalte „Bootstrap Layout“ aus wie folgt:
    Klick auf Template Seiten (Punkt 3), im Kontext-Menü auf Template ändern, dann Bootstrap Layout (siehe Screenshot)

    Das Editor-Eingabefeld ist für den Mittelteil (Inhaltsbereich). Die Spalten hast du zuvor entweder mit statischen oder dynamischen (über Queries oder custom fields) Inhalten direkt im Template (Site Editor) gefüllt.

    Zu dem Template bzw. der Datei bootstrap.html: Wenn du dir die CSS-Klassen ansiehst, wirst du feststellen, dass die Divs nicht nur mit row oder container klassifiziert wurden, sondern die vom Block-Editor vorgegebenen CSS-Klassen beibehalten wurden. Ohne letztere funktioniert das Ganze nicht.
    Also, z. B. statt row dann wp-block-columns row

    Du musst also beim Bootstrap-Style u. U. die Spezifität berücksichtigen und entweder mit !important nachhelfen oder auf alle Klassen referenzieren.

    Schlussendlich:
    Du kannst bei den Seiten auswählen, ob du die 3-Spalten-Ansicht nutzen willst.
    Du kannst die Template-Datei per FTP duplizieren und umbenennen, statt bootstrap.html vielleicht meine.html (mir fiel nix gerade besseres ein 😀 ). Diese musst du dann aber auch über die Datei theme.json registrieren.

    Willst du bspw. zusätzlich das Template meine.html für Beiträge registrieren, dann sieht die komplette theme.json so aus

    {
      "$schema": "https://wp.org",
      "version": 3,
      "customTemplates": [
        {
          "name": "bootstrap",
          "title": "Bootstrap Layout",
          "postTypes": ["page"]
        },
        {
          "name": "meine",
          "title": "Mein Layout",
          "postTypes": ["post"]
        }
      ]
    }

    Du legst in der theme.json-Datei den Namen für das Template fest (unter title). Diesen Namen siehst du dann im Site-Editor (unter alle Templates), als auch in der Auswahl beim Erstellen oder Bearbeiten von Beiträgen und/oder Seiten. Im o. g. Code sind das „Bootstrap Layout“ und „Mein Layout“.

    Noch ein Hinweis. Soll das Template für Beiträge und Seiten zur Verfügung stehen, dann in der theme.json statt
    "postTypes": ["post"]
    "postTypes": ["page", "post"]
    schreiben.

    Und du kannst so viele Templates duplizieren, umbenennen und registrieren, wie du willst. Dadurch erübrigt sich das Zuordnen mithilfe von Conditional Tags.

    Thread-Starter Uwe T.

    (@uwe367)

    @la-geek

    Wow, da hast du dir aber jetzt ne Menge Arbeit gemacht.
    Dafür erstmal vielen Dank 🙂

    Gedanklich war ich auch schon dabei, eines der Templates aus dem Child Theme von TT5 so anzupassen, wie es hier die bootstrap.html ist. Problem war nur, dass ich bisher noch nicht wusste….

    1. welche Platzhalter es dafür gibt und wie diese zu platzieren sind
    2. wie ich dieses Template dann in WP bzw. im Theme registrieren kann
    3. dass WP, jetzt wo ich es sehe, logischer Weise auch noch mit den eigenen CSS Klassen arbeitet und diese durch die BS Klassen ergänzt werden.

    Dank deinem Theme habe ich gerade ne ganze Menge über Platzhalter, Templates und wie man diese registriert, gelernt und dank dieser „Erleuchtung“ sollte es nun kein Problem mehr sein, eigene Templates in ein Theme einzubauen und dieses Seiten zuzuweisen. Bisher war mir auch die Funktion der theme.json nicht bekannt oder wozu diese überhaupt benötigt wird, aber nun weiß ich, dass darin die Templates registriert werden müssen, damit sie überhaupt verwendbar sind.

    Der Platzhalter für den Main Content ist somit also

    <!-- wp:post-featured-image /-->
    <!-- wp:post-title {"level":1} /-->
    <!-- wp:post-content /-->

    Dumme Frage – Gibt es auch Platzhalter für Links, Rechts, eventuell auch für Header und Footer oder Custom?
    Gibt es dafür irgendwo eine Auflistung?
    Sorry, wenn ich gerade so viel frage, aber nun habe ich richtig „Feuer gefangen“ 😉

    Moderator La Geek

    (@la-geek)

    Wow, da hast du dir aber jetzt ne Menge Arbeit gemacht.

    Nun ja, ich dachte, ein Template ins Child-Theme kopieren und anpassen, sollte auch bei einem Block-Theme funktionieren. Aber so einfach ist das nicht. Der Block-Editor reagiert sehr empfindlich (s. beizubehaltende CSS-Klassen). Kurzum, dann hat mich der Ehrgeiz gepackt.

    Die eigentliche theme.json (aus dem Parent-Theme) ist ggf. ellenlang. Dort sind Blöcke Schriften, Stile, Farben usw. usf. definiert. Schau mal unter:
    /wp-content/themes/twentytwentyfive/theme.json
    sowie unter:
    /wp-includes/theme.json

    https://developer.wordpress.org/themes/global-settings-and-styles/

    Was meinst du denn mit Platzhalter? Was du beim Main Content angesprochen hast, wird nur im Template angezeigt, also im Site-Editor, nicht aber, wenn du in einem Beitrag oder einer Seite Inhalte einfügst, da ist (bis auf den Titel) alles leer.

    • Diese Antwort wurde vor 1 Monat von La Geek geändert.
    • Diese Antwort wurde vor 1 Monat von La Geek geändert.
    Thread-Starter Uwe T.

    (@uwe367)

    Sehr ehrgeizig – dafür dass du dich damit eigentlich nicht mehr befassen wolltest 😉

    Freut mich aber, dass du so ehrgeizig warst/bist, denn damit hast du mir einiges beigebracht und das tatsächlich in minutenschnelle. Und trotz meines biblischen Alters habe ich das verstanden.

    Dann habe ich, was den Platzhalter angeht, wohl gerade einen Denkfehler denn ich war der Meinung dass dieser ersetzt wird, sobald ich auf einer Seite Content in dem Bereich einbaue, wo dieses Konstrukt steht, in dem Fall des Bootstrap Templates also an dieser Stelle:

    <!-- wp:column -->
    <div class="wp-block-column col-md-6">
    <!-- wp:post-featured-image /-->
    <!-- wp:post-title {"level":1} /-->
    <!-- wp:post-content /-->
    </div>
    <!-- /wp:column -->

    Sozusagen würde daraus beim Einfügen von Content in einer Seite zum Beispiel folgendes:

    <!-- wp:column -->
    <div class="wp-block-column col-md-6">
    Das ist der Beispiel-Content von Testseite 1.
    </div>
    <!-- /wp:column -->

    Das meine ich mit Platzhalter und hier fragte ich mich, ob es noch weitere für andere Seitenbereiche gibt.

    Moderator La Geek

    (@la-geek)

    Sehr ehrgeizig – dafür dass du dich damit eigentlich nicht mehr befassen wolltest 😉

    In die Thematik der Block Hooks-API wollte ich mich nicht einarbeiten. Die Ursachenforschung nach dem Bug wollte ich mir auch nicht antun. Das Dritte: Template kopieren, ist aber ein ganz anderes Thema.

    Als Moderatorin habe ich auch immer eine Test-Instanz mit Block-Editor am Start, um hier ggf. Fragen beantworten zu können. Wenn ich etwas nicht nutze oder nutze, habe ich mich darüber zuvor ausreichend informiert, die Entscheidung selbst bleibt natürlich trotzdem subjektiv. Außerdem wird’s mir schnell fad, wenn ich nichts Neues lernen kann 😀

    Das meine ich mit Platzhalter und hier fragte ich mich, ob es noch weitere für andere Seitenbereiche gibt.

    Okay, das war missverständlich formuliert. WP-Content steht dafür, dass dort der einzufügende Inhalt als WordPress-Inhalt gerendert wird.
    Das Feature-Image ist optional, also die Voraussetzung dafür wurde dadurch geschaffen. Der Title wird durch Programmierung direkt angezeigt.

    Was genau willst du denn wo einfügen? Es gibt auch noch andere „Platzhalter“, z. B. custom fields, womit dynamische Inhalte eingefügt werden.

    Das hat aber jetzt nichts mehr mit dem eigentlichen Problem zu tun. Um das zu vertiefen, öffne bitte einen neuen Thread.

    Thread-Starter Uwe T.

    (@uwe367)

    WP-Content steht dafür, dass dort der einzufügende Inhalt als WordPress-Inhalt gerendert wird.

    Das dachte ich mir und genau das war die Frage, aber wie du schon erwähnt hast, ist das eigentliche Problem der Fehlfunktion des Editors zwar nicht gelöst, aber durch einen anderen Lösungsweg elegant umgangen.

    Es gibt auch noch andere „Platzhalter“, z. B. custom fields…

    DAS ist es, was mich interessiert, aber dafür werde ich einen neuen Thread eröffnen, da das mit dem Problem hier nichts mehr zu tun hat.

    Besten Dank für die tolle Hilfe, die ich erfahren durfte.

    Moderator La Geek

    (@la-geek)

    Sehr gerne. Hat bei mir selbst ja auch wieder ein paar Wissenslücken gefüllt.

    Thread-Starter Uwe T.

    (@uwe367)

    Das Issue wurde getestet und der Fehler tritt auch bei dem Entwicklerteam auf, wobei 3kori die gleiche Erfahrung machte, wie ich. Der Code wird zwar vom Editor geändert (dazu gibts nun auch ein Video auf Github), wird aber im Frontend richtig gerendert.

    Hier nochmal der Link zum Issue:

    The Custom HTML block automatically removes code. · Issue #79117 · WordPress/gutenberg

    Auch in meiner lokalen Serverumgebung und auch auf dem Server ist es so, wie ich bereits schon schrieb, dass der Code im Backend zwar geändert wird, die Frontendausgabe aber korrekt ist.

    Thread-Starter Uwe T.

    (@uwe367)

    Sorry fürs Doppelposting, aber ich kann meinen vorherigen Beitrag nicht mehr entsprechend bearbeiten.

    Das Issue wurde mit der Begründung, dass der Block so arbeitet, wie er soll, geschlossen.
    Dieser Block benötigt valides HTML und kann mit Fragmenten nicht umgehen bzw. interpretiert diese falsch.
    Es gibt aber einen Pull Request, der genau dieses erlauben würde, nämlich dass Codefragmente so gerendert werden, wie es vom User gewünscht ist.
    Blocks: Add innerContent support for static inner blocks, adopt it in the HTML block by youknowriad · Pull Request #79115 · WordPress/gutenberg · GitHub

    An dieser Stelle hinterfrage ich allerdings den Sinn des Blocks „individuelles HTML“.
    Ich kann also nur Inhalte einbetten, wenn ich die schließenden TAG´s im selben Block einbaue, also so:
    <div class="col-md-3 my_special_class">Mein spezieller Content</div>

    Schön und gut, aber egal was ich dort einfüge – es ist mit 90%iger Sicherheit in den verfügbaren Blöcken im Editor vorhanden und kann mittels Drag & Drop implementiert werden. Eine css Klasse oder inline css habe ich schnell geschrieben und diesem zugewiesen.

    Mag sein, dass ich etwas zu engstirnig denke, aber in diesem Zusammenhang fehlt mir die Logik dahinter.

Ansicht von 13 Antworten – 46 bis 58 (von insgesamt 58)

Du musst angemeldet sein, um auf dieses Thema zu antworten.