pdoMenu выборка с двухуровневого списка не оборачивается в flex box со стилем.

Добрый день!
Формирую пункты меню вот с этих ресурсов:

{if $_modx->resource.materials[0] == 1}
			        {if $_modx->resource.materialtype[0] == 'Кровати'}
                                    <div class="mb-3 color-black small-text">Выберите материал и цвет</div>
                                    <div class="tabs product-materials mb-2">
                                        <div class="tabs-caption d-flex flex-wrap">
                                            <div class="tabs-caption d-flex flex-wrap">
                                                {'pdoMenu' | snippet : [
                                                    'parents' => 414
                                                    'level' => 1
                                                    'sortby' => 'menuindex'
                                                    'tpl' => '@INLINE 
                                                        <div class="tabs-caption__item{if $idx == 1} active{/if}">
                                                            <div class="material-title">{$pagetitle}</div>
                                                            {if $introtext}<span class="material-click">?</span>
                                                            <div class="material-desc">{$introtext}</div>{/if}
                                                        </div>
                                                    '
                                                    'tplOuter' => '@INLINE {$wrapper}'
                                                ]}                    
                                            </div>
                                        </div>
                                        <div class="tabs-content">
                                            {'pdoMenu' | snippet : [
                                                'parents' => 414
                                                'level' => 2
                                                'sortby' => 'menuindex'
                                                'includeTVs' => 'img'
                                                'tvPrefix' => ''
                                                'tpl' => 'tplMaterialImg'
                                                'tplOuter' => '@INLINE {$wrapper}'
                                            ]}  
                                        </div>
                                    </div>
                                    <div class="mb-5"><a class="link-underline color-brown" href="{912 | url}">Заказать образцы 
 тканей домой</a></div>
{/if}
{/if}
Когда тип материала == 'Кровати' то меню генерируется норм по шаблону tplMaterialImg (см. код ниже)

tplMaterialImg
{if $parent != 414}
                                                        {foreach json_decode($_modx->resource.photos) as $item}
                                                            {if $item.material == $pagetitle}
                                                                {var $photo = $item.photo}
                                                            {/if}
                                                        {/foreach}
                                                        
                                                        <label class="product-material">
                                                            <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 418}checked{/if} data-cat="{$parent}" data-img="{$photo}">
                                                            <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
                                                            <div class="product-material__color">{$pagetitle}</div>
                                                        </label>
                                                    {else}                                        
                                                        <div class="tabs-content__item{if $idx == 1} active{/if}">
                                                            <div class="d-flex flex-wrap">
                                                                {$wrapper}
                                                            </div>
                                                        </div>
{/if}
Мне нужно вывести для конкретного родительского ресурса картинки материалов потомков:

{if $_modx->resource.materialtype[0] == 'Кровати ЛДСП'}
				<div class="mb-3 color-black small-text">Выберите материал и цвет</div>
                                    <div class="tabs product-materials mb-2">
                                        <div class="tabs-caption d-flex flex-wrap">
                                            <div class="tabs-caption d-flex flex-wrap">
                                                {'pdoMenu' | snippet : [
                                                    'parents' => 414
						    'resources' => 953
                                                    'level' => 1
                                                    'sortby' => 'menuindex'
                                                    'tpl' => '@INLINE 
                                                        <div class="tabs-caption__item{if $idx == 1} active{/if}">
                                                            <div class="material-title">{$pagetitle}</div>
                                                            {if $introtext}<span class="material-click">?</span>
                                                            <div class="material-desc">{$introtext}</div>{/if}
                                                        </div>
                                                    '
                                                    'tplOuter' => '@INLINE {$wrapper}'
                                                ]}                       
                                            </div>
                                        </div>
                                        <div class="tabs-content">
                                            {'pdoMenu' | snippet : [
						'parents' => 953
                                                'level' => 1
                                                'sortby' => 'menuindex'
                                                'includeTVs' => 'img'
                                                'tvPrefix' => ''
                                                'tpl' => 'tplMaterialImg'
                                                'tplOuter' => '@INLINE {$wrapper}'
                                            ]}  
                                        </div>
                                    </div>								
{/if}
При такой генерации материалы выводятся без вот этих флекс-боксовых оберточных слоев:

<div class="tabs-content__item{if $idx == 1} active{/if}">
    <div class="d-flex flex-wrap">
        {$wrapper}
    </div>
</div>
т.е. вот так:
<label class="product-material">
    <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 418}checked{/if} data-cat="{$parent}" data-img="{$photo}">
        <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
        <div class="product-material__color">{$pagetitle}</div>
</label>
                                .    .    .
                                .    .    .
                                .    .    .
А нужно как в первом примере выборки всех материалов:

<div class="tabs-content__item{if $idx == 1} active{/if}">
    <div class="d-flex flex-wrap">
        <label class="product-material">
        <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 956}checked{/if} data-cat="{$parent}" data-img="{$photo}">
         <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
        <div class="product-material__color">{$pagetitle}</div>
        </label>
    </div>
</div>
                                .    .    .
                                .    .    .
                                .    .    .

Подскажите как поправить шаблон или вызов сниппета pdoMenu?
0verride
08 декабря 2021, 11:58
modx.pro
70
0

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

Роман
08 декабря 2021, 17:01
0
Слишком много кода, никто разбираться не будет. Напишите простой пример.
    0verride
    08 декабря 2021, 20:43
    0
    Мне нужно сделать одноуровневую выборку по родителю с id 953,

    <div class="tabs-content">
                                                {'pdoMenu' | snippet : [
    						'parents' => 953
                                                    'level' => 1
                                                    'sortby' => 'menuindex'
                                                    'includeTVs' => 'img'
                                                    'tvPrefix' => ''
                                                    'tpl' => 'tplMaterialImg'
                                                    'tplOuter' => '@INLINE {$wrapper}'
                                                ]}  
                                 </div>
    и превьюшки img упаковать вот в такую обертку:
    <div class="tabs-content__item{if $idx == 1} active{/if}">
        <div class="d-flex flex-wrap">
            <label class="product-material">
            <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 956}checked{/if} data-cat="{$parent}" data-img="{$photo}">
             <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
            <div class="product-material__color">{$pagetitle}</div>
            </label>
        </div>
    </div>
    Как правильно реализовать этот шаблон?
    tplMaterialImg
    {if $parent != 414}
                                                            {foreach json_decode($_modx->resource.photos) as $item}
                                                                {if $item.material == $pagetitle}
                                                                    {var $photo = $item.photo}
                                                                {/if}
                                                            {/foreach}
                                                            
                                                            <label class="product-material">
                                                                <input class="d-none" type="radio" name="options[mat]" value="{$pagetitle}" {if $id == 418}checked{/if} data-cat="{$parent}" data-img="{$photo}">
                                                                <div class="product-material__img"><img class="d-block lazy" src="assets/template/img/default.jpg" data-src="{$img | phpthumbon : 'w=114&h=114&zc=1&q=95'}" alt=""></div>
                                                                <div class="product-material__color">{$pagetitle}</div>
                                                            </label>
                                                        {else}                                        
                                                            <div class="tabs-content__item{if $idx == 1} active{/if}">
                                                                <div class="d-flex flex-wrap">
                                                                    {$wrapper}
                                                                </div>
                                                            </div>
    Как объяснить короче не знаю.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2