pdoMenu, fenom и вывод id

Привет. Странная штука.
В чанке для tplInner не выводится id обрабатываемого ресурса через fenom.
При чем с синтаксисом modx все работает — [[+id]] выводит правильный id. А {$id} не выводит ничего. Перепробовал, кажется, все:
{$_pls['id']}
{$_modx->getPlaceholder('id')}
{'id' | placeholder}
Во всех вариантах пустой вывод.

При чем в шаблоне вернего уровня {$id} работает.

Как можно решить эту проблему?
dopeless
06 августа 2019, 02:18
modx.pro
77
0

Комментарии: 14

ElenaLelo
06 августа 2019, 09:16
0
tplInner это же обертка, разве она содержит какие либо плейсхолдеры кроме как [[+wrapper]], [[+classnames]]...?
ElenaLelo
06 августа 2019, 09:40
0
Если оставить tplInner пустым внутри, то выведет все плейсхолдеры, которые содержаться в чанке. Вызов:
[[!pdoMenu?
    &parents=`0`
    &level=`2`
    &tplInner=`test`
    ]]
Результат:
    dopeless
    06 августа 2019, 12:48
    0
    Хм… спасибо.
    Только непонятно, почему тогда [[+id]] работает…
      Максим Кузнецов
      06 августа 2019, 12:57
      0
      У вас, случайно, не inline-чанк?
      Возможно, в памяти системы уже выставлен плейсхолдер [[+id]] и родной парсер просто подхватывает его.
        dopeless
        06 августа 2019, 13:06
        0
        Нет. не инлайн. Отдельный чанк.

        При чем, если я пишу что-то вроде

        {var $rid = '[[+id]]'}, а потом вывожу, как {$rid} — он выводит правильное значение. Только в $rid он сохраняет всю конструкцию [[+id]], а уже потом ее обрабатывает
          ElenaLelo
          06 августа 2019, 13:10
          0
          Оберните подпункты в tplParentRow, а в tplInner оставьте только wrapper.
            dopeless
            06 августа 2019, 13:19
            0
            Мне надо подгрузить в меню «пункты», которые не являються ресурсами. Грубо говоря, на некоторых страницах есть внутреннее меню, которое скролит страницу на нужное место, но это все один ресурс. Поэтому, я во внутреннем меню проверяю, есть ли на этой странице TV, с таким «меню». И в дальнейшем мне надо сделать что-то типа

            {var $scrollMenu = json_decode($id | resource : 'scrollMenu', true)}
            <ul class="submenu {$classnames}">
                {if $scrollMenu | len > 0}
                    {foreach $scrollMenu as $idx => $item}
                    {var $alias = $item.title | strip | lowercase | replace : " " : "-"}
                    <li>
                        <a href="{$id | url : ['scheme' => 'full'] : ['goto' => $alias]}">{$item.title}</a>
                    </li>
                    {/foreach}
                {/if}
               {$wrapper}
            </ul>
            И меню в дальнейшем должно выглядеть как-то так:

            — Услуги (ресурс 1)
            — — Покраска (ресурс 2, скрол на раздел покраска)
            — — Рихтовка (ресурс 2, скрол на раздел рихтовка)
            — — Полировка (ресурс 2, скрол на раздел полировка)
            — — Продажа инструментов (ресурс 3)

            Можно, конечно, подргружать дополнительные пункты яваскриптом, но хотелось обойтиись без дополнительного js
              ElenaLelo
              06 августа 2019, 13:25
              0
              Ну вот все это и поместите tplParentRow. Или я не поняла
              Вот пример. Было:
              &tplInner=`@CODE: <ul>[[+wrapper]]</ul>`
              &tplParentRow=`@CODE: <li>[[+menutitle]]</li>[[+wrapper]]`
              Стало:
              &tplInner=`@CODE: [[+wrapper]]`
              &tplParentRow=`@CODE: <li>[[+menutitle]]</li><ul>[[+wrapper]]</ul>`
                dopeless
                06 августа 2019, 13:28
                0
                Так мне перед [[+wrapper]] надо добавить пункты меню вручную, предварительно проверив, есть ли они в том ресурсе, коотрый обрабатывается в данный момент… или в tplParentRow есть плейсхолдер id?
                  ElenaLelo
                  06 августа 2019, 13:33
                  0
                  Да, содержит id.
                  <ul>                                               // tplOuter
                      <li>Первый пункт. Содержит подменю. Активный   // tplParentRowActive
                          <ul>                                       // tplInner
                              <li>Первый подпункт, текущий</li>      // tplInnerHere
                              <li>Второй подпункт</li>               // tplInnerRow
                          </ul>
                      </li>
                      <li>Второй пункт. Содержит подменю             // tplParentRow
                          <ul>                                       // tplInner
                              <li>Первый подпункт</li>               // tplInnerRow
                              <li>Второй подпункт</li>               // tplInnerRow
                          </ul>
                      </li>
                      <li>Третий пункт</li>                          // tpl
                  </ul>
                    dopeless
                    06 августа 2019, 13:34
                    0
                    Попробую, спасибо
                      dopeless
                      06 августа 2019, 14:38
                      0
                      Не, так не выйдет ничего. [[+wrapper]] строит полностью сабменю —
                      • … и так далее. А мне надо всередину пункты дополнительные натыкать ((
                      ElenaLelo
                      06 августа 2019, 15:04
                      0
                      В tplInner тоже не получится в середину. В MODX есть тип ресурса «ссылка», создаете и в поле «ссылка» указываете ссылку с якорем, куда нужно перебросить. Потом обычный вызов pdoMenu, документы сортируете и группируете как вам нужно.

                      dopeless
                      06 августа 2019, 15:07
                      0
                      Я сделал. В tplInner оставил только {$wrapper}, а в tpl

                      <ul class="mobile-nav__secondary">
                              {foreach $sections as $idx => $section}
                              {var $alias = $section.title | strip | lowercase | replace : " " : "-"}
                              <li>
                                  <a href="{$id | url : ['scheme' => 'full'] : ['goto' => $alias]}">{$section.title}</a>
                              </li>
                              {/foreach}
                              {$wrapper}
                          </ul>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
14