【问题标题】:What variables are in the Drupal $primary_nav variableDrupal $primary_nav 变量中有哪些变量
【发布时间】:2018-11-07 21:00:53
【问题描述】:

如何为 $primary_nav 变量中的每个菜单项提取所有标签和链接的数组?

【问题讨论】:

  • 我要拉出主要的导航变量,然后我想遍历该变量中的所有元素。从这些元素中,我想提取每个导航标签的列表以及与之关联的每个链接。
  • 你描述了你想做什么。你试过什么了 ?这里的问题是什么,是关于 Drupal 主题变量,是关于如何在 PHP 中循环遍历数组/对象??
  • 您将始终对如何通过调试变量以了解其结构方式(例如,它是嵌套的对象数组还是平面整数列表?)有更好的直觉最终使用它,循环遍历元素并获取您需要的内容。没有人可以为您执行此操作,但您最终可以发布调试输出、错误日志或代码示例,因此您可以获得更多专门的帮助,但请记住保持通用性,以便其他用户可以从您的帖子及其答案中受益。

标签: drupal drupal-7


【解决方案1】:

您可以只使用 php 的print_r()。或者使用像 devel 这样的专用模块:它提供了漂亮的打印变量的助手,包括数组和对象。还提供了清除缓存按钮,可以生成随机节点等。

我认为 devel 的 dprint_r()dpm() 是最常用的函数,我猜对 Drupal 开发人员来说最有用的是打印和调试变量。

在您的情况下,$primary_nav 是一个 已处理 变量:它首先由注册主题中的函数准备,然后可以在 processpreprocess hooks 由主题和/或模块提供。

知道了这一点,您可以直接从您正在处理的模板中打印它,例如 page.tpl.php

<?php if (!empty($primary_nav)): ?>
  <!--<?php print render($primary_nav); ?>-->
  <?php dpm($primary_nav); ?>
<?php endif; ?>

.. 或在 processpreprocess 函数中“更早地”调试它,例如:

function some_preprocess_page(&$variables) {
  dpm($variables['primary_nav']);
}

另外,如果您不知道模板中发生了什么或哪些变量可用,将 php 的 get_defined_vars() 与漂亮的打印功能结合起来会很有帮助:dpm(get_defined_vars());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多