MODX REVO Fenom, как в цикле исключить повторяющиеся элементы?
Подскажите как через Fenom исключить повторяющиеся элементы массива?
Есть список дат
2017
2018
2019
2019
2019
Как исключить повторные записи? Пробую через array_unique, но не получается с FENOM это подружить.
Есть список дат
2017
2018
2019
2019
2019
Как исключить повторные записи? Пробую через array_unique, но не получается с FENOM это подружить.
{set $input = json_decode(1 | resource : 'field-news', true)}
{$rows = array_unique($input)}
{foreach $rows as $idx => $row}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Или придется писать сниппет отдельный? Комментарии: 18
А в настрйках включен php для феном?
Да конечно, все включено, распечатывает вот так:
Array
2019
Сам массив и одну итерацию.
Array
2019
Сам массив и одну итерацию.
Я подозреваю что у вас массив в массиве проверьте var_dump($input)
field-news это tv поле MIGX, так понимаю да, это массив.
MIGX это JSON. Сначала нужно смотреть какие данные на выходе тогда оперировать как нужно
Спасибо, решили задачку ниже.
{set $rows = ...}
Спасибо, теперь не выводит Array, но все равно распечатывает одну итерацию:
2019,
Если убрать строку с array_unique то весь список с дублями такой.
2017
2018
2019
2019
2019
Почему только одну 2019 выводит? Если выводит уникальные записи, то должно быть так
2017
2018
2019
2019,
Если убрать строку с array_unique то весь список с дублями такой.
2017
2018
2019
2019
2019
Почему только одну 2019 выводит? Если выводит уникальные записи, то должно быть так
2017
2018
2019
{set $arr[]}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = {$row.date}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Спасибо, но никак не хочет работать, белый лист вообще. Я так понимаю должно быть так
{set $arr[]}
{set $input = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = {$row.date}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Поменяй на эту строку
{set $arr[] = $row.date}
Лишняя скобка{set $arr[]}
{set $rows = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = $row.date}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Сделал так:
{set $input = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = $row.date}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Просто не распечатывает ничего, ошибка ушла, страница загрузилась.
Сделай так
{set $arr[]}
{set $rows = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = $row.date}
<option value="">{$row.date | date : "Y"}</option>
{/foreach}
БЛАГОДАРЮ! Заработало, но если убрать первую строку объявление массива {set $arr[]}
Из за нее белая страница, парсер почему то не работает с этим.
Сделал вот так, работает :) Надеюсь без объявление массива не повлияет на ошибки в логах.
Из за нее белая страница, парсер почему то не работает с этим.
Сделал вот так, работает :) Надеюсь без объявление массива не повлияет на ошибки в логах.
{set $rows = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
{if $row.date | in : $arr}{continue}{/if}
{set $arr[] = $row.date}
{$row.date | date : "Y"}
{/foreach}
Вот так заменил эту строку,
{set $arr[]}
из за которой белая страница была, на эту {set $arr = []}
вроде работает и парсеру нравится :)
Ок, мой косяк
ВАМ СПАСИБО, это у меня пока мозгов не хватает. С наступающим!
Не за что.
Спасибо и Вас тоже с наступающим.
Спасибо и Вас тоже с наступающим.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.