如何解决如何在 drupal 8 中打印钩子的所有变量?
我是 Drupal 8 的新手,我现在遇到了钩子问题。主要是我不太清楚 Drupal 8 中的结构和钩子定义。
所以我的主要问题是我有一些与主菜单交互的钩子(将自定义类名添加到 ul、li 和链接、标签)。我可以通过更改模板文件来实现,现在尝试使用任何钩子来实现。
虽然我发现了一些与菜单 ex 相关的钩子。 hook_contextual_links_alter
(链接:https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Menu%21menu.api.php/function/hook_contextual_links_alter/8.9.x)。
function hook_contextual_links_alter(array &$links,$group,array $route_parameters) {
if ($group == 'menu') {
// Dynamically use the menu name for the title of the menu_edit contextual
// link.
$menu = \Drupal::entityTypeManager()
->getStorage('menu')
->load($route_parameters['menu']);
$links['menu_edit']['title'] = t('Edit menu: @label',[
'@label' => $menu
->label(),]);
}
}
所以我在我的 .theme
文件中安装了带有 kint 函数的 devel 模块并尝试:
function hook_contextual_links_alter(array &$links,array $route_parameters) {
kint($links);
}
然后重新加载我的主页但没有显示。但我可以得到一些关于其他的信息:
function eg_learn_theme_suggestions_page_alter(&$suggestions,$variables) {
kint($suggestions);
}
那么这里发生了什么?你能帮忙解释一下我如何打印这个钩子的变量(在 .theme
文件中)和网站页面来查看打印变量吗?
一般来说,当我找到一个钩子时,我如何打印那里的数组并在网站上检查它?
解决方法
您的方法存在一些问题:
- 在实现
hook
时,您必须将“hook”替换为将钩子函数放入其中的模块名称/主题名称。例如,如果您想在hook_contextual_links_alter
模块中实现your_custom
,它会变成your_custom_contextual_links_alter()
。 - 并非所有钩子都可以在主题中实现。某些钩子只能在模块中实现(在
.module
文件中)。您可以阅读更多here。 - 就您而言,我认为
hook_preprocess_menu
会更合适。您可以在自定义主题中实现它,如下所示:function <your_theme_name>_preprocess_menu(&$variables) { if ($variables['menu_name'] == 'main') { kint($variables); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。