0

我试图了解 Joomla 3.x 的 mod_menu 文件夹中的 helper.php 文件。我正在查看的代码部分是我们遇到第一个 isset 调用以检查新引入元素的值的地方

特别是我试图弄清楚 $item->shallower 如何能够计算与更深不同的菜单结构的深度,它允许我们通过此特定模块的默认输出模板在列表元素中创建列表。

    // add these elements to each item

    $item->deeper     = false;
    $item->shallower  = false;
    $item->level_diff = 0;

if (isset($items[$lastitem])) {

    $items[$lastitem]->deeper     = ($item->level > $items[$lastitem]->level);
    $items[$lastitem]->shallower  = ($item->level < $items[$lastitem]->level);
    $items[$lastitem]->level_diff = ($items[$lastitem]->level - $item->level);

    var_dump($items[$lastitem]->shallower);//(bool)true or false
    var_dump($item->level);//string
    var_dump($items[$lastitem]->level);//string
    }

我只是在努力理解这段代码,更重要的是 $item->deeper 和 $item->level 似乎都在正常工作,但我不明白 $lastitem]->shallower 正在做什么. 任何解释都是最有帮助的。

问候

w9914420

4

1 回答 1

1

键是$lastitem,是上一个项目创建的索引;它是在您粘贴的代码之后设置的:

$lastitem     = $i;

其中 $i 是上面 foreach 循环中的键,它使用变量 $item 遍历所有 $item。

因此,在下一次迭代中,$items[$lastitem]是否创建了上一个项目。

为了确定一个项目是否有子项目,比较当前和以前的元素级别就足够了。这是实现此目标的一种有效方法,因为只需对所有项目进行一次迭代即可构建数据结构并集成更深/更浅的字段。

Shallower 与更深相反:

+ item
+-- item // this is deeper;
+-- item
+-- item
+ item   // this is shallower;
+ item
于 2014-01-12T17:20:36.877 回答