私のtwigファイルには以下が含まれます:
_<li{{ item.attributes.addClass(classes) }}>
{{ link(item.title, item.url) }}
</li>
_
どの出力:
_<li class="menu-item item--search">
<a href="#search" title="Expand Search" data-drupal-link-system-path="<front>">Search</a>
</li>
_
しかし、実際に_<span>
_タグをテキストSearch
の周りに追加したいと思います(スタイルを設定し、テキストをアイコンイメージに置き換えるためです)。
{{ link(item.title, item.url) }}
を_<a href="{{item.url}}"><span>{{item.title}}</span></a>
_で置き換えてみましたが、link
関数(およびmenu_link_attributesモジュール)によって提供される貴重な属性が失われます。 twig=でこれを行うことができるかどうか、または_.theme
_ファイルにある種の関数を記述する必要があります。ご協力ありがとうございます。ありがとうございます。
あなたはこのコードを試すことができます:
{% set tmp = '<span>'~item.title~'</span>' %}
{% set link_text %}{{ tmp|raw }}{% endset %}
{{ link(link_text, item.url) }}
すべてのリンクにマークアップを追加するには、カスタムモジュールに hook_link_alter() を実装します(次の例では、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;
}