【问题标题】:Understanding Code block of helper.php in mod_menu of Joomla 3.x了解 Joomla 3.x 的 mod_menu 中 helper.php 的代码块
【发布时间】:2014-01-10 20:48:37
【问题描述】:

我正在尝试了解 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 是什么]->较浅的在做。任何解释都是最有帮助的。

问候

w9914420

【问题讨论】:

    标签: joomla3.0 joomla3.2


    【解决方案1】:

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

    $lastitem     = $i;
    

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

    因此,在下一次迭代中,$items[$lastitem] 是之前创建的项目。

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

    较浅的与较深的相反:

    + item
    +-- item // this is deeper;
    +-- item
    +-- item
    + item   // this is shallower;
    + item
    

    【讨论】:

    • 嗨,Riccardo,很抱歉回复晚了,我不得不离开并进行一些严格的测试。我现在明白你的意思了,因为 $lastitem 引用了循环中创建的最后一次迭代(在代码前面提到过)。我现在明白了更浅的价值是什么以及为什么它很重要。在不偏离主题的情况下,这是通过评估已创建项目的值,然后使用这些值作为标识来表示对象 $items[$lastitems] 中元素的状态,这本身似乎是对象的集合:-S
    • 我在顶部添加了一个简短的解释,希望它有助于更​​好地解释。 $items 确实是所有菜单项的集合。
    • 嗨@riccardozorn 再次感谢您的洞察力,我离开并查看了 foreach 以了解它在做什么,它的行为与我最初的想法不一样;)。干杯
    • 没有它的目的是在 $lastitem 未分配时(即在第一轮)阻止通知。
    • 是的,这两个部分在每次循环迭代时都会执行,除了第一次迭代,因为还没有 $lastitem,所以 if 条件失败。
    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2011-06-21
    • 2011-07-28
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2013-10-20
    • 2016-10-11
    相关资源
    最近更新 更多