首页 > 解决方案 > Drupal 8 根据当前路线更改菜单链接

问题描述

我有一个带有上下文过滤器的 Drupal 8 页面视图,其路径如下:

/category/%cid/product/%pid

这里 %cid 和 %pid 是页面视图的上下文过滤器。

在此页面中,我想更改页脚菜单,以更改链接,以便:

/privacy-policy 

变成

/productname/privacy-policy

仅当创建了任何节点并且它具有 url 路径设置时:

/productname/privacy-policy

如何实现这一点。

注意:根据我尝试过的Drupal中的讨论,

我无法做到这一点。

标签: drupalmenudrupal-viewsdrupal-8drupal-contextual-filters

解决方案


我试图通过使用 hook_menu_links_discovered_alter() 来实现类似的事情,它通常可以工作:

  function mymodule_menu_links_discovered_alter(&$links) {
      $links['linkid']['title'] = 'Some new title';
      $links['linkid']['url'] = 'http://www.google.com';
    }

链接标题和网址已更改。但我面临的问题是这些更改被大量缓存。即,如果我根据当前语言设置标题,第一次访问时标题将是正确的,但之后的每次访问都会记住并使用该标题。因此,当我切换语言时,标题将保持不变(缓存一个)。


推荐阅读