Задать вопрос
  • Как организовать вывод значения типа "список ресурсов" в сниппете Collections?

    kazakova-net
    @kazakova-net Автор вопроса
    web-master
    Решение найдено самостоятельно.

    Покопавшись в документации я выяснила, что Collections предоставляет возможность обрабатывать значение сниппетами-рендерами.
    Для своих нужд я написала два вида сниппетов.

    Если в виде Collections необходимо вывести значение поля с типом ввода "список ресурсов" и нужно вывести именно pagetitle ресурсов, а не их id, можно использовать следующий код:
    <?php
    $value = $modx->getOption('value', $scriptProperties, '');
    $res = $modx->getObject('modResource',$value);
    $output = $res->get('pagetitle');
    return $output;


    Для получения осмысленного значения у поля с типом ввода чекбокс при возможных значениях значение1==1||значение2==2||.. пригодился следующий сниппет-рендер:
    <?php
    $inputValue = $modx->getOption('value', $scriptProperties, '');
    
    $resourceQuery = new xPDOCriteria($modx, "SELECT * FROM {$modx->getTableName('modTemplateVar')} WHERE name = 'objectTip'");
    $tv = $modx->getObject('modTemplateVar', $resourceQuery);
    $elements = $tv->get('elements');
    $options = explode('||', $elements);
    $lookup = array();
      
    foreach ($options as $o) {
      list($name, $value) = explode('==', $o);
      $lookup[$value] = $name;
    }
    
    $output = $lookup[$inputValue];
    
    return $output;


    Так как к изучению xPDO я только приступила и мои знания не глубоки, я не исключаю, что этот сниппет можно сделать универсальным для любого тв-поля с типом ввода чекбокс (аналогично и селект), и буду рада, если кто-то в комментариях подскажет как это сделать. Я же писала отдельный сниппет для каждого поля и его имя передавала в запрос. Так как таким образом мне нужно было обработать всего 2 поля, остановилась на этом решении.

    Возможно кому-то понадобится.
    Ответ написан
    Комментировать