Ich möchte dem <a>
Tag eines Feldes, das aus einem Link und Text besteht , eine Klasse hinzufügen . (Es ist ein Feld vom Typ Link .) Der Name des Feldes lautet content.field_c_button_link.
In der Vorlagendatei möchte ich Folgendes hinzufügen.
{{ content.field_c_button_link.0.addClass('button blue') }}
Wie kann ich eine Klasse richtig hinzufügen?
Laut der Antwort von Patrick Scheffer habe ich mir die Einstellungen für ein Feld angesehen, in dem ich zusätzliche CSS-Klassen hinzufügen kann, aber keine gefunden habe. Dies ist ein Screenshot dessen, was ich im Linkfeld bearbeiten kann.
entities
8
theming
navigation
maidi
quelle
quelle
'#field_name'
statt'#name'
.Dies lässt sich am einfachsten mit einem dieser beiden Module erreichen.
1. Link-Klasse - Das Link-Klassenmodul bietet ein neues Widget-Formular für den Feldtyp Link. Mit diesem Widget kann der Editor Klassen zu Feldern hinzufügen, die mit ihrem Inhalt verknüpft sind.
2. Link - Attribut - Ein Link Attribut Widget ein zusätzliches Widget für das Link - Feld in Drupal Kern gefunden bietet. Mit dem Widget können Benutzer Attribute für ihren Link festlegen.
Darüber hinaus ändert das Modul das Standardfeld für Menüverknüpfungsinhaltsverknüpfungen, um dieses Widget zu verwenden, sodass Menüverknüpfungen auch Attribute haben können
id, class, name, target, rel, accesskey
Sobald eine der beiden Optionen aktiviert ist, können wir die Widget-Einstellungen für das Feld "Verknüpfung" unter "Formularanzeige verwalten" für das jeweilige Verknüpfungsfeld festlegen.
Siehe beigefügtes Bild als Referenz.
Sobald dies festgelegt ist, geben Sie jede Klasse getrennt durch ein Leerzeichen in das Feld ein, das zum Zeitpunkt der Inhaltserstellung angezeigt wird.
quelle
Wenn Sie dieses Linkfeld in Ihrem Inhaltstyp bearbeiten (admin / structure / types / manage / your_contenttype / fields / field_c_button_link), gibt es ein Feld Zusätzliche CSS-Klassen .
Die hier eingegebenen Klassen gelten jedoch für alle mit 'field_c_buton_link' erstellten Links. Wenn Sie eine Klasse an einem bestimmten Ort hinzufügen möchten, können Sie sich hook_preprocess_field] oder theme_link ansehen.
Bearbeiten:
In Drupal 8 gibt es auch ein theme_preprocess_field . Ich denke, Sie können so etwas tun:
Ich habe das noch nicht getestet, daher denke ich, dass Sie einige Anpassungen vornehmen müssen, damit dies funktioniert.
quelle
Um die Antwort von Tony Fisler zu ergänzen, musste ich in Drupal 8.1.2 nach #field_name anstatt nach name suchen , um eine Klasse hinzuzufügen. Das funktioniert bei mir.
Dies ist, wenn Sie die Klasse auf dem
<a>
Tag möchten . Die angebotene Linkklassenlösung ist einfacher, aber als ich sie ausprobierte, galt sie nur für den Wrapper der Klasse a. Wenn Sie also beispielsweise Bootstrap verwenden, funktioniert das Linkklassenmodul nicht.quelle
if ($element['#field_name'] == 'field_link') { foreach ($variables['items'] as $key => $item){ $variables['items'][$key]['content']['#options']['attributes']['class'][] = 'blarg'; } }
Sie können die Project Link-Klasse verwenden , mit der Sie Klassen zum Link-Feld hinzufügen können. Sie sollten das Widget auf "Link with class" setzen. Siehe Screenshot.
quelle
Dazu im Zweig die Feldvorlage verwenden (dh
field--field-c-button-link.html.twig
)Normalerweise durchläuft die Feldvorlage Ihre Links wie folgt:
Aber Sie können das so ändern:
indem Sie den Linktitel und die URL separat behandeln.
quelle
Es ist einfach, einen eigenen Formatierer zu erstellen, der den Link-Formatierer überschreibt. Obwohl ich jetzt sehe, dass es ein Modul dafür gibt ( Link ), können Sie dieses verwenden, da Sie es auf Feldebene anstatt als Einstellung im Formatierer festlegen können. Aber ich dachte, dies könnte für jemanden nützlich sein, der einen eigenen Formatierer für einen Link erstellen möchte, über den Sie eine Klasse hinzufügen können.
quelle
Ich teste es immer noch auf Fehler, aber wenn Sie es in Ihre .theme-Datei einfügen, wird der Feldname als Klasse für alle Felder hinzugefügt. Dies ist für Drupal 8.2:
Es scheint, als sollte jedes Thema etwas beinhalten, um das Styling zu vereinfachen.
quelle
Alle anderen Lösungen fügen dem Feld-Wrapper Klassen hinzu. Dieser fügt dem
<a>
Tag selbst eine Klasse hinzu :quelle
Hier ist die einfache Lösung -
quelle