Ich habe einen guten Teil meiner beruflichen Laufbahn mit WordPress verbracht und dabei ein paar Dinge gelernt: Popularität erzeugt Verachtung, und etwas nur aufgrund der Kritik anderer abzutun, ist eine verpasste Gelegenheit.
WordPress und ich fingen großartig an, aber mit der Zeit entfernten wir uns immer weiter voneinander. Es war nicht so, dass wir weniger Zeit miteinander verbrachten, aber es fühlte sich an, als würden wir nur noch die Routine abspulen. Der Funke erlosch, und doch wusste ich, dass es ein sehr wichtiger Teil meiner Arbeit war. Manchmal ist Veränderung nötig, und da war es, als Timber uns wieder zusammenbrachte.
Ich verstehe, dass WordPress nicht für alles oder jeden das perfekte Werkzeug ist, aber was ist das schon? Es gibt eine Zeit und einen Ort dafür, und ich hoffe, einige Wege aufzuzeigen, die Sie vielleicht verpasst haben.
Was ist Twig?

Twig ist eine wunderbare Vorlagensprache für PHP. Lassen Sie sich vom Namen nicht täuschen; sie ist alles andere als zerbrechlich.
Wenn Sie jemals JavaScript-Vorlagensprachen wie Handlebars oder Mustache gesehen haben, wird Ihnen das hier bekannt vorkommen. Wenn nicht, keine Sorge; Twig ist eine Freude zu sehen, da es Ihnen eine prägnante, zugängliche Syntax zur Verfügung stellt. Werfen Sie einfach einen Blick auf dieses Beispiel von ihrer Homepage
<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
Sagen Sie mir, das hat doch keine Aufregung ausgelöst!
Um eine Variable auszugeben, umgeben Sie sie einfach mit doppelten geschweiften Klammern und lassen das Dollarzeichen weg, z. B. {{ var }}. Sie können auch auf Attribute einer Variable zugreifen, so: {{ user.name }}
Kontrollstrukturen erscheinen innerhalb von {% ... %} Blöcken und sind ebenso benutzerfreundlich zu handhaben
{% for post in posts %}
{{ post.title }}
{% endfor %}
Sie können mehr aus ihrer Dokumentation erfahren.
Stellen Sie sich vor, Sie würden Ihre WordPress-Vorlagen so schreiben…
Was ist Timber?

Timber ist das Plugin, das WordPress mit Twig vereint. Neben den Vorteilen der Nutzung von Twig ermöglicht es Ihnen, PHP von Ihren HTML-Vorlagen zu trennen. Dies wiederum gibt Ihnen eine besser durchatmende Umgebung für die Entwicklung Ihres Themes, wie wir gleich untersuchen werden.
Werfen wir einen Blick auf ein Beispiel aus der Dokumentation, und dann gehen wir es Schritt für Schritt durch
$context = Timber::get_context();
$context['post'] = new TimberPost(); // It's a new TimberPost object, but an existing post from WordPress.
Timber::render('single.twig', $context);
Die Datei `single.twig`
<article>
<h1 class="headline">{{post.post_title}}</h1>
<div class="body">
{{post.content}}
</div>
</article>
Beginnend mit `single.php` holen wir als erstes den Kontext des Themes mit Timber::get_context();. Dieses Objekt enthält Dinge wie Ihre Menüs, wp_head und wp_footer. Später werden wir sehen, wie Sie dies hinzufügen können, wenn Sie etwas global Zugängliches in Ihrem Theme benötigen. Diese Zeile werden Sie oft verwenden.
Als Nächstes müssen wir den Beitrag abrufen, den wir in unserer Vorlage anzeigen möchten. Die Verwendung von new TimberPost(); ermittelt, welcher Beitrag abgerufen werden soll.
Schließlich wollen wir etwas anzeigen. Die render-Funktion von Timber ruft unsere Twig-Datei auf und übergibt die gerade gesammelten Daten.
Eine letzte Bombe, und ich hoffe, es ist nicht zu viel: Timber bietet integrierte Unterstützung für Advanced Custom Fields.
Warum Twig verwenden?
Nach einiger Zeit mit WordPress finden Sie vielleicht, dass Sie den Wald vor lauter Bäumen im verwirrenden Tanz zwischen PHP und HTML nicht mehr sehen. Das bedeutet nicht, dass alle Themes so sind, aber man sieht, wie leicht es passieren kann.
Was ich an Timber recht schön fand, ist, dass es dieses potenzielle Problem abmildert, indem es Raum zwischen beiden schafft. Sie mischen nie PHP mit HTML, aber sie reden immer noch miteinander. Sie werden feststellen, dass die Gespräche sinnvoller sind, da dies den besten Teilen von WordPress die Möglichkeit gibt, zu glänzen.
Zum Beispiel ist unsere Datei `single.php` nur 3 Zeilen lang, und das nur für den Umgang mit unseren Daten. Bis diese Daten unsere Ansicht erreichen, sind wir glücklich zu wissen, dass wir alles haben, was wir brauchen – alles, was bleibt, ist, es zu formatieren.
Erste Schritte
Installation
Also legen wir los! Sie können dies über composer installieren, wenn Sie dazu neigen, aber der Kürze halber installiere ich es über **Plugins > Neu hinzufügen** und suche nach Timber und Twig. Alternativ können Sie es aus dem Plugin-Verzeichnis herunterladen und auf Ihre Website hochladen.
Starter-Theme
Timber wird mit einem minimalistischen Starter-Theme geliefert, das perfekt ist, um sofort loszulegen. Sobald das Plugin installiert ist, finden Sie den folgenden Ordner, den Sie in Ihren Themes-Ordner kopieren können. Dieser sollte sich unter `wp-content/plugins/timber/timber-starter-theme` befinden. Oder, wenn Sie nur einen Blick darauf werfen möchten, können Sie das Starter-Theme-Repository durchsuchen.
Auf den ersten Blick werden Sie feststellen, dass hier nichts Ungewöhnliches vor sich geht. Wo ist die Magie? Es ist in Ordnung, an diesem Punkt besorgt zu sein, also graben wir ein wenig tiefer.
functions.php
Der Zweck Ihrer `functions.php`-Datei bleibt weitgehend derselbe. Sie können sie wie gewohnt verwenden, sei es zur Deklaration benutzerdefinierter Beitragstypen oder zur Definition Ihrer benutzerdefinierten Funktionen. Mit dem Timber Starter Theme werden Sie jedoch eine Klassendeklaration im Inneren bemerken. Die bemerkenswerteste Methode dieser Klasse ist add_to_context.
Von hier aus können wir Elemente hinzufügen, auf die wir in unserem gesamten Theme zugreifen möchten. Nehmen wir zum Beispiel an, ich habe ein Menü im Admin-Dashboard mit dem Slug primary-menu erstellt, ich könnte es wie folgt in den globalen Kontext einfügen
$context['primary_menu'] = new TimberMenu('primary-menu');
Jetzt kann ich darauf so zugreifen
<nav role="navigation">
<ul>
{% for item in primary_menu.get_items %}
<li class="{{item.classes | join(' ')}}">
<a href="{{item.get_link}}">{{item.title}}</a>
</li>
{% endfor %}
</ul>
</nav>
Nicht schlecht! Ein weiteres Beispiel, das ich teilen möchte, ist die Verwendung von etwas wie dieser Multi-Umgebungs-Konfiguration. Dies erstellt eine Konstante zur Kennzeichnung der aktuellen Umgebung, z. B. Entwicklung, Staging oder Produktion. Ich kann diese Informationen leicht in mein Theme ziehen, indem ich das Folgende zu meiner add_to_context-Methode hinzufüge
$context['env'] = WP_ENV;
In meinen Vorlagen kann ich {{ env }} aufrufen, um mir anzuzeigen, auf welcher Umgebung meine Website läuft.
Erweitert und Blöcke
Werfen wir einen Blick auf `index.php`.
$context = Timber::get_context();
$context['posts'] = Timber::get_posts();
$templates = array( 'index.twig' );
if ( is_home() ) {
array_unshift( $templates, 'home.twig' );
}
Timber::render( $templates, $context );
Okay, die meiste davon haben wir schon gesehen. Es passiert hier ein wenig mehr mit einer Array von Vorlagen. All das tut, ist, `home.twig` am Anfang des Arrays hinzuzufügen, wenn is_home() wahr zurückgibt.
Nehmen wir an, is_home() gibt falsch zurück, das wird es also veranlassen, `index.twig` zu rendern. Twig-Dateien leben im Verzeichnis `views`, also beginnen wir dort, in unserer Datei `index.twig`
{% extends "base.twig" %}
{% block content %}
{% for post in posts %}
{% include 'tease.twig' %}
{% endfor %}
{% endblock %}
Hier gibt es ein paar neue Dinge einzuführen, nämlich extends und block. Wenn Sie nicht sicher sind, was sie tun, bin ich sicher, Sie werden es bald „twigen“.
Wenn wir extends aufrufen, sagen wir "verwende dieses Layout für alle Inhalte, die ich in dieser Vorlage deklariere". Dann haben Sie in `base.twig` etwas wie das hier
<!doctype html>
<html>
<head>
...
</head>
<body>
...
{% block content %}
No content found!
{% endblock %}
</body>
</html>
Normalerweise würden wir in WordPress unseren Footer und Header in jede Vorlage einbinden, aber hier ist alles in einer Datei, von der wir unserer Vorlage sagen, dass sie sie erweitern soll.
Sie können Ihre Blöcke nennen, wie Sie möchten. Diese Zeichenkette "Keine Inhalte gefunden!" wird nur angezeigt, wenn nichts in einem content-Block bereitgestellt wird. Im Timber Starter Theme sehen Sie, dass sie zusätzliche Blöcke für Teile des Headers und Footers deklariert haben, aber es geht darum, das zu verwenden, was für Sie sinnvoll ist.
Benutzerdefinierte Vorlage
Genug von diesem lockeren Gerede, es ist Zeit, unsere eigene Vorlage zu erstellen! Dieser Leitfaden verwendet Advanced Custom Fields sowie einige zusätzliche Funktionen von Timber + Twig, die Sie sicher begeistern werden.
Wir erstellen ein sehr einfaches Beispiel einer Seite mit einem Bannerbild und etwas Text darüber. Ein Helden-Element, wenn Sie so wollen. Unser Held wird uns die Ausdrucksstärke von Twig offenbaren und unser mentales Modell von WordPress, wie wir es kennen, herausfordern. Wir stellen uns vor, dass unser Helden-Element mit Advanced Custom Fields definiert wurde. Sie können ein benutzerdefiniertes Feld mit folgendem aufrufen: post.get_field('field_name');. Wenn Sie die eigenen benutzerdefinierten Felder von WordPress verwenden, ist es so einfach wie post.field_name.
Es gibt ein paar Wege, um eine benutzerdefinierte Seiten-Vorlage zu erstellen, und da ich im Einzelfall nicht immer die endgültige URL kenne, gehe ich den Weg der "Benutzerdefinierten PHP-Datei". Schließlich, fangen wir an zu tippen!
base.twig
Für unser Basis-Layout habe ich die Layout-Datei des Timber Starter-Themes mit der Index-Datei von HTML5 Boilerplate kombiniert.
<!doctype html>
<html class="no-js" {{site.language_attributes}}>
<head>
<meta charset="{{site.charset}}">
<title>
{% if wp_title %}
{{ wp_title }} - {{ site.name }}
{% else %}
{{ site.name }}
{% endif %}
</title>
<meta name="description" content="{{site.description}}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{{ site.theme.link }}/style.css">
</head>
<body>
<nav role="navigation">
<ul>
{% for item in primary_menu.get_items %}
<li class="nav-item {{item.classes | join(' ')}}">
<a class="nav-link" href="{{item.get_link}}">{{item.title}}</a>
</li>
{% endfor %}
</ul>
</nav>
<div class="wrapper">
{% block content %}
No content found!
{% endblock %}
</div>
</body>
</html>
Der Aufruf von {{ site.theme.link }} kann sehr nützlich sein, und wenn Sie Wiredep + Gulp verwenden, können Sie sich diesen Ausschnitt ansehen, um zu erfahren, wie Sie ihn in Ihren Workflow integrieren können.
Benutzerdefinierte Vorlagendateien
Wie wir bereits gesehen haben, wird Ihre PHP-Datei einfach sein. Ein paar Zeilen in `your-custom-page.php` sollten ausreichen
<?php
/*
* Template Name: Your Custom Page
*/
$context = Timber::get_context();
$post = new TimberPost();
$context['post'] = $post;
Timber::render( 'your-custom-page.twig', $context );
Das ist alles, was wir brauchen! Unsere Helden-Datei `your-custom-page.twig` wartet…
{% extends 'base.twig' %}
{% block content %}
<section>
<h1>{{ post.get_field('hero_title') }}</h1>
<img src="{{ TimberImage(post.get_field('hero_image')).src }}" alt="{{ TimberImage(post.get_field('hero_image')).alt }}">
</section>
{% endblock %}
Wir verwenden hier TimberImage, um die benötigten Informationen über das Bild zu erhalten. In diesem Fall sind das die URL und der Alt-Text.
Wir könnten es dabei belassen... aber da wir schon gut dabei sind, nutzen wir den resize-Filter. Dieser benötigt 3 Argumente: Breite, Höhe und Zuschnitt. Wir werden nur die Breite angeben.
Lassen Sie uns unser Heldenbild refaktorisieren, um es etwas responsiver zu gestalten
<img alt="{{ TimberImage(post.get_field('hero_image')).alt }}"
srcset="
{{ TimberImage(post.get_field('hero_image')).src | resize(1600)}} 1600w,
{{ TimberImage(post.get_field('hero_image')).src | resize(1000)}} 1000w,
{{ TimberImage(post.get_field('hero_image')).src | resize(700)}} 700w
"
src="{{ TimberImage(post.get_field('hero_image')).src | resize(1000)}}"
sizes="100vw"
>
Ja, das können Sie tun.
Fazit
WordPress hat viel zu bieten, und ich bin schuldig, es als selbstverständlich anzusehen. Das, was man liebt, ist an sich schon eine Belohnung, und ich glaube, dass es eine großartige Gelegenheit ist, neue Fähigkeiten zu erlernen und die Motivation neu zu beleben, wenn man sich etwas Zeit nimmt, um etwas auf neue Weise anzugehen. Ich kann Ihnen nicht sagen, wie viele Websites ich mit WordPress erstellt habe, aber ich kann Ihnen den genauen Moment sagen, als mein Verstand explodierte, als ich Timber zum ersten Mal benutzte.
Das ist eine großartige Zusammenfassung, danke für den Überblick TJ!
Freut mich, dass es Ihnen gefallen hat! Danke :)
Ich liebe es, Timber zu benutzen und benutze es seit einem Jahr. Als Frontend-Entwickler mit wenig PHP-Programmiererfahrung macht Timber alles offensichtlich und wirklich leicht verständlich.
Ich habe Timber noch nie benutzt, aber ich liebe das Beispiel für responsive Bilder. Es scheint wirklich die frustrierende Logik von WordPress für vordefinierte Thumbnail-Größen zu umgehen.
Eine Sache, die mir Sorgen machte, als ich anfing, Timber zu benutzen, war die Idee, dass ich alle Standard-WordPress-Funktionsaufrufe wie the_title() neu erstellen müsste. Nein, Timber hat Sie abgedeckt. Umgeben Sie jeden WP-Funktionsaufruf einfach mit einem {{function()}} Tag. Z.B. {{function(‘wp_title’, ‘any parameter’)}}. Einfach.
Ich habe Timber ausprobiert, kannte das aber nicht und habe es irgendwie in den Docs übersehen, also habe ich die Benutzung eingestellt.
Zeit, es noch einmal zu versuchen!
Eigentlich, TJ, wenn Sie einen Folgebeitrag in Erwägung ziehen würden, würde ich demütig eine Diskussion darüber beantragen, wie dynamische Sidebars/Widgets integriert werden können. Die Docs auf der Timber-Website scheinen sehr inkohärent zu sein, und es dauert normalerweise ein paar Besuche auf Stack Overflow, um Widgets zum Laufen zu bringen.
Hallo Nick,
Ich kann Ihnen ein Beispiel für ein Projekt geben, an dem ich gerade arbeite. Es gibt ein paar Schritte, die ich skizzieren werde
In
functions.phpwürden Sie ein Widget wie folgt initialisierenDanach können Sie alles über das Dashboard hinzufügen. Dann können Sie es in Ihrem PHP-Datei zum Kontext/Daten hinzufügen, indem Sie den Namen aufrufen, den Sie ihm gegeben haben
Dann, schließlich, in Ihrer .twig-Datei können Sie darauf wie folgt zugreifen
Ich hoffe, das hilft!
Ausgabe sollte standardmäßig escaped sein, meiner Meinung nach.
Für die meisten meiner Projekte habe ich von WordPress zu https://Bolt.cm gewechselt.
Bolt verwendet Twig nativ und ist flexibler und benutzerfreundlicher als WordPress. Wenn Sie die Vorteile von Timber und Twig schätzen, werden Sie wahrscheinlich auch für Ihr nächstes Projekt vollständig zu Bolt wechseln wollen.
Manchmal ist WP jedoch unvermeidlich, und Timber ist eine gute Lösung für diese Fälle. Danke für diesen Artikel, ich habe mindestens 2 neue Tricks gelernt und werde ihn bookmarken.
Bolt sieht wirklich gut aus! Was ich jedoch vermitteln wollte, ist, dass WP nicht dieses Ding sein muss, mit dem wir uns abfinden. Es ist wirklich ausdrucksstark, und manchmal können wir das aus den Augen verlieren, sei es durch populäre Meinungen oder schlechte Erfahrungen, die unsere Eindrücke gefärbt haben.
Wie bei allem anderen ist es aber nicht jedermanns Sache und muss es auch nicht sein. Ich werde Bolt ausprobieren und freue mich darauf.
Sieht interessant aus! Wie gehen Sie mit Projekten um, die normalerweise durch die Verwendung von Plugins gelöst werden, wie z.B. WooCommerce für einfache E-Commerce-Integration oder Gravity Forms für einfache bis fortgeschrittene Formularintegration?
Eine der Kernstärken von WordPress ist die Plugin-Community und die einfache Erweiterbarkeit. Wie geht Bolt damit um oder vergleicht es sich?
@Lars Faye
Erweiterungen/Plugins und Themes sind unter http://extensions.bolt.cm * verfügbar und können auch mit wenigen Klicks im Bolt Backend installiert werden. Bei den meisten Erweiterungen ist die Funktionalität so weit wie möglich von der Darstellung getrennt.
Dinge wie benutzerdefinierte Felder oder -inhaltstypen, Routing oder erweiterte Benutzer-/Gruppenverwaltung sind standardmäßig verfügbar, sodass Sie möglicherweise weniger Plugins benötigen, als Sie erwarten. Für Gravityforms-ähnliche Funktionalität ist die Boltforms-Erweiterung eine gute Wahl.
Bolt zielt nicht auf den Bau von Online-Shops ab, aber ich habe Leute gesehen, die Bolt in Verbindung mit Diensten wie Shopify verwenden.
*) Sieht so aus, als ob diese Seite gerade gewartet wird, während ich das schreibe, das könnte der Grund sein, warum Sie sie verpasst haben.
Sie sollten sich die Blade-Syntax von Laravel ansehen. Genauso nützlich und elegant.
http://laravel.com/docs/5.1/blade
Ich bin ein großer Fan von Laravel, und Blade bereitet mir jedes Mal große Freude, wenn ich es benutzen darf.
@Evert Albers
Ja, wenn Sie nach "WordPress-Alternative" googeln, taucht Ihr Name auf fast jeder sogenannten "nützlichen" Website auf, die Leuten dieselbe Geschichte erzählt.
Zum Thema,
Ich weiß nichts über diese Twig-Sache. Es gibt mir nicht das schöne Gefühl wie PHP-Funktions-Tags zwischen HTML-Tags. Als ich vor Jahren statische HTML-Websites erstellte, hatte ich wirklich dieses riesige Problem mit einem CMS. Ich hatte nur Kenntnisse in HTML und CSS, was ziemlich einfach zu lernen war und die Ergebnisse für Anfänger großartig/zufriedenstellend waren. Ein CMS zu erstellen war wirklich etwas Kühnes und Technisches. Alles lief großartig, das Problem war, all diese statischen Websites zu aktualisieren, Leute mussten mich jedes Mal fragen, wenn sie eine Änderung an ihrer Website brauchten, also begann ich, mich nach WordPress umzusehen, weil alle auf der Welt sagten, das sei es, für Anfänger, und das war es auch... Manche Leute lästern gerne über WordPress und wie aufgebläht und übertrieben es sein kann, aber ehrlich gesagt, dieses Gefühl hatte ich in den letzten Jahren nicht und es gibt nichts Vergleichbares wie WordPress da draußen heute.
Ich suche seit Monaten nach einer Möglichkeit, von WordPress wegzukommen, aber aus irgendeinem Grund ist es einfach nicht machbar und ich gehe immer wieder zurück und fresse all den schicken Kram, den die Core-Entwickler mit jeder neuen Veröffentlichung herausbringen. Sie erstellen immer noch sehr soliden Code, aber es gibt jetzt so viel Mist in WordPress, der nicht wirklich benötigt wird.
Ich meine, WordPress funktioniert so gut, selbst ohne viel PHP-Kenntnisse und nur mit soliden HTML/CSS-Kenntnissen können Sie Ihr eigenes Theme von Grund auf erstellen, die PHP-Funktions-Tags sind lesbar und verständlich, was sie tun. oder sagen Ihnen genau, was Sie erwarten können, und einfacher geht es nicht... Einfach diesen PHP-Code/Funktionen zwischen HTML-Tags einfügen und fertig. Wenn Sie die WordPress-Vorlagenhierarchie verstehen, sind Sie fast zur Hälfte fertig.
So schön war es, als ich anfing, WP-Themes in der Zeit von Twenty Ten (Thema) zu erstellen. Heutzutage ist die WordPress-Vorlagenstruktur sehr PHP-langweilig geworden, weniger HTML in den Vorlagen und viel davon, <?php the_title('’, ”) ?>. Wenn es soweit gekommen ist, Junge, kann ich nur sagen, dass Sie irgendwann viel Boden unter Ihren Füßen verlieren werden. Dies ist nur ein sehr einfaches Beispiel, es gibt noch viel mehr Hässlichkeit, wenn es um WordPress geht, aber ich habe zu viel Respekt vor der Plattform und es tut mir leid, das überhaupt zu sagen.
Der gesamte Customizer.js-Mist ist das, was ich am meisten hasse. Ernsthaft, wenn Sie einen halbfertigen Frontend-Toolbar, klein, seitlich, um Ihren Seitennamen oder Ihre Farbe zu ändern, brauchen, sind Sie in tiefen Schwierigkeiten. Das funktioniert vielleicht sehr gut bei wordpress.COM, aber auf selbstgehosteten Servern? Ich glaube nicht. Ich verstehe, dass Dashboards irgendwann enden werden und wir direkt vom Frontend posten und bearbeiten werden, aber dieser WordPress-Customizer ist nicht der richtige Weg in einer CMS-Umgebung. Aber hey, wenn es manchen Leuten gefällt, dann tut es, aber drängt es mir nicht auf. Wenn ich den Customizer in meinen Themes derzeit nicht verwenden möchte, kann ich ihn nicht einfach mit einem einzigen Filter in functions.php aus der Kernfunktion entfernen. Nein, ich muss ein Plugin installieren oder 35 Zeilen Code schreiben, einschließlich benutzerdefinierten CSS für den Admin, um alles zu verbergen, was mit dem Customizer zu tun hat.
Es wird heute bei WordPress nicht schöner. Ich glaube, die Core-Entwickler erstellen zu viele schicke Sachen, die sie persönlich wirklich mögen, anstatt das zu schaffen, was die Community wirklich braucht.
Ich wünschte wirklich, es gäbe etwas "Neues" und sehr Grundlegendes, das sich wirklich auf die Frontend-Entwicklung konzentriert, aber trotzdem eine Art Dashboard und Backend-Integration hat, damit die Leute Änderungen an ihren Websites vornehmen können. Vielleicht etwas mit einer soliden Post Types-Grundlage, denn die Integration von Custom Post Types in WordPress ist einfach wunderschön. Ich brauche nur nicht all den schicken Kram drumherum.
Verdammt, ich habe WordPress in den letzten Jahren so sehr geliebt, aber es ist wirklich an einem Punkt angelangt, an dem es einfach weniger Spaß macht und nicht mehr so schön ist.
@shmoo
Ich finde es etwas ironisch, dass Sie Evert Albers dafür kritisieren, dass er Bolt Leuten empfiehlt, die es vielleicht nicht kennen, gefolgt von einigen Punkten, die Sie am aktuellen Zustand von WordPress nicht mögen.
Witzigerweise machen wir bei Bolt jede einzelne der von Ihnen genannten Dinge anders und besser.
Es sei denn, Sie machen etwas wirklich Hacky, Twig (und CMS, die Twig verwenden) erlaubt Ihnen nicht, PHP-Funktionen in Vorlagen zu verwenden. Das mag zwar den Anschein erwecken, dass Sie weniger Freiheit haben, aber es fördert tatsächlich gute Praktiken: Trennung der Belange zwischen Geschäftslogik (PHP-Sachen, die von PHP/Controllern/dem CMS behandelt werden sollten) und Präsentation (dem HTML).
Die meisten Bolt-Konfigurationen werden über YML-Dateien durchgeführt. Das mag wie eine mühsame Arbeit erscheinen, ist aber äußerst flexibel und einfach zu bedienen. Keine klickbaren Checkboxen oder das Herumfummeln mit Millionen von Eingabefeldern. Ändern Sie einfach die
.yml-Datei in Ihrem Browser oder Ihrem bevorzugten Editor. Als zusätzlichen Bonus können Sie diese Dateien in Ihrem Versionskontrollsystem aufbewahren, was die Entwicklung und Bereitstellung erleichtert.Seit wir angefangen haben, sagen wir sehr klar, dass wir nicht in diese Richtung gehen werden. Grundsätzlich gibt es drei Arten von Benutzern für jedes CMS: Redakteure, Frontend-Entwickler und Backend-Entwickler. Jeder von ihnen ist gleich wichtig. Wir haben das sogar in unser Manifest aufgenommen.
Das ist so ziemlich das, was Bolt ist.
Diese nennt man in Bolt Contenttypes und sie sind sehr schnell und einfach an die Bedürfnisse Ihrer Website anzupassen. (siehe den Punkt über .yml oben)
Ernsthaft, Sie sollten sich Bolt ansehen und sich uns im IRC-Kanal anschließen. Wir sind eine freundliche Truppe, die immer bereit ist, neuen Leuten zu helfen.
Toller Artikel, danke TJ! Ich habe nur eine Frage, die Ihr Artikel und die offizielle Timber-Dokumentation nicht so gut behandeln. Wie gehen Sie mit bedingten Funktionen wie is_front_page, is_page() (z.B. is_page(7), is_404 usw.) um? Es gibt eine ganze Menge im WordPress-Codex.
In den Timber-Docs werden sie nicht erwähnt. Was ist die beste Praxis, um damit umzugehen? Die If-Logik in die PHP-Dateien verschieben und die If-Else-Funktionalität nicht innerhalb von Twig dafür verwenden? Oder in Twig bleiben und eine spezielle Syntax dafür verwenden?
Ich habe das nicht ausprobiert, aber es funktioniert für andere Dinge: Sie könnten die Funktion in einem Timber {{ function }} Tag umschließen und eine Bedingung verwenden, um eine Variable innerhalb von Twig zu setzen? So wie
Dann können Sie es wiederholt in anderen Bedingungen im Rest der Vorlage verwenden.
Sie können PHP-Funktionen auch als Twig-Funktionen neu implementieren, aber das liegt etwas außerhalb meines Komfortbereichs.
TJ, danke, dass Sie dieses Beispiel klar dargelegt haben, es ist wirklich gut, eine prägnante Referenz zu haben.
Twig ist großartig! Warum nicht alles geben und einfach Craft benutzen? Dann können Sie sich all die anderen Kopfschmerzen ersparen, die WordPress Ihnen bereitet. ;)
+1 Craft ist viel schöner zu benutzen.
„Benutzen Sie einfach _______“
Ernsthaft, +2 für Craft.
WP ist in einigen Situationen großartig, aber wenn Sie ACF für Felder verwenden und Timber, um Twig zu erhalten, haben Sie 2 weitere Abhängigkeiten, auf die Sie sich nun bei jedem Build verlassen müssen.
Ich deaktiviere normalerweise Kommentare und füge einige benutzerdefinierte Beitragstypen hinzu, wofür Sie wahrscheinlich 1 oder 2 weitere Plugins benötigen, je nachdem, welche Art von Websites Sie erstellen. Jetzt sind Sie bei mindestens 4 Plugins. Sie werden wahrscheinlich auch irgendwann eine Art Caching-Lösung wünschen.
Craft hat all das integriert, kombiniert mit einer besseren Benutzeroberfläche. In einer Kunden-/Designer-Situation funktioniert es wunderbar, aber offensichtlich YMMV. Wenn Sie vorgefertigte Themes wie Genesis oder etwas von Themeforest verwenden, werden Sie wahrscheinlich nicht verstehen, worum es bei Craft geht, aber jeder, der seine eigene HTML und CSS erstellt und darauf achtet, welchen Markup sein CMS ausspuckt, wird Craft meiner Meinung nach lieben.
Schauen Sie sich etwas an, an dem ich gearbeitet habe
https://github.com/imranismail/rapido
Hallo Imran, danke für das Teilen! Ich mag es wirklich.
Benutzen Sie einfach MODX, hat diese Funktionen schon seit Jahren...
http://modx.com/
„Benutzen Sie einfach _______“
Ich arbeite schon eine Weile mit Symfony und viele von Ihnen wissen, dass Twig die bevorzugte Template-Engine dort ist. Twig ist unglaublich leistungsfähig und flexibel, gibt eine Menge Freiheit.
Aber das ist das Problem: es ist *zu* mächtig. Es kann viel tun, es kann *zu viel* tun. Sie können *Logik* in Ihre *Vorlagen* mit Twig einbauen. Es ist so einfach, es falsch zu verwenden.
Wenn man darüber nachdenkt, was hindert Sie daran, PHP direkt für das zu verwenden, wofür es konzipiert wurde, d.h. für das Templating von Seiten? Warum eine langsamere Schicht hinzufügen? Tatsächlich können Sie in Symfony PHP anstelle von Twig verwenden.
Ich benutze immer noch Twig, aber ich bin zunehmend davon überzeugt, dass eine Vorlagensprache wie Handlebars für die Templating-Anforderungen aller ausreichen sollte.
Hallo, toller Artikel, eine Frage zur Leistung: macht Timber WordPress langsamer (insbesondere auf Shared Servern) oder ist es kaum spürbar und was den Speicherverbrauch angeht, steigt er stark an? Oder ist es im Grunde dasselbe?
Hallo Jairo,
Danke! Persönlich habe ich keine Leistungseinbußen bei der Verwendung von Timber festgestellt. Der Plugin-Autor geht im Abschnitt Leistung der Dokumentation detailliert darauf ein, wo angegeben wird, dass die Leistungseinbußen gering bis gar nicht vorhanden sind.
All dies wird zu einem geringeren Problem, wenn Sie ein Caching-Plugin verwenden, das eine statische Seite ausliefert und somit den Rendering-Prozess für Twig umgeht.
Ich kann nicht für jeden Server sprechen, nur für meine eigenen Erfahrungen, die bisher wirklich gut waren.
Ich liebe Timber auch. Ich entwickle hauptsächlich Themes mit Timber und Branch und bin der Entwickler von branch, einem WordPress Starter-Theme, das auf Timber + Bootstrap basiert.
Schauen Sie sich das unbedingt an.
Danke für diesen Artikel. Ein Vorteil, den ich sehe, wenn man Twig verwendet, ist, dass ein Großteil des Vorlagencodes für Vorlagensprachen mit ähnlicher Syntax wie Mustache, Liquid oder Swig wiederverwendet werden kann.