Как вывести TV через свою обёртку?

Здравствуйте. Есть TV чекбоксы.

Список чекбоксов:
Яблоки
Груши
Бананы

Параметры ввода: «Флажки (checkbox)»;

Параметры вывода: «По-умолчанию»;

Вывожу во фронтенд:
<div class="product-list">
  <div class="product">
    [[*checkboxTv]]
  </div>
</div>
В результате:
<div class="product-list">
  <div class="product">
    ЯблокиГрушиБананы
  </div>
</div>
Как обернуть результаты по-отдельности? Чтобы получилось:
<div class="product-list">
  <div class="product">
    Яблоки
  </div>
  <div class="product">
    Груши
  </div>
  <div class="product">
    Бананы
  </div>
</div>
Денис
06 сентября 2019, 16:18
modx.pro
633
0

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

Павел Романов
06 сентября 2019, 16:37
0
Настройте параметры вывода:
    Денис
    06 сентября 2019, 16:59
    0
    Тогда в такой конструкции, если внутри ресурса чекбоксы не выбраны:
    {if $_modx->resource.checkboxTv ?}
    div class="product-list">
      <div class="product">
        Яблоки
      </div>
      <div class="product">
        Груши
      </div>
      <div class="product">
        Бананы
      </div>
    </div>
    {/if}
    выводит:
    <div class="product-list">
      <div></div>
    </div>
    а надо чтобы если не заполнен, то ничего не выводилось.
      Павел Романов
      06 сентября 2019, 17:09
      +1
      Ну тогда выберите «Разделитель» и поставьте в кач-ве него запятую.
      Сделайте сниппет:
      <?php
      $out = '';
      $arr = explode(',', $input);
      if(count($arr) > 0){
          foreach($arr as $item){
              $items .= '<div class="product">'.$item.'</div>'; 
          }
          $out = '<div class="product-list">'.$items.'</div>';
      }
      return $out;

      Используйте этот сниппет как модификатор:
      [[*checkboxTv:snippet]]
        Денис
        06 сентября 2019, 17:15
        0
        Пишет ошибку в строке 3
          Павел Романов
          06 сентября 2019, 17:17
          +1
          Запятую поставьте:
          $arr = explode(',', $input);
            Денис
            06 сентября 2019, 17:24
            0
            Аналогично как и с выводом HTML div, пустые выводит как:
            <div class="product-list">
              <div class="product"></div>
            </div>
              Денис
              06 сентября 2019, 17:32
              0
              Возможно сделать так, что если никакой чекбокс этого TV не выбран, то ничего не выводить?
                Павел Романов
                06 сентября 2019, 17:41
                +1
                Попробуйте так:
                <?php
                $out = '';
                if($input != ''){
                    $arr = explode(',', $input);
                    foreach($arr as $item){
                        $items .= '<div class="product">'.$item.'</div>'; 
                    }
                    $out = '<div class="product-list">'.$items.'</div>';
                }
                return $out;
                  Денис
                  06 сентября 2019, 17:58
                  0
                  Супер! Спасибо!
        Денис
        06 сентября 2019, 17:01
        0
        Пробовал этим методом, но тут все значения записываются в один li, не в каждый по-отдельности.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10