Home php How to display subparagraphs of a multi-level menu to Bitrix?

How to display subparagraphs of a multi-level menu to Bitrix?

Author

Date

Category

There is a next array with points and sub-paragraphs of a multi-level menu:

& lt;?
$ AMENULINKS = Array (
  0 = & gt; Array (
    "Distance",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "1"
    ),
    "",
  ),
  1 = & gt; Array (
    "Information",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "1",
      ),
    "",
  ),
  2 = & gt; Array (
    "Equipment",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "1"
    ),
    "",
  ),
  3 = & gt; Array (
    "Partners",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "1"
    ),
    ""
  ),
  4 = & gt; Array (
    "Contacts",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "1"
    ),
    ""
  ),
  // Subclauses
  5 = & gt; Array (
    "Rotunda",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    "",
  ),
  6 = & gt; Array (
    "Moebius trail",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    "",
  ),
  7 = & gt; Array (
    "Firebird",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    "",
  ),
  8 = & gt; Array (
    "Bobur",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    ""
  ),
  9 = & gt; Array (
    "Sloth",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    ""
  ),
  10 = & gt; Array (
    "Sturm of the sky [Kids]",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "1",
    ),
    ""
  ),
  11 = & gt; Array (
    "Position",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    "",
  ),
  12 = & gt; Array (
    "Program",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    "",
  ),
  13 = & gt; Array (
    "About Nikola-Leniv",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    "",
  ),
  14 = & gt; Array (
    "How to get there",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    ""
  ),
  15 = & gt; Array (
    "Accommodation",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    ""
  ),
  16 = & gt; Array (
    "Nutrition",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "2",
    ),
    ""
  ),
  17 = & gt; Array (
    "Mandatory gear",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "3",
    ),
    "",
  ),
  18 = & gt; Array (
    "Nutrition Recommendations",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "3",
    ),
    ""
  ),
  19 = & gt; Array (
    "Equipment Recommendations",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "3",
    ),
    ""
  ),
  20 = & gt; Array (
    "Camping",
    "",
    Array (),
    Array (
      "Depth_level" = & gt; "2",
      "Have_parent" = & gt; "3",
    ),
    ""
  )
);
? & gt; 

You must execute sub-clauses of the corresponding menu items in the site template. I tried to perform result_modifier.php as follows, but subparagraphs are not output:

$ arresult ['top'] = [];
$ arresult ['child'] ['distances'] = [];
$ ArResult ['Child'] ['info'] = [];
$ arresult ['Child'] ['Equip'] = [];
Foreach ($ Arresult AS $ Item) {
  if ($ item ['params'] ['depth_level'] == 1) {
    $ arresult ['top'] [] = $ item;
  } ELSEIF ($ item ['params'] ['depth_level'] == 2 & amp; & amp; $ item ['params'] ['have_parent'] == 1) {
    $ arresult ['child'] ['distances'] [] = $ item;
  } elseif ($ item ['params'] ['depth_level'] == 2 & amp; & amp; $ item ['params'] ['have_parent'] == 2) {
    $ arresult ['child'] ['info'] [] = $ item;
  } elseif ($ item ['params'] ['depth_level'] == 2 & amp; & amp; $ item ['params'] ['have_parent'] == 3) {
    $ Arresult ['Child'] ['Equip'] [] = $ Item;
  }
}
$ arresult ['child'] = array_chunk ($ arresult ['child'], 2);

However, neither items nor subparagraphs menu in the template are output. How to fix the output of items and subparagraphs?
Template for output:

& lt; ul class = "header-menu__wrap" & gt;
  & lt;? php foreach ($ arresult ['top'] as $ itemtop) {? & gt;
    & lt; li class = "Header-menu__item" & gt;
      & lt; a href = "& lt;? = $ itemtop ['Link']? & gt;" class = "Header-menu__link" & gt; & lt;? = $ itemtop ['Text']? & gt; & lt; / a & gt;
      & lt; div class = "Header-DD-Menu" & gt;
        & lt; div class = "Header-DD-Menu__Wrap" & gt;
          & lt; div class = "Container" & gt;
            & lt; div class = "row" & gt;
              & lt;? php foreach ($ arresult ['child'] as $ itemgroup) {? & gt;
                & lt; ul class = "Header-DD-Menu__COLUMN COL" & GT;
                  & lt;? php foreach ($ itemgroup as $ itemchild) {? & gt;
                    & lt; li & gt;
                      & lt; a class = "Header-dd-menu__link" href = "" & gt;
                        & lt;? = $ itemchild ['Text']? & gt;
                      & lt; / a & gt;
                    & lt; / li & gt;
                  & lt;? php}? & gt;
                & lt; / ul & gt;
              & lt;? php}? & gt;
            & lt; / div & gt;
          & lt; / div & gt;
        & lt; / div & gt;
      & lt; / div & gt;
    & lt; / li & gt;
  & lt;? php}? & gt;
& lt; / ul & gt;

Answer 1

it turned out:

template.php

& lt; ul class = "header-menu__wrap" & gt;
& lt;? php foreach ($ arresult ['menu'] as $ itemtop) {? & gt;
  & lt; li class = "Header-menu__item" & gt;
    & lt; a href = "& lt;? = $ itemtop ['Link']? & gt;" class = "Header-menu__link" & gt; & lt;? = $ itemtop ['Text']? & gt; & lt; / a & gt;
    & lt;? php if (! Empty ($ itemtop ['children'])) {? & gt;
      & lt; div class = "Header-DD-Menu" & gt;
        & lt; div class = "Header-DD-Menu__Wrap" & gt;
          & lt; div class = "Container" & gt;
            & lt; div class = "row" & gt;
              & lt;? php foreach ($ itemtop ['Children'] AS $ Group) {? & GT;
                & lt; ul class = "Header-DD-Menu__COLUMN COL" & GT;
                  & lt;? php foreach ($ group as $ itemchild) {? & gt;
                    & lt; li & gt;
                      & lt; a class = "header-dd-menu__link" href = "& lt;? = $ itemchild ['Link']? & gt;" & gt;
                        & lt;? = $ itemchild ['Text']? & gt;
                      & lt; / a & gt;
                    & lt; / li & gt;
                  & lt;? php}? & gt;
                & lt; / ul & gt;
              & lt;? php}? & gt;
            & lt; / div & gt;
          & lt; / div & gt;
        & lt; / div & gt;
      & lt; / div & gt;
    & lt;? php}? & gt;
  & lt; / li & gt;
& lt;? php}? & gt;

result_modifier.php

& lt;? php
$ result ['menu'] = [];
Foreach ($ Arresult AS $ ID = & GT; $ Item) {
   if ($ Item ['Params'] ['depth_level'] === '1') {
     $ Result ['Menu'] [$ id + 1] = $ item;
   } elseif (! Empty ($ ParentID = $ item ['params'] ['have_parent'])) {
     $ Result ['Menu'] [$ ParentID] ['Children'] [] = $ Item;
   }
}
$ arresult = $ result;
Foreach ($ ArResult ['Menu'] AS & AMP; $ Item) {
   If (! Empty ($ item ['children'])) {
     $ item ['Children'] = Array_Chunk ($ item ['children'], 2);
   }
}

Programmers, Start Your Engines!

Why spend time searching for the correct question and then entering your answer when you can find it in a second? That's what CompuTicket is all about! Here you'll find thousands of questions and answers from hundreds of computer languages.

Recent questions