TVTable как получать значения из ячеек таблицы

Здравствуйте.
Первый раз столкнулся с компонентом TVTable и не могу ничего понять пока. (
В общем ситуация такая:
1. Есть дополительное поле с таблицей TVTable, называется «Prices» — в нем некая таблица (первая колонка — размеры, остальные — различные параметры).
2. Есть еще одно дополнительное поле Авто-метка «Sizes» — в нем просто список размеров.
3. На странице шаблона выводится список из поля «Sizes»:
{if $_modx->resource.Sizes?}
<div class="form_size">
<p class="h4">Выберите размер</p>
<div class="d-flex flex-wrap ">
{set $sizes = $_modx->resource.Sizes | split}
{foreach $sizes as $size first=$first}
<div class="form___size_item">
<span>{$size}</span>
<p>ВОТ СЮДА НУЖНО ВСТАВИТЬ ЗНАЧЕНИЕ ИЗ ЯЧЕЙКИ ТАБЛИЦЫ</p>
</div>
{/foreach}
</div>
</div>
{/if}
Мне нужно в этот цикл подставить соответствующие значения из таблицы, т.е. сравнивать размеры по названию и, при совпадении, подставлять параметр из определенной колонки таблицы.
Как это можно реализовать?
Игорь
Игорь
20 марта 2020, 11:32
modx.pro
1 778

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

Баха Волков
20 марта 2020, 15:27
Компонент TVTable хранит данные в json формате, получите данные и воспользуйтесь любым удобным для вас способом, будь то модификатор фенома fromJSON или используйте дары языка php написав сниппет
    Игорь
    20 марта 2020, 15:31
    Спасибо. А можно на примере показать? (я не особо силен в fenom)
    В гугле не могу ничего найти похожего.
      Dmitry P.
      20 марта 2020, 15:52
      {foreach $_modx->resource.Prices | fromJSON as $row}
          {foreach $row as $cell}
              {$cell} {*тут выведутся все значения всех ячеек*}
          {/foreach}
      {/foreach}
        Игорь
        20 марта 2020, 16:46
        Спасибо, но все равно не понял — а можно как-то вывести конкретную ячейку таблицы по координатам (строка, столбец)?
          Игорь
          21 марта 2020, 10:06
          Ну я правда не понимаю. Есть например такая табличка в TVTable:
          Size Price1 Price2 Price3 Availability
          10 см 100 руб - - есть
          20 см 150 руб - - нет
          30 см 200 руб 250 - скоро будет
          Как мне получить из json строки данные из колонок Size и Availability?..
            Игорь
            21 марта 2020, 13:47
            ладно, будем считать что разобрался — добавил:
            {foreach $_modx->resource.Prices | fromJSON as $row}
                {foreach $row as $cell}
                    {if $cell@first}  <span>{$cell}</span>  {/if}
            		{if $cell@index == 4}
            		{if $cell !=''} <p>{$cell}</p> {else} <p>нет<p> {/if}
            		{/if}
                {/foreach}
            {/foreach}
            Всем спасибо
              Dmitry P.
              22 марта 2020, 08:41
              {set $prices = $_modx->resource.Prices | fromJSON}
                  {$prices[2][2]} {*получить значение ячейки (2,2), индексы с 0 начинаются*}
              
                  {foreach $prices as $row}
                      Size: {$row[0]}
                      Availability: {$row[4]}
                  {/foreach}
              Работа с массивами аналогична пхп.
              По феному есть документация раз и два
                Игорь
                22 марта 2020, 19:42
                Ваш ответ реально помог, спасибо… теперь буду знать )
                {foreach $prices as $row}
                        Size: {$row[0]}
                        Availability: {$row[4]}
                    {/foreach}
                (без лишних foreach, как я прежде «напридумывал»)
      Сергей Карпович
      30 июня 2022, 10:04
      Вопрос у меня близкий по теме.
      tabletv у меня находится внутри MIGX, таблица состоит из 2-х колонок, соответственно мне нужно вывести каждую строку обернутую в свое класс и ячейки в ней обернутые в свои классы, вывожу так, насколько это оптимально или есть лучше решение?
      {foreach $row.table | fromJSON as $row.table}
          <div class="advant-table-item">
              {foreach $row.table as $cell}
                  {if $cell@first}  <span class="advant-table-label">{$cell}</span>  {/if}
                  {if $cell@last}<span class="advant-table-val">{$cell}</span>{/if}
              {/foreach}
          </div>
      {/foreach}
        Роман
        30 июня 2022, 10:57
        Зачем прогонять весь массив когда нужно первый и последний элемент?
        {$row.table.0}
        Последний не знаю, возможно так как-то, если включены в настройках обработка php(pdotools_fenom_php)
        {end($row.table)}
      Ольга
      18 августа 2023, 15:25
      Добрый день, а функционал объединения ячеек планируется? Или может быть уже есть? Не нашла.
        Евгений
        05 февраля 2025, 16:28
        а можно в шаблоне pdomenu вывести определенное значение из TVtable, Пробовал так:
        [[TVTable?
          &tv=`7`
          &id=`[[+id]]`
          &classname=``
          &getX=`2`
          &getY=`3`
        ]]
        ничего не работает
        Вызов pdoMenu
        [[pdoMenu?
          &parents=`2`
          &level=`3`
          &tplOuter=`@INLINE <table class="table mb-0">[[+wrapper]]</table>`
          &tplInner=`@INLINE [[+wrapper]]`
          &tplParentRow=`@INLINE <tr><td><h4>[[+menutitle]]</h4></td></tr>[[+wrapper]]`
          &tpl=`tpl.AssortLine`
          &resources=`-379`
          &includeTVs=`articles`
        ]]
        tpl.AssortLine
        <tr>
            <td>[[+menutitle]]</td>
            <td>
            [[TVTable?
              &tv=`7`
              &id=`[[+id]]`
              &classname=``
              &getX=`2`
              &getY=`3`
            ]]
            </td>
        </tr>
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          13