在Drupal 8中按区域搜索菜单模板建议

在Drupal 8中按区域搜索菜单模板建议,drupal,drupal-theming,drupal-8,Drupal,Drupal Theming,Drupal 8,我想写一个主题建议,其中添加模板建议包含区域名称。 例如,在我的“header region”中,我需要这样一个模板:menu--header.html.twig,或者在我的“custom region”-menu--custom_region.html.twig 我想如果我有两个菜单在同一个区域,我想模板与一个模板 我在THEMENAME.theme文件中用函数THEMENAME\u theme\u suggestions\u menu\u alter(array&$suggestions,a

我想写一个主题建议,其中添加模板建议包含区域名称。 例如,在我的“header region”中,我需要这样一个模板:menu--header.html.twig,或者在我的“custom region”-menu--custom_region.html.twig

我想如果我有两个菜单在同一个区域,我想模板与一个模板

我在THEMENAME.theme文件中用函数THEMENAME\u theme\u suggestions\u menu\u alter(array&$suggestions,array$variables){}尝试了它,但我不知道如何查询区域,这是一个非常复杂的问题。在blockalter中,我知道区域,所以我想如果我可以调用包含菜单的块,我也可以知道区域

我想在我的.theme文件中执行此操作


有解决方案吗?

我也尝试过实现同样的目标,但建议中不需要区域名称。它可以是块id,当您在标题区域中放置块时,您可以更改该块id


检查答案:

我认为这是不可能的。在THEMENAME\u theme\u suggestions\u menu\u alter(数组和$suggestions,数组$variables)钩子中,$variables不包含菜单所在的位置。所以我们不知道哪个块包含它,或者菜单出现在哪个区域。菜单可以被渲染多次。例如,您可以在“块布局”页面(结构>>块布局)的页脚中放置菜单块,然后可以在页眉中放置相同的菜单块。同样的菜单出现在两个不同的区域,但是在主题中,我们不知道实际的菜单在哪里。谢谢你的回答。我试图找到另一种方法来解决这个问题。