Как вывести сумму значений полей migx
Всем салют!
Как вывести сумму значений полей migx?
Например есть поле [[+num]] в migx. Как вывести в чанке сумму всех его значений?
[[+num:add=`[[+num]]`]] не работает
Как вывести сумму значений полей migx?
Например есть поле [[+num]] в migx. Как вывести в чанке сумму всех его значений?
[[+num:add=`[[+num]]`]] не работает
Комментарии: 10
В сниппете `getImageList`есть два недокументированных поля `sumFields` и `sumPrefix`, попробуйте их использовать примерно так:
Обновлю-ка документацию.
[[getImageList?
&tvname=`your_tv`
&sumFields=`num`
&sumPrefix=`prefix_`
&limit=`4`
]]
результат будет в плейсхолдере [[+prefix_num]]Обновлю-ка документацию.
Спасибо.
А как сложить два различных поля migx. Например, [[+num]] и [[+num2]]
И существует ли возможность других математических действий (вычитание, умножение, деление)?
А как сложить два различных поля migx. Например, [[+num]] и [[+num2]]
И существует ли возможность других математических действий (вычитание, умножение, деление)?
migx это json строка, хранящаяся в базе данных.
как правило, migx используют если нужно чтобы в одном TV хранилось не примитивное значение, а набор данных.
{
«name»: «Alexander»,
«age»: 48
}
Как вы понимаете нельзя сложить, вычесть или умножить двух меня)
Математические действия можно производить только над примитивами (числа, строки и так далее).
Уже поэтому ваш вопрос не совсем корректен.
Возможно у вас в migx среди прочих данных есть и числа и вы хотите сложить их. Тогда советую вам почитать ilyaut.ru/xpdo/ о том, как в сниппете можно получить TV поле. вардапните его, посмотрите что в нем лежит и как храниться. Примените функции json_decode и переведите в массив. Проведите математические операции с элементами массива. Переведите назад в json и сохраните в TV.
как правило, migx используют если нужно чтобы в одном TV хранилось не примитивное значение, а набор данных.
{
«name»: «Alexander»,
«age»: 48
}
Как вы понимаете нельзя сложить, вычесть или умножить двух меня)
Математические действия можно производить только над примитивами (числа, строки и так далее).
Уже поэтому ваш вопрос не совсем корректен.
Возможно у вас в migx среди прочих данных есть и числа и вы хотите сложить их. Тогда советую вам почитать ilyaut.ru/xpdo/ о том, как в сниппете можно получить TV поле. вардапните его, посмотрите что в нем лежит и как храниться. Примените функции json_decode и переведите в массив. Проведите математические операции с элементами массива. Переведите назад в json и сохраните в TV.
Нашел решение, оказывается можно
forums.modx.com/thread/88146/migx---how-to-sum-values-from-migx-field-into-a-placeholder-tv#dis-post-485238
Для сложения — нужно создать сниппет с названием, например, summerize
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]]`]]
это сниппет для сложения чисел, никакого отношения к migx он не имеет, но если это решило вашу проблему то и хорошо.
Решило. Сниппет сложил между собой два migx поля, нужно было именно это.
Каким образом у вас в [[+num]] оказалось число?
Вы наверное не написали о том, что вызываете этот самописный сниппет уже внутри getImageList? В тексте вашего вопроса об этом ни слова, а поверьте, далеко не все пользуются getImageList для работы с migx, вот я вас и не понял.
Вы наверное не написали о том, что вызываете этот самописный сниппет уже внутри getImageList? В тексте вашего вопроса об этом ни слова, а поверьте, далеко не все пользуются getImageList для работы с migx, вот я вас и не понял.
да, он выводится внутри getImageList. Первый ответ в этой ветке как раз о getImageList. На него я и задавал вопрос.
Супер! Вот именно это и нужно! Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.