Получение значений полей MIGX и проверка их на "пустоту"

Помогите решить задачу. Желательно через FENOM или хоть как-то )

К ресурсу добавлены дополнительные поля через MIGX (top-slider)
В данном ресурсе 3 поля, одно из которых текстовое — ID другого ресурса (goods-id).

Требуется получить данное поле, я его получил — [[+goods-id]]
Проверить, заполнено ли оно, если да, то вывести (не важно что, просто 11111111), если нет, то вывести (222222)
Получив id, проверить ресурс с данным id, заполнено ли у него поле price, если да то… если нет, то…

[[getImageList?
        &tvname=`top-slider`
        &tpl=`@CODE:
        
                        <h1 class="text-white">[[+title]]</h1>
                        <p class="text-white">[[+sub-title]]</p>
                            <a class="learn-more x-btn" href="[[#[[+goods-id]].uri]]">УЗНАТЬ БОЛЬШЕ</a>
                            <a class="express-buy x-btn" href="">
                            <span class="cost">[[#[[+goods-id]].price]] ₽</span>                             
                         
        `]]
Алексей
21 декабря 2018, 19:36
modx.pro
1 851
0

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

Alexey Medvedev
21 декабря 2018, 20:44
+1
А где у Вас это не работает: на странице, в шаблоне или в чанке?
    Alexey Medvedev
    21 декабря 2018, 21:56
    +1
    getImageList на сколько я помню не обрабатывает чанки через pdoTools.

    Сделайте копию getImageList (для резервного использования), а исходный сниппет модифицируйте.
    В начало добавьте
    $path = MODX_CORE_PATH . 'components/pdotools/model/pdotools/';
    $pdoFetch = $modx->getService('pdofetch','pdoFetch', $path, $scriptProperties);
    И замените все $modx->getChunk на $pdoFetch->getChunk в сниппете getImageList.

    А лучше откажитесь от сниппета и переделайте на foreach, т.к. MIGX хранит все данные в JSON.

    Что-то типо такого:
    {set $rows = json_decode($_modx->resource['top-slider'], true)}
    {foreach $rows as $row}
        <h1 class="text-white">{$title}</h1>
        <p class="text-white">{$_pls['sub-title']}</p>
        <a class="learn-more x-btn" href="{$goods-id | url}">УЗНАТЬ БОЛЬШЕ</a>
        <a class="express-buy x-btn" href="">
            <span class="cost">{$goods-id | resource : 'price'} ₽</span>
    {/foreach}
    Я так понимаю, что это только часть кода, т.к. тэг а не закрыт и нет ссылки на изображение, раз поле «top-slider».
      Баха Волков
      21 декабря 2018, 22:06
      +2
      Код-то я смотрю нерабочий

      {set $rows = $_modx->resource['top-slider'] | fromJSON}
      {foreach $rows as $row}
          <h1 class="text-white">{$row['title']}</h1>
          <p class="text-white">{$row['sub-title']}</p>
          {if $row['goods-id']}
          <a class="learn-more x-btn" href="{$row['goods-id'] | url}">УЗНАТЬ БОЛЬШЕ</a>
          <a class="express-buy x-btn" href=""></a>
          <span class="cost">{$row['goods-id'] | resource : 'price'} ₽</span>
          {/if}
      {/foreach}


      Там кстати у вас (я автору) отсутствует зарывающий тег и атрибут href обязательный для тега a
        Alexey Medvedev
        21 декабря 2018, 22:11
        +1
        Это я так набросал бегло :) Обратил внимание, что код не весь, не стал даже запариваться на этом.
          Баха Волков
          21 декабря 2018, 22:16
          +1
          Я так и понял)
            Алексей
            22 декабря 2018, 08:24
            0
            Супер! Большое Вам спасибо! Все работает как часы!
              Алексей
              22 декабря 2018, 08:40
              0
              И еще маленький вопрос.
              Можно ли как-то сократить?

              {set $product = $row['goods-id'] | resource : 'product_presentation'}
               {set $product = $product[0]}
              product_presentation — это Array { 0 => uri }

              в продукт я получаю ссылку.
                Alexey Medvedev
                22 декабря 2018, 11:12
                +1
                Если только написать свой модификатор к fenom, только он Вам не к чему.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8