Вывод ресурсов только с заполненными TV

Добрый день!

У шаблона есть TV-параметр video, в котором код видео с ютуба. Планирую выводить с помощью pdoPage только те ресурсы, у которых заполнены соответствующие TV. Вот так не выводит:

[[!pdoPage? 
&ajaxMode=`button` 
&parents=`3-100`  
&element=`pdoResources` 
&limit=`6` &tpl=`tpl-video` 
&includeTVs=`video` 
&sortby=`{"publishedon":"desc"}` 
&where=`{"video":"1"}`]]
[[!+page.nav]]


tpl-video

<div class="col-md-4">
<div class="vendor">
<iframe src="https://www.youtube.com/embed/[[+tv.video]]" frameborder="0" width="100%" height="227"></iframe>
<h3>[[+pagetitle]]</h3>
<p>[[+introtext]]</p>
</div>
</div>

Как модификатор вывода прикрутить не пойму. Может кто знает как сделать?
Spirit_Ninja
06 января 2017, 19:39
modx.pro
3
2 515
0

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

Евгений Webinmd
07 января 2017, 00:01
0
попробуйте так:
&where=`{"video:!=":""}
    Spirit_Ninja
    07 января 2017, 01:51
    0
    к сожалению, не работает
      Дмитрий Суворов
      07 января 2017, 02:05
      +1
      как вариант в tpl в первом div:
      <div class="col-md-4" style="[[+tv.video:default=`display:none;`]]">

      Но это конечно так себе решение.
        Гриборий
        07 января 2017, 13:10
        1
        -1
        Тогда уж
        [[+tv.video:notempty=`<div>...</div>`]]
          Spirit_Ninja
          07 января 2017, 20:09
          1
          0
          Супер! Это лучшее решение, все работает, спасибо! В чанке так:
          [[+tv.video:notempty=`
          <div class="col-md-4">
          <div class="video-media">
          <div class="vendor"><iframe src="https://www.youtube.com/embed/[[+tv.video]]" frameborder="0" width="100%" height="227"></iframe></div>
          <div class="video-text">
              <div style="padding:0px 10px">
          <h3>[[+pagetitle]]</h3>
          <p>[[+introtext]]</p>
               </div>
          </div>
          </div>
          </div>`]]
            Гриборий
            07 января 2017, 22:51
            -3
            Это лучшее решение
            Это ответ скорее на бред про сокрытие с помощью стилей. А вам надо было глянуть общие параметры pdotools. Там для работы с тв отдельные настройки. Нужно вот так:
            [[pdoResources?
            	&includeTVs=`myTV`
            	&processTVs=`1`
            	&tvFilters=`myTV!=0`
            ...
              Spirit_Ninja
              08 января 2017, 01:00
              0
              А pdoPage как будет вызов?
                Гриборий
                08 января 2017, 01:10
                0
                Так же точно.
                  Гриборий
                  08 января 2017, 01:14
                  0
                  На самом деле, лишнего написал. &includeTVs и &processTVs не нужны. Достаточно указать только &tvFilters=`video!==`, как вам вчера тут подсказали. Если не работает – ищите неточности у себя какие-либо.
                    Spirit_Ninja
                    08 января 2017, 12:24
                    0
                    не сработало почему-то
                Максим Кузнецов
                08 января 2017, 01:12
                1
                +3
                Это решение так себе, т.к. при пагинации скрытые элементы просто не будут отображены пользователю, но все равно будут учитываться при подсчете — в итоге на каждой странице будет отображено разное количество видео.

                Вообще, конкретно в вашем случае, самый правильный вариант будет примерно таким:
                &where=`{"video:LIKE": "%youtube%"}
                — при условии, что в тв-поле «video» у вас хранится полная ссылка до видео.

                UPD: как альтернатива — нужно проверять тв-поле на то, чтобы оно было !=NULL и !="", т.к. до первого заполнения тв-поля его не существует в принципе в таблице, а после первого заполнения и очищения значения поле уже есть, но оно пустое.
                  Spirit_Ninja
                  08 января 2017, 15:37
                  0
                  полный код видео скорее всего не вариант вставлять — тогда верстку и стили придется дописывать, чтобы масштабировалось.
                    Максим Кузнецов
                    08 января 2017, 15:44
                    0
                    Я скорее имел ввиду, что если у вас хранится ссылка до видео не только в виде id, а в формате:
                    https://www.youtube.com/watch?v=айди
                    или любом другом, где есть единая фраза (youtube, https, /, и тд), то вышеописанный способ вам подойдет.
              Spirit_Ninja
              07 января 2017, 20:08
              0
              Работает, но страница грузится 15 секунд и на код без слез не взглянешь) За идею спасибо!
                Дмитрий Суворов
                07 января 2017, 20:14
                0
                да, согласен. Вариант Григория логичнее, если реализовывать таким путем. Но и это не совсем верно. Все таки лучше фильтровать через where
          Павел Романов
          07 января 2017, 02:19
          +1
          А если не через where, а tvFilters?

          &tvFilters=`video!==`
            Андрей
            07 января 2017, 15:57
            +1
            Так можно еще
            &where=`{"video:!=":NULL}
              Spirit_Ninja
              07 января 2017, 20:12
              0
              не сработало…
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18