Drupal 8根据当前路线更改菜单链接

时间:2018-08-08 16:20:32

标签: drupal menu drupal-views drupal-8 drupal-contextual-filters

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

/category/%cid/product/%pid

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

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

/privacy-policy 

成为

/productname/privacy-policy

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

/productname/privacy-policy

如何实现这一目标。

注意: 基于我尝试过的Drupal中的讨论,

  • 要更改路由,请实现RouteSubscriber
  • 要更改菜单链接,请使用hook_menu_links_discovered_alter()

我无法实现这一目标。

1 个答案:

答案 0 :(得分:1)

我正在尝试通过使用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';
    }

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