it-swarm.com.de

Wie füge ich lokalen Aufgabenlinks in Twig template) eine Klasse hinzu?

Ich habe benutzerdefinierte Vorlagen verwendet, um BEM-Stilklassen sowohl zum UL-Wrapper für lokale Aufgaben als auch zu den einzelnen LI-Elementen hinzuzufügen. Ich möchte auch dem eigentlichen Link für lokale Aufgaben (Registerkarten) eine Klasse hinzufügen.

Dies ist der Standardcode in der Classy-Vorlage:

<li{{ attributes.addClass(is_active ? 'is-active') }}>{{ link }}</li>

Gibt es keine Möglichkeit, dem Element {{ link }} Einfach eine Klasse hinzuzufügen?

5
Ryan
{% set link = link|merge({ '#attributes': { 'class': [ 'your', 'custom', 'classes' ] } }) %}

<li>{{ link }}</li>
7
kLezer

sie können eine Klasse mit dem Attributarray der Funktion TWIG) hinzufügen:

{{ link(item.title, item.url, { 'class':['my-custom-class'] }) }}

leider überschreibt dies alle Klassen, die von anderen Contrib-Modulen vorverarbeitet wurden. Ich suche derzeit nach einer Möglichkeit, eine neue Klasse an den {{link}} anzuhängen

2
Joe Mewes

Sie können nicht aus der Vorlage, aber Sie können es aus einem Vorverarbeitungs-Hook tun. Wenn Sie sich das Original von Drupal ansehen:

function template_preprocess_menu_local_task(&$variables) {
  ...
  $variables['link'] = array(
    '#type' => 'link',
    '#title' => $link_text,
    '#url' => $link['url'],
    '#options' => $link['localized_options'],
  );
}

In einem Thema können Sie eine Klasse in Ihrem eigenen Vorprozess hinzufügen. So etwas sollte den Trick machen:

function THEME_preprocess_menu_local_task(&$variables) {
  $variables['link']['#options']['attributes']['class'][] = 'my-extra-class';
}
1
googletorp