【问题标题】:Drupal 8 Change menu link based on current routeDrupal 8 根据当前路线更改菜单链接
【发布时间】: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()

我做不到。

【问题讨论】:

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


    【解决方案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。如果我根据当前语言设置标题,第一次访问的标题将是正确的,但之后的每次访问都会记住并使用该标题。因此,当我切换语言时,标题将保持不变(缓存的)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2022-01-02
    • 2016-10-21
    • 2016-09-03
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多