Получить значения поля ms2Gallery
Благородные сэры, подскажите, как получить по аналогии значение поля «Дополнительно» у изображения в ms2Gallery?
$tv = !empty($input) ? trim($input) : trim($modx->resource->get($tv));
if (empty($tv)) {return '';}
Заранее благодарен. Комментарии: 12
$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');
// Получаем файл с id = 10
if ($file = $modx->getObject('msResourceFile', 10)) {
print_r($file->toArray());
}
Василий, спасибо за ответ.
Я сниппет один использовал, чтобы разбивать ТВ-поля по строкам, с возможностью оформления чанком каждой строки.
Я сниппет один использовал, чтобы разбивать ТВ-поля по строкам, с возможностью оформления чанком каждой строки.
<?php
// Получаем или готовый текст, или достаем указанный ТВ у ресурса
$tv = !empty($input) ? trim($input) : trim($modx->resource->getTVValue($tv));
if (empty($tv)) {return '';}
// Стандартные чанки, можно переопределить
if (empty($tpl)) {$tpl = '@INLINE <li>[[+value]]</li>';}
if (empty($tplOuter)) {$tplOuter = '@INLINE <ul>[[+rows]]</ul>';}
// Подключаем pdoTools для работы с инлайновыми чанками
$pdo = $modx->getService('pdoTools');
// Разбиваем текст по символу переноса строки
$rows = '';
$tmp = array_map('trim', explode("\n", $tv));
foreach ($tmp as $value) {
if (empty($value)) {continue;}
$rows .= $pdo->getChunk($tpl, array('value' => $value));
}
// Если есть, что выводить - выводим
if (!empty($rows)) {
return $pdo->getChunk($tplOuter, array('rows' => $rows));
}
Можно его как-то переделать под вышеописанную задачу — разбивать по строкам поле «Дополнительно» изображения ms2Gallery? Спасибу отправлю.
Видимо, речь об этом сниппете.
Тогда нужно его совсем чуть-чуть переделать:
И можно вызывать в чанке оформления галереи:
Здесь сам сниппет ничего получать не должен, потому что, в отличии от ТВ, у картинок нет имён и они не так привязаны к ресурсам. Поэтому, работаем только с уже переданным текстом.
Тогда нужно его совсем чуть-чуть переделать:
<?php
// Получаем готовый текст
$text = trim($input);
if (empty($text)) {
return;
}
// Стандартные чанки, можно переопределить
if (empty($tpl)) {$tpl = '@INLINE <li>[[+value]]</li>';}
if (empty($tplOuter)) {$tplOuter = '@INLINE <ul>[[+rows]]</ul>';}
// Подключаем pdoTools для работы с инлайновыми чанками
$pdo = $modx->getService('pdoTools');
// Разбиваем текст по символу переноса строки
$rows = '';
$tmp = array_map('trim', explode("\n", $text));
foreach ($tmp as $value) {
if (empty($value)) {continue;}
$rows .= $pdo->getChunk($tpl, array('value' => $value));
}
// Если есть, что выводить - выводим
if (!empty($rows)) {
return $pdo->getChunk($tplOuter, array('rows' => $rows));
}
И можно вызывать в чанке оформления галереи:
[[+add:getAddList]]
Здесь сам сниппет ничего получать не должен, потому что, в отличии от ТВ, у картинок нет имён и они не так привязаны к ресурсам. Поэтому, работаем только с уже переданным текстом.
Премного благодарен, Василий! Спасибо отправил.
На здоровье!
Василий, подскажи, а как вызывать как сниппет?
Через какой параметр передавать плейсхолдер?
Заранее благодарен.
[[getAddList? &tpl=`` ]]
Через какой параметр передавать плейсхолдер?
Заранее благодарен.
Пробовал по-разному. Не хочет )
Разобрался.
[[getAddList? &input=`chunk]]
Да, у всех сниппетов, которые могут работать как фильтр вывода, есть параметр &input.
Вот документация.
Вот документация.
Спасибо, Василий. Скажите, а можно как-то задать номер строки для вывода? Сниппет разбивает на строки и выводит только ту строку, которая указана в параметре. Есть однотипные списки, из которых нужно вытаскивать определенные строки. Сильно нужно будет изменить сниппет?
Надо уже как-то определяться, «на ты» или «на вы» мы общаемся. А то в сообществе одно, в поддержке другое, а на почте как получится.
Поэтому, держи новую версию сниппета — code.re/7IG
Заодно добавил еще возможность указания разделителя строк. Если пустой — то будет разбиваться как обычно, по переносам.
Поэтому, держи новую версию сниппета — code.re/7IG
[[!Test?
&rows=`0,3,4`
&input=`1||2||3||4||5||6`
&separator=`||`
]]
Номера строк нужно указывать от нуля — именно так они идут в массиве.Заодно добавил еще возможность указания разделителя строк. Если пустой — то будет разбиваться как обычно, по переносам.
Ну просто сказка! Спасибо, Василий! Отправил благодарность.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.