MIGX getImageList и Fenom
Есть такой вызов
По поводу @CODE и fenom, — работает феном в чанке относительно самого ресурса. То есть, когда я делаю так
Когда я пишу
Когда я пишу
То работает, получаю содержимое переменной. Весь массив значений.
Вопрос, как использовать феном, чтобы не писать свой парсер переменной и не использовать классический вызов через квадратные скобки, а воспользоваться {$image}?
{$_modx->runSnippet('!getImageList', [
'tvname' => 'tv_product_main_gallery',
'tpl' => '@CODE: <some_chunk>'
])}
По поводу @CODE и fenom, — работает феном в чанке относительно самого ресурса. То есть, когда я делаю так
'tpl' => '@CODE: [[+image]]'
Работает.Когда я пишу
'tpl' => '@CODE: {$image}'
То не работает.Когда я пишу
'tpl' => '@CODE: {$_modx->resource.myMIGXtv}'
То работает, получаю содержимое переменной. Весь массив значений.
Вопрос, как использовать феном, чтобы не писать свой парсер переменной и не использовать классический вызов через квадратные скобки, а воспользоваться {$image}?
Комментарии: 67
Может-таки знает кто, как получит доступ к полю внутри TV-переменной типа MIGX?
getImageList работает с JSON на сколько я помню. Он никак не завязан на pdoTools, и чанки в нем обрабатываются не через pdo->getChunk, а через modx->getChunk, поэтому нужно пользоваться конструкцией [[+image]] а не {$image}. Если хотите пользоваться синтаксисом fenom, то нужно все вызовы функции modx->getChunk переделать на pdo->getChunk. Ну это в кратце если.
Понял!
Алексей, спасибо. Буду пробовать ;)
Алексей, спасибо. Буду пробовать ;)
Ещё раз благодарю. Так и поступил.
Подскажи пожалуйста как ты сделал.
Я сделал копию getImageList и добавил в начало:
Но не работает.
Я сделал копию getImageList и добавил в начало:
$path = MODX_CORE_PATH . 'components/pdotools/model/pdotools/';
$pdoFetch = $modx->getService('pdofetch','pdoFetch', $path, $scriptProperties);
И заменил $modx->getChunk на $pdoFetch->getChunkНо не работает.
Можно попробовать обойтись средствами Fenom без getImageList.
{set $rows = json_decode($_modx->resource.tv_product_main_gallery, true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Спасибо, Виталий!
Я после плагина о таком тоже подумал, но уже всё переделал под плагин.
Я после плагина о таком тоже подумал, но уже всё переделал под плагин.
Спасибо Василию)
Избавлялся таким образом от кучи запросов к базе.
Избавлялся таким образом от кучи запросов к базе.
А как в таком вызове обернуть каждый {$row} а чанк?
Код чанка написать между foreach.
Например:
Например:
{foreach $rows as $row}
<div class="item">
<div class="title">{$row.title}</div>
<div class="desc">{$row.description}</div>
<div class="image"><img src="{$row.image}" alt="{$row.title}" /></div>
</div>
{/foreach}
Точно, что-то как-то не подумал, спасибо)
Скажите пожалуйста, как оформить вызов, если у сниппета getImageList указывается id ресурса родителя &docid=`15`?
Все тоже самое, только тв запрашивать у требуемого ресурса.
{set $rows = json_decode(15 | resource : 'migx_tv', true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Разобрался сам. Такой вывод работает:
{set $rows = 15 | resource : 'тв_поле' | fromJSON}
А как в данном варианте прописать дополнительные условия работы цикла?
Например, выводить только 2 первые записи, или пропустить первые 5 проходок?
Например, выводить только 2 первые записи, или пропустить первые 5 проходок?
Самое простое через ключ массива.
Документация Fenom.
{*Первые два*}
{foreach $rows as $idx => $row}
{if $idx < 2}
<div>{$idx} - {$row.title}</div>
{/if}
{/foreach}
{*С пятой строки*}
{foreach $rows as $idx => $row}
{if $idx > 4}
<div>{$idx} - {$row.title}</div>
{/if}
{/foreach}
{*Чересстрочная вакханалия*}
{foreach $rows as $idx => $row}
<div{$idx is odd ? ' class="odd"' : ''>{$idx} - {$row.title} и два тикета туДаблин</div>
{/foreach}
И т.п.Документация Fenom.
Спасибо. Работает!
Здорово, а можно ли в таком случае настроить пагинацию?
Или придётся getImageList через pdoPage запускать?
Или придётся getImageList через pdoPage запускать?
MIGX хранит данные в json-формате.
То есть по-умолчанию вы сразу достаете все данные, поэтому для реализации пагинации у вас есть 2 способа: визуально прятать часть результатов (внутри цикла foreach, например), отображая нужный промежуток в зависимости от get-параметра или с помощью jQuery при помощи display block/none.
То есть по-умолчанию вы сразу достаете все данные, поэтому для реализации пагинации у вас есть 2 способа: визуально прятать часть результатов (внутри цикла foreach, например), отображая нужный промежуток в зависимости от get-параметра или с помощью jQuery при помощи display block/none.
Можно поизвращаться при желании. Но лучше прислушаться к Максиму и реализовать через js, готовых велосипедов, наверное, полно.
{set $page_key = 'num'}
{set $page = $.get.$page_key?:1}
{set $limit = 3}
{if ($page is numeric) && (($page + 0) is not decimal)}
{set $total = $rows | length}
{set $pages = ($total - ($total % $limit)) / $limit}
{set $pages = ($total % $limit) ? ($pages + 1) : $pages}
{set $page = $page > $pages ? 1 : $page}
{set $offset = $limit * ($page - 1)}
{set $idx = 0}
{foreach $rows as $val}
{*<p>{$idx} - {$offset} - {$offset + $limit}</p>*}
{set $idx = $idx + 1}
{if $idx <= $offset || $idx > ($offset + $limit)}
{continue}
{/if}
<div>{$idx} - {$val}</div>
{/foreach}
{macro link($curr_page, $dir='<', $total, $page_key,$tpl)}
{set $classes = ['btn btn-light']}
{set $page = ($dir == '>') ? ($curr_page + 1) : ($curr_page - 1)}
{if (($curr_page >= $total) && ($dir == '>')) || (($curr_page <= 1) && ($dir != '>'))}
{set $classes[] = 'disabled'}
{set $disabled = 1}
{/if}
{if $disabled}
<span class="{$classes | join:' '}">{$tpl}</span>
{else}
<a href="?{$page_key}={$page}" class="{$classes | join:' '}">{$tpl}</a>
{/if}
{/macro}
{if $pages >= 2}
<div class="pagination">
{macro.link curr_page=$page total=$pages page_key=$page_key tpl='<<'}
{foreach 1..$pages as $num}
{set $classes = ['btn btn-light']}
{if $num@first}{set $classes[] = 'first'}{/if}
{if $num@last}{set $classes[] = 'last'}{/if}
{if $num == $page}{set $classes[] = 'active'}{/if}
<a href="?{$page_key}={$num}" class="{$classes | join:' '}">{$num}</a>
{/foreach}
{macro.link curr_page=$page dir='>' total=$pages page_key=$page_key tpl='>>'}
</div>
{/if}
{/if}
Вопрос такого характера в случае вызова,
Каким образом прописать условие (ранее из обычного вызова): &where=`{«active»:«1»}`, где active это поле, т.е. указать если не активно тогда изображение не выводим!?
{set $rows = json_decode(($_modx->resource.options, true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Каким образом прописать условие (ранее из обычного вызова): &where=`{«active»:«1»}`, где active это поле, т.е. указать если не активно тогда изображение не выводим!?
Решил так {if $row.active == '1'}
Добрый день!
Подскажите пожалуйста как вывести средствами fenom данную конструкцию, избавившись от квадратных скобок. Вроде читаю тему, понимаю суть, но в голову решение не идёт.
Подскажите пожалуйста как вывести средствами fenom данную конструкцию, избавившись от квадратных скобок. Вроде читаю тему, понимаю суть, но в голову решение не идёт.
{'getImageList' | snippet : [
'tvname' => 'adv.Index',
'tpl' => 'adv_tpl.Index',
'limit' => 6,
]}
Содержимое чанка adv_tpl.Index:<div class="col-xs-12 col-sm-6 col-md-4">
<div class="icon-box left media p-0 mb-40">
<div class="media-left pull-left"><i class="[[+icon]] text-theme-colored"></i></div>
<div class="media-body">
<p class="media-heading heading h5">[[+title]]</p>
<p>[[+desc]]</p>
</div>
</div>
</div>
{foreach $_modx->resource['adv.Index'] | fromJSON as $item}
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="icon-box left media p-0 mb-40">
<div class="media-left pull-left"><i class="{$item['icon']} text-theme-colored"></i></div>
<div class="media-body">
<p class="media-heading heading h5">{$item['title']}</p>
<p>{$item['desc']}</p>
</div>
</div>
</div>
{/foreach}
+ ограничить выборку limit'a по MIGX_idx (не помню точное название плейсхолдера)
Спасибо большое, помогло. Только из этого всего возникла ещё пара вопросов, буду благодарен за помощь:
Вывод схожий, но в чанке всё немного по другому:
Вторая с Тем что у поля изображения у меня указан отдельный источник файлов, а тянет он похоже информацию относительно корня обходя эту настройку
Вывод схожий, но в чанке всё немного по другому:
<div class="col-md-1 col-xs-12 [[+_first:is=`1`:then=`col-md-offset-2 col-lg-offset-2`]]">
<img class="adv-img" src="[[+image:phpthumbon=`w=470&h=320&zc=1`]]" alt="">
<p class="text-center font-9 mt-10"><b>[[+desc]]</b></p>
</div>
Первая проблема с [[+_first:is=`1`:then=`col-md-offset-2 col-lg-offset-2`]]
он не хочет работатьВторая с Тем что у поля изображения у меня указан отдельный источник файлов, а тянет он похоже информацию относительно корня обходя эту настройку
Плейсхолдеры _first и тд создает сниппет getImageList. Так как он в моем примере не используется, вы можете сами методами fenom'a реализовать простой счетчик:
И внутри самого цикла:
По поводу второго момента — пропишите недостающий путь источника перед картинкой?
{var $counter = 1}
И внутри самого цикла:
{$counter == '1' ? 'col-md-offset-2 col-lg-offset-2' : ''}
{$counter = $counter + 1}
По поводу второго момента — пропишите недостающий путь источника перед картинкой?
В foreach есть свой счетчик, не нужен дополнительный
github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md
{$value@first? 'col-md-offset-2 col-lg-offset-2': ''}
github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md
{$value@first? 'col-md-offset-2 col-lg-offset-2': ''}
Подскажите такой вопрос
<select class="wpcf7-select" id='af_position' name="position">
{set $rows = json_decode($_modx->resource.options, true)}
{foreach $rows as $row}
{if $row.active == '1'}
<option value="{$row.alt}">{$row.alt}</option>
{/if}
{/foreach}
</select>
Как в fenom прописать что если нет ни одного option тогда фраза скажем «опций нет», т.е. значение по default???
Кому надо
{set $rows = json_decode($_modx->resource.options, true)}
{var $count=0}
{foreach $rows as $row}
{if $row.active == '1'}
{include ++$count}
<option value="{$row.alt}">{$row.alt}</option>
{/if}
{/foreach}
{if $count=='0'}
<option value="">Вакансий нет</option>
{/if}
Вариант без лишней переменной.
{set $rows = json_decode($_modx->resource.options, true)}
{if count($rows)?}
{foreach $rows as $row}
{if $row.active == '1'}
<option value="{$row.alt}">{$row.alt}</option>
{/if}
{/foreach}
{else}
<option value="">Вакансий нет</option>
{/if}
Не выводит что вакансий нет, последние условие не выполняется в данном случае
Исправил. Оказывается ночь уже на дворе!.. Во дела
{set $rows = json_decode($_modx->resource.options, true)}
{if $rows?}
{foreach $rows as $row}
{if $row.active == '1'}
<option value="{$row.alt}">{$row.alt}</option>
{/if}
{/foreach}
{else}
<option value="">Вакансий нет</option>
{/if}
))) ага не-а
в данном случае поскольку? без: только часть проверки без возвращаемых вариантов! Если не пусто тогда выводим иначе «пофиг»
в данном случае поскольку? без: только часть проверки без возвращаемых вариантов! Если не пусто тогда выводим иначе «пофиг»
Спасибо, забираю!!!
Я смотрю кто-то «подтырил» селект у вордпресса)))
))) есть такое дело!!!
Народ, подскажите, есть migx, в нем поле aml_resource (значения: 2,3,4). Значения — это id-шники страниц.
Форыч должен выводить на странице те строки, в которых одно из значений в поле aml_resource совпадает с id текущей страницы.
То есть, строка должна вывестись в ресурсах 2,3,4, но выводится только в 2.
Где что не так делаю?
Форыч должен выводить на странице те строки, в которых одно из значений в поле aml_resource совпадает с id текущей страницы.
{set $resource_id = $_modx->resource.id}
{set $rows = json_decode(25 | resource : 'add_list', true)}
{foreach $rows as $row}
{set $aml_resource = [$row.aml_resource]}
{if $resource_id in $aml_resource}
<span>{$row.aml_title}</span>
{/if}
{/foreach}
Выводится только первое значение. То есть, строка должна вывестись в ресурсах 2,3,4, но выводится только в 2.
Где что не так делаю?
Не так надо было массив делать.
Меняем
Меняем
{set $aml_resource = [$row.aml_resource]}
на{set $aml_resource = $row.aml_resource|split}
и все работает.
Подскажите как извлечь поле _last, которое указывает на то что ресурс последний, то есть если _last=>1 то этот элемент последний. Нужно для условия аля
{if $row._last == 1}
'здесь дальнейший код'
{/if}
С такой схемой пробовал, не получается, '$row._last' просто напросто не существует.
Эхх, сам же нашел решение почитав комменты))
{foreach $rows as $_last => $row}
{if $_last == '1'}
'код'
{/if}
{/foreach}
Но тут же назрел другой вопрос, а что если нужно и поле _last и поле idx и скажем еще поле _alt для дальнейшего условия? Тобишь:{foreach $rows as $_last => $row}
{if $_last == '1'}
'код'
{if $idx == '1'}
'еще код'
{if $_alt != '1'}
'и еще немного кода'
{/if}
{/if}
{/if}
{/foreach}
Естественно это пример а не реальные требования.
Всем, привет!
Есть небольшой вопрос:
На проекте есть 4 услуги, у каждой из которых есть по 4 тарифа, через MIGX + foreach тарифы выводятся на нужных страницах в нужных местах.
Но появилась задача, вывести по 1му тарифу из каждой услуги на главной странице. В идеале что бы это были только тарифы с минимальной ценой(повторяющихся нет) или скажем тариф у коготого стоит галочка «На главную».
Как можно реализовать выборку из всех 4х услуг и отобрать нужные элементы по условиям?
Есть небольшой вопрос:
На проекте есть 4 услуги, у каждой из которых есть по 4 тарифа, через MIGX + foreach тарифы выводятся на нужных страницах в нужных местах.
Но появилась задача, вывести по 1му тарифу из каждой услуги на главной странице. В идеале что бы это были только тарифы с минимальной ценой(повторяющихся нет) или скажем тариф у коготого стоит галочка «На главную».
Как можно реализовать выборку из всех 4х услуг и отобрать нужные элементы по условиям?
Привет
Было бы проще поработать с кодом, но условный процесс для вывода на главной выглядит так:
1. Вытягиваешь из базы все услуги
2. Запускаешь foreach на полученные услуги в пункте 1
2.1 Сортируешь тарифы в
2.2 Применяешь ещё фильтры на нужные тебе тарифы
2.3 Выводишь самый первый тариф после сортировки (он будет минимальный)
3. Foreach закончен. Всё выведено
Надеюсь, я верно понял вопрос и подсказал.
С другой стороны этот топик про MIGX getImageList и fenom…
Было бы проще поработать с кодом, но условный процесс для вывода на главной выглядит так:
1. Вытягиваешь из базы все услуги
2. Запускаешь foreach на полученные услуги в пункте 1
2.1 Сортируешь тарифы в
услугах
по возрастанию2.2 Применяешь ещё фильтры на нужные тебе тарифы
2.3 Выводишь самый первый тариф после сортировки (он будет минимальный)
3. Foreach закончен. Всё выведено
Надеюсь, я верно понял вопрос и подсказал.
С другой стороны этот топик про MIGX getImageList и fenom…
Спасибо. Я прикидывал примерно похожий план, главная загвоздка пока
в пунктах:
1. Вытягиваешь из базы все услуги
2. Запускаешь foreach на полученные услуги в пункте 1
Не могу сообразить как это записать, как вытягивать данные с одной страницы получилось, но с 4х и складывать всё грубо говоря в кучу не понимаю. Даже без фильтрации, скажим если выводить всё со всех страниц
в пунктах:
1. Вытягиваешь из базы все услуги
2. Запускаешь foreach на полученные услуги в пункте 1
Не могу сообразить как это записать, как вытягивать данные с одной страницы получилось, но с 4х и складывать всё грубо говоря в кучу не понимаю. Даже без фильтрации, скажим если выводить всё со всех страниц
Вот так можно страницы вытянуть в одну переменную, по перечню id, например:
{var $resources = $_modx->getResources(
['published' => 1, 'deleted' => 0],
['resources' => '1,2,3,4', 'sortby' => 'id', 'sortdir' => 'ASC', 'limit' => 10, 'includeTVs' => 'tvname']
)}
{foreach $resources as $resource}
Значение поля {$resource['tvname']}
{/foreach}
Добрый день! Подскажите, делаю так:
Что делается не так? Если я добавляю вот это:
Что прописать вот сюда, чтобы миниатюра нормальная появлялась?
<div class="row">
{set $rows = json_decode($_modx->resource.resourcealbum, true)}
{foreach $rows as $row}
<div class="col-xs-6 col-md-2">
<a href="{$row.image}" title="{$_modx->resource.pagetitle}" class="fancybox2" data-fancybox="gallery">
<img src="{$row.image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
</a>
</div>
{/foreach}
</div>
В итоге нет ни картинки, ни миниатюры.Что делается не так? Если я добавляю вот это:
<a href="assets/resourceimages/{$_modx->resource.id}/{$row.image}" title="{$_modx->resource.pagetitle}" class="fancybox2" data-fancybox="gallery">
То хотя бы открывается картинка при клике на миниатюру. Но миниатюра идет стандартны noimage. Что не так?Что прописать вот сюда, чтобы миниатюра нормальная появлялась?
<img src="{$row.image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
Очевидно же что надо дописать путь к источнику файлов.
1. Почитайте — modx.pro/howto/16490
2. Воспользуйтесь
1. Почитайте — modx.pro/howto/16490
2. Воспользуйтесь
print
и посмотрите что живет у вас в переменной
В переменной у меня живет: имя файла.jpg. Но как подставить адрес вот сюда, правильно, чтобы все заработало?
<img src="{$row.image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
Насколько мне известно phpthumbon хранит обработанные изображения в папке кэша. Я её точно не помню, вы можете посмотреть в настройках компонента и подставить этот путь туда.
Как-то так можно:
{set $image='assets/resourceimages/'~$_modx->resource.id~'/'~$row.image}
<a href="{$image}" title="{$_modx->resource.pagetitle}" class="fancybox2" data-fancybox="gallery">
<img src="{$image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
</a>
Так можно только если не обрабатывать изображение через phpthumbon. Иначе путь получается другим.
Почему другой? Дальше он его обрабатывает $image | phpthumbon. А в кеше как вы советуете, нет ни чего, поскольку в его варианте $row.image | phpthumbon, phpthumbon не находит изображение, не обрабатывает его и подставляет заглушку.
Я думаю что если человек догадался дописать путь в ссылку:
То он догадается и дописать путь в сам путь к файлу? Иначе это очень неумный человек.
Если он это сделал и у него не заработало, то phpthumbon добрался таки до файла, обработал его согласно опциям и (насколько я помню) вместо существующего пути файла он подставляет свой путь, с обработанным изображением, которое хранится в директории указанной в системных настройках.
Такие выводы я сделал заочно, ибо не использую phpthumbon и не вижу что там у человека получается. :) Возможно конечно я не прав, человек то пропал и ничего не ответил, а возможно кто-то с такой же проблемой столкнется. Помогай вот теперь…
<a href="assets/resourceimages/{$_modx->resource.id}/{$row.image}" title="{$_modx->resource.pagetitle}" class="fancybox2" data-fancybox="gallery">
То он догадается и дописать путь в сам путь к файлу? Иначе это очень неумный человек.
<img src="assets/resourceimages/{$row.image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
Если он это сделал и у него не заработало, то phpthumbon добрался таки до файла, обработал его согласно опциям и (насколько я помню) вместо существующего пути файла он подставляет свой путь, с обработанным изображением, которое хранится в директории указанной в системных настройках.
Такие выводы я сделал заочно, ибо не использую phpthumbon и не вижу что там у человека получается. :) Возможно конечно я не прав, человек то пропал и ничего не ответил, а возможно кто-то с такой же проблемой столкнется. Помогай вот теперь…
Но если вот это прописать, я конечно попробую, но как я понимаю, что изображение обработанное падает не в папку assets/resourceimages/{$_modx->resource.id}/, а в какую-то другую.
Сейчас проверю, отпишусь.
Сейчас проверю, отпишусь.
<img src="assets/resourceimages/{$row.image | phpthumbon : "w=250&h=250&zc=1"}" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
<img src="assets/resourceimages/{$row.image | phpthumbon : "w=250&h=250&zc=1"}"
в таком виде phpthumbon файл не видит.<img src="{'assets/resourceimages/'~$_modx->resource.id~'/'~$row.image | phpthumbon : "w=250&h=250&zc=1"}"
вот так возможно и увидит. Есть не большая тонкость.
<a href="assets/resourceimages/{$_modx->resource.id}/{$row.image}"
здесь собирается путь не посредственно в HTML и потом картинку видит именно браузер, а надо что бы ее увидел сначала сниппет, поэтому путь к картинке надо собирать раньше.
Да тут вы правы, ваш вариант выше с занесением пути в переменную сразу конечно лучше чем подставлять путь вручную везде.
Попробовал. Не получилось
Вот что получилось по факту в коде сайта:
Вот что получилось по факту в коде сайта:
<img src="assets/resourceimages/222//assets/cache_image/noimage_250x250_acd.jpg"
Разумеется это не помогло, теперь вместо заглушки — просто пусто.
Напишите мне в личку, если дадите доступ к сайту я посмотрю, исправлю и объясню в чем дело. У меня нет под рукой проекта где я могу проверить работу phpthumbon + migx.
Разобрался.
Почему-то заработало, только вот в таком виде.
Почему-то заработало, только вот в таком виде.
<div class="row">
{set $rows = json_decode($_modx->resource.resourcealbum, true)}
{foreach $rows as $row}
<div class="col-xs-6 col-md-2">
<a href="assets/resourceimages/{$_modx->resource.id}/{$row.image}" title="{$_modx->resource.pagetitle}" class="fancybox2" data-fancybox="gallery">
<img src="
{'phpthumbon' | snippet : [
'input' => 'assets/resourceimages/'~$_modx->resource.id~'/'~$row.image,
'options' => '&w=250&h=250&zc=1',
]
}
" alt="{$_modx->resource.pagetitle}" title="{$_modx->resource.pagetitle}" class="img-thumbnail">
</a>
</div>
{/foreach}
</div>
Спасибо Денису за подсказку с написанием пути.
А кто-то ковырял migxLoopCollection + Fenom при использовании MIGXdb и multiple formtabs?
Есть три конфигурации для мультиформ, одна основная, которая указывается в тв для ресурса и две как переключатели.
Столкнулся с такой проблемой что путем:
выводятся только поля основной migx конфигурации.
А вот когда использую сниппет:
Есть три конфигурации для мультиформ, одна основная, которая указывается в тв для ресурса и две как переключатели.
Столкнулся с такой проблемой что путем:
{set $rows = json_decode($_modx->resource.mytvname, true)}
выводятся только поля основной migx конфигурации.
А вот когда использую сниппет:
[[migxLoopCollection?
&classname=`myclass`
&packageName=`mypackage`
&limit=`0`
&debug=`0`
]]
Выводит все поля всех связанных конфигураций. Вывести бы все поля через Fenom, было бы идеально.
Просто укажи параметр class нужный и проверь чтоб sortby поле существовало в схеме твоего класса.
Задача Вывести на Fenom
[[getImageList?
&tvname=`gallery`
&tpl=`@CODE: <img src="[[+image]]" alt="[[+title]]">`
&where=`{"published":"1"}`
]]
Решение{set $rows = json_decode($_modx->resource.imageGallery, true)}
{foreach $rows as $row}
{if $row.published == '1'}
<dl class='gallery-item'>
<dt class='gallery-icon landscape'>
<a href='{("assets/images/res/{$_modx->resource.id}/" ~ $row.image)}'><img width="300" height="300" src="{("assets/images/res/{$_modx->resource.id}/" ~ $row.image)| phpthumbon : "w=300&h=300&zc=1"}" class="attachment-thumbnail" /></a>
</dt>
<dd></dd>
</dl>
{/if}
{/foreach}
Добрый день. Подскажите пожалуйста, может кто сталкивался: разделить поочередно в колонки бутстрап 2 migx_tv.
col-lg-6>migx_tv_1 | col-lg-6>migx_tv_2
col-lg-6>migx_tv_1 | col-lg-6>migx_tv_2
…
Пытался вывести так:
Четное и нечетное — соответственно тоже просто idx не выводит migx_tx по этому принципу.
Я конечно могу версткой вложить в колонку — все значения каждого из migx_tv, но мне интересно можно ли межевать значения из массива между собой.
col-lg-6>migx_tv_1 | col-lg-6>migx_tv_2
col-lg-6>migx_tv_1 | col-lg-6>migx_tv_2
…
Пытался вывести так:
{set $arr_tv = ['migx_tv_1', 'migx_tv_2']}
<div class="container">
<div class="row">
{foreach $arr_tv as $item}
{set $rows = 15 | resource : $item | fromJSON}
{foreach $rows as $row}
<div class="col-lg-6">
{$row.file}" - вытаскиваю из migx_tv_1
</div>
<div class="col-lg-6">
{$row.img} - вытаскиваю из migx_tv_2
</div>
{/foreach}
{/foreach}
</div>
</div>
Сначала пробегает по первому migx_tx, и вторая колонка соответственно пустая, затем бежит по второму migx_tv — соответственно нечего вложить в первую колонку.Четное и нечетное — соответственно тоже просто idx не выводит migx_tx по этому принципу.
Я конечно могу версткой вложить в колонку — все значения каждого из migx_tv, но мне интересно можно ли межевать значения из массива между собой.
Мы не знаем что у вас в полях ['migx_tv_1', 'migx_tv_2'] migx лежит…
Но по логике, вам нужно проверять приходит 1й migx или 2й.
это делаетя так:
Но по логике, вам нужно проверять приходит 1й migx или 2й.
это делаетя так:
{set $arr_tv = ['migx_tv_1', 'migx_tv_2']}
<div class="container">
<div class="row">
{foreach $arr_tv as $item}
{set $rows = 15 | resource : $item | fromJSON}
{foreach $rows as $row}
{if $item == 'migx_tv_1'}
<div class="col-lg-6">
{$row.file}" - вытаскиваю из migx_tv_1
</div>
{else}
<div class="col-lg-6">
{$row.img} - вытаскиваю из migx_tv_2
</div>
{/if}
{/foreach}
{/foreach}
</div>
</div>
Предположим каждый из migx_tv — массив из 4 объектов. В Вашем примере он тогда по порядку вытащит из первого массива TV элемент {$row.file}
<div class="col-lg-6">{$row.file}</div>
<div class="col-lg-6">{$row.file}</div>
<div class="col-lg-6">{$row.file}</div>
<div class="col-lg-6">{$row.file}</div>
, а потом пробежится по второму массиву и вытянет объекты с элементом {$row.img}<div class="col-lg-6">{$row.img}</div>
<div class="col-lg-6">{$row.img}</div>
<div class="col-lg-6">{$row.img}</div>
<div class="col-lg-6">{$row.img}</div>
Мне нужно, что бы параллельно (первый TV > первый idx) + (второй TV > второй idx)
Тогда вы должны определиться какой migx основной и сделать что-то типа такого:
<div class="container">
<div class="row">
{set $arr = 15 | resource : 'migx_tv_1' | fromJSON}
{set $rows = 15 | resource : 'migx_tv_2' | fromJSON}
{foreach $arr as $row index=$index}
<div class="col-lg-6">
{$row.file}" - вытаскиваю из migx_tv_1
</div>
<div class="col-lg-6">
{$rows[$index]['img']} - вытаскиваю из migx_tv_2
</div>
{/foreach}
</div>
</div>
Да, это то, что нужно. Мой интерес удовлетворен. Огромное благодарю.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.