ms2gallery: вывести первое, либо все, кроме первого фото в зависимости от их количества

Привет всем!

Прошу помочь c решением одной задачки по ms2gallery:
на странице стоит вызов
[[!ms2Gallery?
      &tpl=`tpl.ms2GalleryObject`
      &frontend_css=``
      &frontend_js=``
]]
в зависимости от кол-ва изображений должно выводиться либо no-photo, либо одна фотография, либо все фотографии, кроме первой (она отображается отдельно).

Как можно это реализовать? Сейчас код чанка такой:
{if count($files) > 1}
    <div class="gallery__main-photo" data-background="{foreach $files as $file}{$file['url']}{/foreach}"></div> // тут необходимо вывести первое фото
    <div class="fotorama">
        {foreach $files as $file} // тут необходимо вывести все фото, кроме первого
      <a href="{$file['url']}"><img src="{$file['thumb']}"></a>
        {/foreach}
    </div>
{elseif count($files) == 1}
    <div class="gallery__main-photo" data-background="{foreach $files as $file}{$file['url']}{/foreach}"></div> // тут необходимо вывести первое фото
{else}
    <div class="gallery__no-photo"></div>
{/if}
Евгений
17 сентября 2018, 16:23
modx.pro
2
1 613
0

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

Баха Волков
17 сентября 2018, 17:14
0
Используйте модификатор length, вот документация
    Евгений
    17 сентября 2018, 17:31
    0
    вроде length выводит только длину переменной?
      Баха Волков
      17 сентября 2018, 17:38
      0
      Он также выводит длину массива

      length (len, strlen) — выводит длину переменной. Может принимать строку или массив.
      Пример из документации:

      {'var' | length} // 3
      {['key' => 'value'] | len} // 1
    Баха Волков
    17 сентября 2018, 18:08
    +1
    Немного не понял вопрос, вот как нужно:

    {foreach $files as $file}
        {if $file@first}
        {else}
          <a href="{$file['url']}"><img src="{$file['thumb']}"></a>
        {/if}
    {/foreach}

    Это один из вариантов

    UPD

    {foreach $files as $file}
        {if $file@first != true}
          <a href="{$file['url']}"><img src="{$file['thumb']}"></a>
        {/if}
    {/foreach}
    Что-то типа такого можно, ну в общем вы поняли
      Евгений
      18 сентября 2018, 11:35
      0
      Спасибо! То что нужно :)

      Единственный момент
      {foreach $files as $file}
          {if $file@first != true}
          {/if}
      {/foreach}
      работает отлично, а как быть, чтобы показать только первое фото? Ведь
      {foreach $files as $file}
          {if $file@first == true}
          {/if}
      {/foreach}
      будет грузить страницу, перебирая все оставшиеся фото. Есть ли вариант обойтись без цикла и сделать вызов только первого фото?
        Баха Волков
        18 сентября 2018, 12:18
        +1
        Это просто, почитайте про синтаксис fenom на github, он схож с самим php

        $files[0]['url'] или $files[0]['thumb']
          Евгений
          18 сентября 2018, 12:23
          0
          Супер! Спасибо. Буду учить матчасть по fenom :)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8