Реализация вкладок из ресурсов с помощью fenom

Добрый день!
Есть ресурс с id=2, у него три дочерних ресурса с заголовками «раз, два, три».
Хотел реализовать вывод дочерних ресурсов в виде вкладок, родителя с id=2.
На сайте нашел решение, вроде все сделал правильно, но почему то не выводит тело вкладок, режет и все.
Вот моя конструкция:
{var $resource_list = $_modx->runSnippet('!pdoResources', [
                        	'parents' => 2,
                        	'includeContent'=> 1,
                        	'includeTVs' => 'image',
                    	        'return' => 'json'
                        ])}
                    
 
                        {set $tab_parent = '2'}
                        {set $tabs = ''}
                            {foreach $resource_list | fromJSON as $item}
                            	{set $parent = $item['parent']}
                            	{set $id = $item['id']}
                            	{set $pagetitle = $item['pagetitle']}
                                {set $content = $item['content']}
                                
                            	{if $parent == $tab_parent}
                        		    {set $tabs = $tabs ~ '<li>
                        		                         <a href="#' ~ $id ~ '" aria-controls="' ~ $id ~ '" role="tab" data-toggle="tab">
                        		                            ' ~ $pagetitle ~ '
                        		                         </a>
                            		                  </li>'}
                    	        {else}
                        		    {set $tab_childs[$parent][$id] = '<p>' ~ $content ~ '</p>'}
                            	{/if}

                            {/foreach}
                    
                    
                            <div class="background_block_menu">
                            	<ul class="ul_inline_items">{$tabs}</ul>
                            	<div class="tab-content">
                                    {foreach $tab_childs as $parent_id => $tab_content}
                                      <div role="tabpanel" class="tab-pane fade in active" id="{$parent_id}">
                                        {foreach $tab_content as $tab_item}
                                          {$tab_item}
                                        {/foreach}
                                      </div>
                                    {/foreach}
                                </div>
                            </div>
Режет этот код:
{foreach $tab_childs as $parent_id => $tab_content}
      <div role="tabpanel" class="tab-pane fade in active" id="{$parent_id}">
            {foreach $tab_content as $tab_item}
                  {$tab_item}
            {/foreach}
      </div>
{/foreach}
На выходе получается следующее:

<div class="background_block_menu">
       <ul class="ul_inline_items">
                <li class="active"><a href="#85" aria-controls="85" role="tab" data-toggle="tab">Раз</a></li>
                <li><a href="#86" aria-controls="86" role="tab" data-toggle="tab">Два</a></li>
                <li><a href="#87" aria-controls="87" role="tab" data-toggle="tab">Три</a></li>
        </ul>
        <div class="tab-content">
                 Здесь пусто.....                                                   
        </div>
</div>
где пусто хотелось бы получить следующее…
<div class="tab-content">
        <div role="tabpanel" class="tab-pane fade in active" id="#85">
               <p>Контент ресурса текущей вкладки.</p>
        </div>
        <div role="tabpanel" class="tab-pane fade" id="#86">
               <p>Контент ресурса текущей вкладки.</p>
        </div>
        <div role="tabpanel" class="tab-pane fade" id="#87">
               <p>Контент ресурса текущей вкладки.</p>
        </div>
</div>
Сергей
10 июля 2018, 20:12
modx.pro
1
1 010
0

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

Сергей
10 июля 2018, 22:26
0
Ни кто не поможет?
    Сергей
    10 июля 2018, 23:06
    1
    +1
    Нашел решение, хотя бы подскажите правильное ли оно?
    Есть ресурс «Вкладки», у него дочерние «раз, два, три».
    Необходимо было вывести дочерние ресурсы в виде вкладок, где сами вкладки это заголовок (pagetitle), а тело вкладки, это контент текущей вкладки.
    Что получилось на выходе в браузере.
    <div class="background_block_menu">
            <ul class="ul_inline_items">
                   <li class="active"><a href="#85" aria-controls="85" role="tab" data-toggle="tab" aria-expanded="false">Раз</a><li>
                    <li><a href="#86" aria-controls="86" role="tab" data-toggle="tab" aria-expanded="false">Два</a><li>
                    <li><a href="#87" aria-controls="87" role="tab" data-toggle="tab" aria-expanded="false">Три</a><li>
             </ul>
             <div class="tab-content">
                    <div role="tabpanel" class="tab-pane fade in active" id="85">Контент ресурса</div>
                    <div role="tabpanel" class="tab-pane fade" id="86">Контент ресурса</div>    	            
                    <div role="tabpanel" class="tab-pane fade" id="87">Контент ресурса</div>                                                               	                    
             </div>
    </div>
    Решение:
    {var $resource_list = $_modx->runSnippet('!pdoResources', [
            'parents' => 2,
    	'includeContent'=> 1,
    	'includeTVs' => 'image', //в перспективе буду добавлять изображения
            'return' => 'json'
    ])}
    <ul class="ul_inline_items">
          {foreach $resource_list | fromJSON as $idx => $item}
              {if $idx == '0'}
                    <li class="active"><a href="#{$item.id}" aria-controls="{$item.id}" role="tab" data-toggle="tab">$item.pagetitle}</a></li>
              {else}
                    <li><a href="#{$item.id}" aria-controls="{$item.id}" role="tab" data-toggle="tab">$item.pagetitle}</a></li>
              {/if}
          {/foreach}  
    </ul>
    <div class="tab-content">
          {foreach $resource_list | fromJSON as $idx => $item}
                {if $idx == '0'}
                      <div role="tabpanel" class="tab-pane fade in active" id="{$item.id}">{$item.content}</div>
                 {else}
                      <div role="tabpanel" class="tab-pane fade" id="{$item.id}">{$item.content}</div>
                 {/if}    
           {/foreach}
    </div>
    За основу взял данное решение.
      Баха Волков
      11 июля 2018, 05:02
      1
      +2
      {var $resource_list = $_modx->runSnippet('pdoResources', [  // Восклицательный знак не обязателен
              'parents' => 2,
      	'includeContent'=> 1,
      	'includeTVs' => 'image',
              'return' => 'json'
      ])}
      
      {var $all = $resource_list | fromJSON}  // Можно и один раз преобразовать
      
      {if $all}  // Проверка на пустоту, если переменная пустая, то не выводить
      <ul class="ul_inline_items">
            {foreach $all as $item}
                    <li{if $item@first} class="active"{/if}><a href="#{$item.id}" aria-controls="{$item.id}" role="tab" data-toggle="tab">{$item.pagetitle}</a></li>  // Проверка в одну строку, так же проще
            {/foreach}  
      </ul>
      <div class="tab-content">
            {foreach $all as $item}
                    <div role="tabpanel" class="tab-pane fade{if $item@first} in active{/if}" id="{$item.id}">
                          {$item.content}
                    </div>
             {/foreach}
      </div>
      {/if}

      Вот так-то лучше :)
        Сергей
        11 июля 2018, 10:00
        0
        Спасибо исправлю!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4