Получить значения поля ms2Gallery

Благородные сэры, подскажите, как получить по аналогии значение поля «Дополнительно» у изображения в ms2Gallery?

$tv = !empty($input) ? trim($input) : trim($modx->resource->get($tv));
if (empty($tv)) {return '';}
Заранее благодарен.
Wassi Wassinen
02 апреля 2015, 15:45
modx.pro
5
1 979
0

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

Василий Наумкин
02 апреля 2015, 18:59
0
$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');
// Получаем файл с id = 10
if ($file = $modx->getObject('msResourceFile', 10)) {
	print_r($file->toArray());
}
    Wassi Wassinen
    02 апреля 2015, 19:09
    0
    Василий, спасибо за ответ.

    Я сниппет один использовал, чтобы разбивать ТВ-поля по строкам, с возможностью оформления чанком каждой строки.

    <?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? Спасибу отправлю.
      Василий Наумкин
      03 апреля 2015, 04:28
      2
      0
      Видимо, речь об этом сниппете.

      Тогда нужно его совсем чуть-чуть переделать:
      <?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]]

      Здесь сам сниппет ничего получать не должен, потому что, в отличии от ТВ, у картинок нет имён и они не так привязаны к ресурсам. Поэтому, работаем только с уже переданным текстом.
        Wassi Wassinen
        03 апреля 2015, 15:58
        0
        Премного благодарен, Василий! Спасибо отправил.
          Василий Наумкин
          03 апреля 2015, 16:00
          0
          На здоровье!
            Wassi Wassinen
            10 апреля 2015, 00:16
            0
            Василий, подскажи, а как вызывать как сниппет?

            [[getAddList? &tpl=`` ]]


            Через какой параметр передавать плейсхолдер?

            Заранее благодарен.
              Wassi Wassinen
              10 апреля 2015, 00:30
              0
              Пробовал по-разному. Не хочет )
                Wassi Wassinen
                10 апреля 2015, 00:46
                0
                Разобрался.

                [[getAddList? &input=`chunk]]
                  Василий Наумкин
                  10 апреля 2015, 06:21
                  0
                  Да, у всех сниппетов, которые могут работать как фильтр вывода, есть параметр &input.

                  Вот документация.
                    Wassi Wassinen
                    10 апреля 2015, 18:33
                    0
                    Спасибо, Василий. Скажите, а можно как-то задать номер строки для вывода? Сниппет разбивает на строки и выводит только ту строку, которая указана в параметре. Есть однотипные списки, из которых нужно вытаскивать определенные строки. Сильно нужно будет изменить сниппет?
                      Василий Наумкин
                      10 апреля 2015, 19:15
                      0
                      Надо уже как-то определяться, «на ты» или «на вы» мы общаемся. А то в сообществе одно, в поддержке другое, а на почте как получится.

                      Поэтому, держи новую версию сниппета — code.re/7IG
                      [[!Test?
                      	&rows=`0,3,4`
                      	&input=`1||2||3||4||5||6`
                      	&separator=`||`
                      ]]
                      Номера строк нужно указывать от нуля — именно так они идут в массиве.

                      Заодно добавил еще возможность указания разделителя строк. Если пустой — то будет разбиваться как обычно, по переносам.
                        Wassi Wassinen
                        10 апреля 2015, 20:39
                        0
                        Ну просто сказка! Спасибо, Василий! Отправил благодарность.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        12