Скрыть чанк, если ресурс не опубликован

Добрый день!
Не как не могу найти, возможно так и не получиться сделать, по средствам модефикаторов скрыть чанк, если ресурс с определенный id не опубликован.
Например на главной вывожу новости, но нет не одной опубликованной, можно как то скрыть чанк, если сниму с публикации id 2?
Сергей
04 января 2019, 11:52
modx.pro
1 393
0

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

Vlad Brise
04 января 2019, 13:11
0
Лучше всего это делать на Fenom. Если я правильно понял ваш вопрос
{set $news = '!pdoResources'|snippet:[
    'parents' => 'айди ресурса с новостями'
  ]}
  {if $news}
    {$news} {*Здесь вызываем сниппет*}
  {/if}
    Сергей
    04 января 2019, 13:14
    0
    Это я так полагаю что скрывается если нет дочерних ресурсов? А я хотел сделать условие на публикацию. Но спасибо за решение.
      Vlad Brise
      04 января 2019, 13:17
      0
      В таком случае
      {if $_modx->resource.publishedon == 1}Содержимое{/if}
      Но лучше первый вариант, если нет ресурсов, то ничего не выведет.
        Сергей
        04 января 2019, 13:33
        0
        В данной примере 1 — это id ресурса? или 1 — опубликован? Как сделать без Fenom? Еще раз спасибо за помощь!
          Vlad Brise
          04 января 2019, 13:47
          0
          1 — означает опубликован. Я не пользовался стандартным синтаксисом уже сто лет, так что понятия не имею, просто включите феном и попробуйте, вы можете использовать два шаблонизатора
            Баха Волков
            04 января 2019, 14:32
            0
            Если не хотите использовать fenom, то смотрите в сторону fastfield и pxh фильтры, ваша задача решается просто
          Александр Мельник
          04 января 2019, 15:03
          0
          Это я так полагаю что скрывается если нет дочерних ресурсов?
          Нет, вы ошибаетесь.
          В переменную news попадут результаты работы сниппета pdoResources. Поскольку по умолчанию он отбирает только опубликованные ресурсы, то это именно то что вам нужно.
          Далее проверяем, есть ли что то в этой переменной и если есть, сразу выводим результат, ведь он уже лежит в переменной news. Никакой сниппет внутри условия уже вызывать не нужно, это будет бесполезно.
          Ни и плюс, проверку пустоты перменной лучше делать корректно, со знаком вопроса в конце.
          {if $news?}
          Баха Волков
          04 января 2019, 14:30
          0
          Зачем вызывать некэшированный сниппет?

          {*Здесь вызываем сниппет*}
          Тут уже вызван сниппет и выводится его результат

          {if $news}
              {$news} {*Здесь вызываем сниппет*}
            {/if}
          В данной записи нет смысла
            Vlad Brise
            04 января 2019, 14:34
            0
            Он не вызывается, а помещается в переменную, потом его можно вызывать. Мой способ уже не актуален, так как ему нужно по публикации выводить.
              Баха Волков
              04 января 2019, 14:38
              0
              Убежден, что вы ошибаетесь
              Баха Волков
              04 января 2019, 22:33
              0
              Он не вызывается, а помещается в переменную, потом его можно вызывать.
              Кстати, по вашей логике:

              {set $news = '!pdoResources'|snippet:[
                  'parents' => 'айди ресурса с новостями'
              ]}
              {if $news} {* <-- По вашей логике сниппет якобы должен вызываться здесь *}
                  {$news}
              {/if}
              Вопрос, откуда условию известен результат?

              {if $news} {* Откуда здесь условию известен результат? *}
                  {$news} {*Если сниппет вызывается тут, то (см. выше)*}
              {/if}
              Сергей
              04 января 2019, 14:36
              0
              Можно как то осуществить проверку на публикацию ресурса по id и скрыть чанк если ресурс не опубликован?
          Павел Романов
          04 января 2019, 18:07
          0
          [[$[[#2.publishedon:is=`1`:then=`chunk_name`]]]]
            Сергей
            04 января 2019, 18:22
            0
            Что бы я без вас делал, спасибо добрый человек!
              Сергей
              04 января 2019, 18:39
              0
              Хотя что то не работает, но смысл такой
                snyadanak
                04 января 2019, 22:13
                0
                Может такое?
                {if '!pdoField' | snippet : [ 'id' => 2, 'field' => 'published' ] == 1}
                    {include 'chunk'}
                {/if}
                  Баха Волков
                  04 января 2019, 22:23
                  0
                  Зачем pdoField, тем более некэшированный, когда есть модификатор resource?
                    snyadanak
                    04 января 2019, 22:29
                    0
                    Ой да пожалуйста

                    {if 2 | resource : 'publish' == 1}
                        {include 'chunk'}
                    {/if}
                      Баха Волков
                      05 января 2019, 00:20
                      0
                      Поле если не ошибаюсь называется published ?

                      Вы только не обижайтесь, а то уже слышал, что могу кого-то задеть)
                        snyadanak
                        05 января 2019, 00:23
                        0
                        Да-да, у меня Новый год еще не закончился. А код исправить уже не могу =/
            Алексей Федоров
            04 января 2019, 22:34
            0
            Непонятен вопрос. Этот чанк в принципе один или вызывается в составе сниппета? Условие касается только документа с id=2 или всех неопубликованных? Я так понял, что есть раздел «Новости» с id=2 и есть блок вывода всех новостей на главной. Если так, то это решается параметром pdoResources:
            &wrapIfEmpty=`0`
            Если что-то более замороченное, на этот случай тоже есть отличная штука в том же сниппете:
            &conditionalTpls
              Сергей
              05 января 2019, 02:40
              0
              Спасибо за помощь, но то что вы говорите это не верно.
              1. Есть главная страница на ней выводятся новости. Этот блог имеет свое оформление и имеет несколько сниппетов и все это в оном чанке
              2. Есть родитесь с новостями, если новостей нет, я скрываю этот раздел и все
              Но возникает одно НО на главной странице оформление не куда не делось.

              &conditionalTpls — это для выборки
              &tplWrapper — это интересно, но боюсь не смогу внедрить так как там несколько сниппетов выводится
              Поэтому надо условия исключительно на опубликованный ресурс.
                Алексей Федоров
                05 января 2019, 08:48
                0
                Код чанка можно? С указанием, что мешает))
                  Сергей
                  05 января 2019, 12:17
                  0
                  Да, пожалуйста)

                  <div class="container-8" style="margin-top: 40px; margin-bottom: 50px;">
                            <div class="intec-content widget-services">
                              <div class="intec-content-wrapper">
                                <div class="widget-services-title ">
                                  [[!pdoField?id=`2`&field=`pagetitle`]]</div>
                                <div class="widget-services-description ">
                  			  </div>
                                <div class="widget-services-desktop">
                                  <div class="intec-content">
                                    <div class="intec-content-wrapper">
                                      <div class="widget-services-view widget-services-view-tile clearfix">
                                        <div class="widget-services-view-wrapper">
                                          [[pdoResources? &tpl=`_uslugi` &parents=`2` &processTVs=`1` &includeTVs=`price,ot,unit,home` &sortby=`menuindex` &sortdir=`ASC` &where=`["(home LIKE 'Да')"]` ]]
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                                <div class="widget-services-mobile">
                                  <div class="intec-content">
                                    <div class="intec-content-wrapper">
                                      <div class="widget-services-view widget-services-view-tile clearfix">
                                        <div class="widget-services-view-wrapper">
                                          [[pdoResources? &tpl=`_uslugi` &parents=`2` &processTVs=`1` &includeTVs=`price,ot,unit,home` &sortby=`menuindex` &sortdir=`ASC` &where=`["(home LIKE 'Да')"]` ]]
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                                <div class="intec-content">
                                  <div class="intec-content-wrapper">
                                    <div class="widget-services-buttons">
                                      <a href="[[~2]]" class="intec-button intec-button-md intec-button-cl-common intec-button-transparent">
                                              Все услуги                        </a>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
              Сергей
              05 января 2019, 12:26
              0
              Вообщем может кому-то пригодится:

              {if 2 | resource : 'published' == 1}
                  {include 'Название чанка'}
              {/if}
              ИЛИ
              [[$[[#2.published:is=`1`:then=`Название чанка`]]]]
                Баха Волков
                05 января 2019, 13:11
                0
                Ну вот, сказал же поковырряйтесь и найдёте решение. Кстати, равно 1 можно не ставить, всё равно придёт значение Boolean 1/0
                  Алексей Федоров
                  06 января 2019, 16:20
                  0
                  Ну вот)) Получилось и ладно, только Павел же этот пример и приводил выше. Когда не подошло, подумал было, что совсем уникальный случай, а оно всё же просто решается).
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  29