You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 8如何在Twig中取消菜单项标题的HTML转义?

解决Drupal Twig中菜单项HTML标签被转义的问题

遇到这种Drupal自动转义HTML标签的情况,其实Twig本身就提供了现成的解决方案,我给你两种靠谱的处理方式:

  • 直接在Twig模板里用raw过滤器
    这是最快的解决办法,当你在menu.html.twig里输出菜单项的标题文本时,给标题加上|raw过滤器,就能告诉Twig:“这内容是安全的,别转义它的HTML标签”。

    举个具体的修改例子,假设你原来输出链接的代码是这样的:

    <a href="{{ item.url }}">{{ item.title }}</a>
    

    把它改成:

    <a href="{{ item.url }}">{{ item.title|raw }}</a>
    

    这样<strong>标签就会被正常渲染,而不是转成实体字符了。

  • 在主题预处理函数里标记内容为安全(更推荐)
    如果想更安全地控制内容(避免XSS风险),可以在你的主题.theme文件里添加预处理逻辑,把包含HTML的标题标记为“安全标记过的内容”。

    比如你可以写这样的代码:

    function yourtheme_preprocess_menu_link(&$variables) {
      // 匹配你要修改的菜单项标题
      if ($variables['title'] == 'Learn more') {
        // 用Drupal的Markup类创建安全的HTML内容
        $variables['title'] = \Drupal\Core\Render\Markup::create('Learn <strong>more</strong>');
      }
    }
    

    这种方式的好处是,你可以精准控制哪些菜单项的标题不被转义,而且明确告诉系统这段内容是安全的,比直接用raw更稳妥。

⚠️ 注意:不管用哪种方法,都要确保你要渲染的HTML内容是可信的——如果标题来自用户提交的内容,一定要先做安全过滤,不然可能会有XSS攻击的风险哦!

内容的提问来源于stack exchange,提问作者Andrew Magill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:30:48