Заголовок, множественное или единственное число в зависимости от кол-ва выводимых ресурсов

Подскажите пожалуйста, есть ли что-то, что бы генерировало множественное и единственное число в зависимости от количества выводимых ресурсов через pdoResources? Например, если по заданным условиям выводится один ресурс, то заголовок «Образец», а если более одного: «Образцы». Честно гуглил, не нашел((
Заранее спасибо
Серый
18 декабря 2021, 18:20
modx.pro
1
865
0

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

Евгений Webinmd
18 декабря 2021, 23:05
0
есть модификатор
declension (decl) — склоняет слово, следующее за числом по правилам русского языка. Например: 1 яблоко, 2 яблока, 10 яблок. Вторым параметром указывается выводить ли само число, по умолчанию выводится только подходящий вариант слова. Разделитель вариантов можно задавать третьим параметром, по умолчанию |

{6 | declension : 'яблоко|яблока|яблок'} // яблок
{3 | declension : 'яблоко|яблока|яблок' : true} // 3 яблока
{101 | decl : 'яблоко,яблока,яблок' : false : ','} // яблоко
    Серый
    19 декабря 2021, 00:18
    0
    В том и соль, что нет никакого числа.
    Есть выводимые ресурсы в виде карточек и есть заголовок к ним.
    Допустим у нас концерт и на нем выступает либо один солист, либо несколько, и вот надо как-то сделать автоматизацию, что елси pdoResources выводит один ресурс, то заголовок у нас «Солист:», а если более одного ресурса: «Солисты:» и ниже уже шаблончики этих солистов или солиста.
    Или можно как-то «посчитать», получить значение выводимых ресурсов, в соответствии условию, в виде числа?
      Евгений Webinmd
      19 декабря 2021, 00:55
      0
      ну тут не долго думая можно использовать 2 параметра из документации: toPlaceholders (тут будет список) и setTotal (тут будет количество результатов). Ну и в total уже будет число
        Серый
        19 декабря 2021, 19:33
        0
        Эх, как было бы прекрасно, если бы еще где-то примеры использования этих параметров были((
        Тыкался так и этак — всё что угодно кроме количества даёт(
        Направьте пожалуйста
        [[+qq]]
        [[pdoResources?
                &parents=`8`
                &resources=`[[+tv.soloistsList]]`
                &processTVs=`1`
                &prepareTVs=`1`
                &setTotal=`1`
                &tpl=`@CODE: [[+total]]`
                &toPlaceholder=`qq`
        ]]
          Евгений Webinmd
          19 декабря 2021, 19:40
          0
          [[!pdoResources?
                  &parents=`8`
                  &resources=`[[+tv.soloistsList]]`
                  &processTVs=`1`
                  &prepareTVs=`1`
                  &setTotal=`1`
                  &tpl=`@CODE: [[+total]]`
                  &toPlaceholder=`qq`
          ]]

          Список ресурсов
          [[+qq]]

          Количество
          [[+total]]

          в tpl чанк ресурсов как обычно
            Серый
            19 декабря 2021, 20:21
            0
            Кажется дошло, работает, сделал так:
            [[+total:isequal=`1`:then=`Soloist`:else=`Soloists`]]:
            [[+tv.soloistsList:notempty=`[[+qq]]`:empty=`TBC`]]
            [[pdoResources?
                &parents=`8`
                &resources=`[[+tv.soloistsList]]`
                &sortdir=`ASC`
                &limit=`10`
                &tpl=`soloistsListTPL`                  
                &includeTVs=`simpleText`
                &showUnpublished=`1`
                &processTVs=`1`
                &prepareTVs=`1`
                &setTotal=`1`
                &toPlaceholder=`qq`
            ]]
            Это код карточки концертов, они другим снипетом выводятся на страницу списком и вот грабли — одна из них почему-то показывает тупо всех солистов сколько допускает параметр &limit.
            Убираю из этого концерта солистов — подставляет TBC, и эта фигня вылезает в другой карточке.
            Что ж я делаю не так?(
              Евгений Webinmd
              19 декабря 2021, 20:25
              0
              попробуйте добавить
              &resources=`[[+tv.soloistsList:default=`-0`]]`
              вместо -0 можно попробовать 999999999999
                Серый
                19 декабря 2021, 20:42
                0
                Увы, не спасает. Если без &toPlaceholder=`qq`, то всё выводится корректно, если задействую его, то какая-то флюктуация начинается((
    Серый
    22 декабря 2023, 13:40
    +1
    Так круто на профильном форуме спустя 2 года самому себе написать ответ на свой вопрос! Классика…
    Всё дело было в том, что tplWrapper был @INLINE. Сделал отдельный чанк, и там [[+total]] нормально отдает реальную цифру, написал вот такое и стало мне счастье:
    <div class="concert-list-item">
        <h4>
            Soloist[[+total:isnot=`1`:then=`s`:else=``]]:
        </h4>
        [[+output]]
    </div>
      Василий Наумкин
      24 декабря 2023, 09:32
      +2
      Классика — это не читать документацию.

      Нужно было просто заменить [[+total]] на {{+total}}, тогда парсер MODX пропустит этот плейхолдер, а pdoTools обработает как надо.

      P.S. @Иван Бочкарев В вашей версии документации в примере указаны неправильные теги — в моей старой версии всё верно.

      Вот твой коммит, с изменением смысла примера.
        Серый
        24 декабря 2023, 14:09
        +2
        Василий, большое вам человеческое уважение и благодарность за вашу поистине прометеевскую деятельность! Стараюсь, учусь по мере сил и возможностей))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      11