Drupal 8 根据当前路线更改菜单链接
Posted
技术标签:
【中文标题】Drupal 8 根据当前路线更改菜单链接【英文标题】:Drupal 8 Change menu link based on current route 【发布时间】:2018-08-08 16:20:32 【问题描述】:我有一个带有上下文过滤器的 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】:我正在尝试通过使用 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';
链接标题和网址已更改。但我面临的问题是这些更改被大量缓存。 IE。如果我根据当前语言设置标题,第一次访问的标题将是正确的,但之后的每次访问都会记住并使用该标题。因此,当我切换语言时,标题将保持不变(缓存的)。
【讨论】:
在这里查看我的其他解决方案(没有缓存问题):***.com/questions/52254659/…以上是关于Drupal 8 根据当前路线更改菜单链接的主要内容,如果未能解决你的问题,请参考以下文章