Twigeasy_svg_icon_exists()

easy_svg_icon_exists()

Prüf in einem Timber- oder Twig-Template, ob ein Icon wirklich gerendert wird, bevor du es zeichnest, damit nie ein leerer Wrapper zurückbleibt.

Twig-Funktion · Easy SVG Pro · Status: Stabil

Icons werden umbenannt, Sets gelöscht, Felder enthalten alte Werte. Diese Twig-Funktion beantwortet eine Frage, bevor du etwas ausgibst: Würde dieses Icon etwas zeichnen? Sie ist nur true, wenn das Icon echtes Markup ergibt, aus jeder Sammlung der Seite.

Verwendung

{% if easy_svg_icon_exists( 'collection/slug' ) %}
	...
{% endif %}

Registriert in includes/twig/twig.php über den Filter timber/twig. Verfügbar seit Easy SVG Pro 1.7.0.

Wann du es brauchst

  • Du gibst Wrapper-Markup um ein Icon aus (ein Badge, einen Kreis, einen Link) und willst keinen leeren Wrapper, wenn das Icon fehlt.
  • Du willst einen sichtbaren Ersatz: ein anderes Icon, einen Buchstaben oder gar nichts.
  • Du debuggst ein Template und willst sehen, welche Adressen sich auflösen.

Nicht dafür gedacht:

  • Du gibst das Icon direkt nach der Prüfung aus. Dann wird es zweimal gerendert. Fang die Ausgabe lieber mit einem set-Block ein (siehe Stolperfallen).
  • Du willst in PHP prüfen. Ruf easy_svg_icon() aus dem kostenlosen Plugin auf und vergleich mit einem leeren String.

Parameter

body
namestring
Required

Eine Icon-Adresse collection/slug oder ein reiner Slug aus der kostenlosen Bibliothek. Ein Wert, der kein String oder leer ist, ergibt false.

Rückgabewert

returnbool

true, wenn das Icon nicht leeres Markup ergibt, sonst false.

Standardwert

Es gibt keine optionalen Argumente.

Beispiele

Das Badge nur ausgeben, wenn das Icon da ist

{% if easy_svg_icon_exists( 'acme/award' ) %}
	<span class="badge badge--award">
		{{ easy_svg_icon( 'acme/award', { label: 'Preisträger' } ) }}
	</span>
{% endif %}

Ein Ersatz-Icon pro Post-Type

{% set ref = post.meta( 'easy_svg_icon' ) ?: 'acme/' ~ post.post_type %}
{% if not easy_svg_icon_exists( ref ) %}
	{% set ref = 'acme/document' %}
{% endif %}
{{ easy_svg_icon( ref ) }}

Agentur: eine Prüfseite fürs Design-Team

{# templates/icon-check.twig, nur auf Staging für Admins verlinkt #}
<table>
	{% for ref in [ 'acme/phone', 'acme/mail', 'acme/map-pin', 'acme/old-logo' ] %}
		<tr>
			<td><code>{{ ref }}</code></td>
			<td>{{ easy_svg_icon_exists( ref ) ? 'ok' : 'FEHLT' }}</td>
		</tr>
	{% endfor %}
</table>

Ruf sie nach einem Umbenennen oder Import auf, und du siehst sofort, welche Adressen in deinen Templates nicht mehr aufgehen.

Defensiv: prüfen und zeichnen mit einem Render-Durchlauf

{% set icon %}{{ easy_svg_icon( 'acme/award' ) }}{% endset %}
{% if icon|trim is not empty %}
	<span class="badge">{{ icon }}</span>
{% endif %}

Hier kommt easy_svg_icon_exists() gar nicht vor, und genau darum geht es: Gibst du das Icon ohnehin aus, ist Einfangen günstiger als vorher prüfen.

So funktioniert es

Die Funktion ruft denselben Renderer wie easy_svg_icon() auf und gibt zurück, ob das Ergebnis ein nicht leerer String ist. Sie schaut nicht im Icon-Post-Type des kostenlosen Plugins nach. Das ist wichtig: Pro-Icon-Sets, Theme-Ordner, Drop-in-Ordner und Registrierungen im Code gibt es nur über den Filter easy_svg_icon_markup, eine Suche im Post-Type würde sie alle für fehlend halten.

Registriert wird sie unter denselben Bedingungen wie die anderen Twig-Funktionen: aktive Lizenz, Timber / Twig unter Icons → Funktionen eingeschaltet und eine Twig-Umgebung mit addFunction().

Stolperfallen

  • Sie kostet einen ganzen Render-Durchlauf. Jeder Aufruf rendert das Icon, mit jedem Filter auf easy_svg_icon_markup, auch Stile & Theme-Farben, wenn das an ist. Prüfen und dann ausgeben rendert doppelt. Nimm in Schleifen das Einfang-Muster aus dem letzten Beispiel.
  • Unbekannte Funktion, wenn das Feature aus ist. Läuft die Lizenz aus oder wird die Funktion abgeschaltet, fehlt sie, und Twig kann ein Template, das sie aufruft, nicht kompilieren. Ausgerechnet die Prüfung bricht dann die Seite. Siehe das Tutorial zu Timber und Twig.
  • Existiert heißt "wird hier und jetzt gerendert". Ein Icon in einem Set im Entwurf, eine Ordner-Sammlung bei ausgeschalteten Theme- und Ordner-Quellen oder ein Set bei ausgeschaltetem Icon-Set-Editor ergeben false, obwohl Dateien oder Posts existieren.

Siehe auch