it-swarm.com.de

Wie kann ich meinem Menü-Link ein Span-Tag hinzufügen?

Meine twig Datei enthält Folgendes:

<li{{ item.attributes.addClass(classes) }}>
   {{ link(item.title, item.url) }}
</li>

Welche Ausgänge:

<li class="menu-item item--search">
    <a href="#search" title="Expand Search" data-drupal-link-system-path="&lt;front&gt;">Search</a>
</li>

Aber ich möchte wirklich ein <span> - Tag um den Text Search hinzufügen (zum Stylen und zum Ersetzen des Textes durch ein Symbolbild.

Ich habe versucht, {{ link(item.title, item.url) }} durch <a href="{{item.url}}"><span>{{item.title}}</span></a> Zu ersetzen, aber dadurch gehen wertvolle Attribute verloren, die von der Funktion link (sowie dem Modul menu_link_attributes) bereitgestellt werden. Ich bin mir nicht sicher, ob ich dies in twig) tun kann oder ob ich eine Funktion in meine .theme - Datei schreiben muss. Jede Hilfe ist willkommen. Vielen Dank.

2
Kris Robinson

Sie können diesen Code ausprobieren:

{% set tmp = '<span>'~item.title~'</span>' %}
{% set link_text %}{{ tmp|raw }}{% endset %}
{{ link(link_text, item.url) }}
4
Quan Lee

Zum Hinzufügen von Markups zu allen Links können Sie hook_link_alter () in einem benutzerdefinierten Modul implementieren (im folgenden Beispiel mit dem Namen mymodule):

use Drupal\Component\Render\FormattableMarkup;

/**
 * Implements hook_link_alter().
 */
function mymodule_link_alter(&$variables) {
  if (!empty($variables['options']['span_added'])) {
    return;
  }

  $variables['text'] = new FormattableMarkup('<span>@title</span>', [
    '@title' => $variables['text'],
  ]);

  $variables['options']['span_added'] = TRUE;
}
2
Mario Steinitz