Как вывести сумму значений полей migx

Всем салют!
Как вывести сумму значений полей migx?

Например есть поле [[+num]] в migx. Как вывести в чанке сумму всех его значений?

[[+num:add=`[[+num]]`]] не работает
Михаил
21 сентября 2021, 04:57
modx.pro
1
647
0

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

Антон Тарасов
21 сентября 2021, 08:43
1
0
В сниппете `getImageList`есть два недокументированных поля `sumFields` и `sumPrefix`, попробуйте их использовать примерно так:
[[getImageList? 
&tvname=`your_tv`
&sumFields=`num`
&sumPrefix=`prefix_`
&limit=`4`
]]
результат будет в плейсхолдере [[+prefix_num]]

Обновлю-ка документацию.
    Михаил
    21 сентября 2021, 18:59
    0
    Спасибо.
    А как сложить два различных поля migx. Например, [[+num]] и [[+num2]]
    И существует ли возможность других математических действий (вычитание, умножение, деление)?
      Александр Мельник
      21 сентября 2021, 19:42
      0
      migx это json строка, хранящаяся в базе данных.
      как правило, migx используют если нужно чтобы в одном TV хранилось не примитивное значение, а набор данных.
      {
      «name»: «Alexander»,
      «age»: 48
      }
      Как вы понимаете нельзя сложить, вычесть или умножить двух меня)
      Математические действия можно производить только над примитивами (числа, строки и так далее).
      Уже поэтому ваш вопрос не совсем корректен.
      Возможно у вас в migx среди прочих данных есть и числа и вы хотите сложить их. Тогда советую вам почитать ilyaut.ru/xpdo/ о том, как в сниппете можно получить TV поле. вардапните его, посмотрите что в нем лежит и как храниться. Примените функции json_decode и переведите в массив. Проведите математические операции с элементами массива. Переведите назад в json и сохраните в TV.
        Михаил
        21 сентября 2021, 19:52
        0
        Нашел решение, оказывается можно
        forums.modx.com/thread/88146/migx---how-to-sum-values-from-migx-field-into-a-placeholder-tv#dis-post-485238
        Для сложения — нужно создать сниппет с названием, например, summerize
        <?php
        $values = explode(',',$modx->getOption('values',$scriptProperties,''));
        $sum = 0;
        foreach ($values as $value){
            $sum += $value;
        }
        return $sum;
        затем вывод в чанке
        [[summarize? &values=`[[+num]],[[+num2]]`]]
          Александр Мельник
          21 сентября 2021, 20:06
          0
          это сниппет для сложения чисел, никакого отношения к migx он не имеет, но если это решило вашу проблему то и хорошо.
            Михаил
            21 сентября 2021, 20:10
            0
            Решило. Сниппет сложил между собой два migx поля, нужно было именно это.
              Александр Мельник
              21 сентября 2021, 20:22
              0
              Каким образом у вас в [[+num]] оказалось число?
              Вы наверное не написали о том, что вызываете этот самописный сниппет уже внутри getImageList? В тексте вашего вопроса об этом ни слова, а поверьте, далеко не все пользуются getImageList для работы с migx, вот я вас и не понял.
                Михаил
                21 сентября 2021, 20:26
                0
                да, он выводится внутри getImageList. Первый ответ в этой ветке как раз о getImageList. На него я и задавал вопрос.
            Andrey
            21 сентября 2021, 20:24
            1
            +2
            В этом случае и модификатора хватит:
            [[+num:incr=`[[+num2]]`]]
            incr +, decr -, div /, mpy *
              Михаил
              21 сентября 2021, 20:29
              0
              Супер! Вот именно это и нужно! Спасибо!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10