Скрыть чанк, если ресурс не опубликован
Добрый день!
Не как не могу найти, возможно так и не получиться сделать, по средствам модефикаторов скрыть чанк, если ресурс с определенный id не опубликован.
Например на главной вывожу новости, но нет не одной опубликованной, можно как то скрыть чанк, если сниму с публикации id 2?
Не как не могу найти, возможно так и не получиться сделать, по средствам модефикаторов скрыть чанк, если ресурс с определенный id не опубликован.
Например на главной вывожу новости, но нет не одной опубликованной, можно как то скрыть чанк, если сниму с публикации id 2?
Комментарии: 29
Лучше всего это делать на Fenom. Если я правильно понял ваш вопрос
{set $news = '!pdoResources'|snippet:[
'parents' => 'айди ресурса с новостями'
]}
{if $news}
{$news} {*Здесь вызываем сниппет*}
{/if}
Это я так полагаю что скрывается если нет дочерних ресурсов? А я хотел сделать условие на публикацию. Но спасибо за решение.
В таком случае
{if $_modx->resource.publishedon == 1}Содержимое{/if}
Но лучше первый вариант, если нет ресурсов, то ничего не выведет.
В данной примере 1 — это id ресурса? или 1 — опубликован? Как сделать без Fenom? Еще раз спасибо за помощь!
1 — означает опубликован. Я не пользовался стандартным синтаксисом уже сто лет, так что понятия не имею, просто включите феном и попробуйте, вы можете использовать два шаблонизатора
Если не хотите использовать fenom, то смотрите в сторону fastfield и pxh фильтры, ваша задача решается просто
Это я так полагаю что скрывается если нет дочерних ресурсов?Нет, вы ошибаетесь.
В переменную news попадут результаты работы сниппета pdoResources. Поскольку по умолчанию он отбирает только опубликованные ресурсы, то это именно то что вам нужно.
Далее проверяем, есть ли что то в этой переменной и если есть, сразу выводим результат, ведь он уже лежит в переменной news. Никакой сниппет внутри условия уже вызывать не нужно, это будет бесполезно.
Ни и плюс, проверку пустоты перменной лучше делать корректно, со знаком вопроса в конце.
{if $news?}
Зачем вызывать некэшированный сниппет?
{*Здесь вызываем сниппет*}Тут уже вызван сниппет и выводится его результат
{if $news}
{$news} {*Здесь вызываем сниппет*}
{/if}
В данной записи нет смысла
Он не вызывается, а помещается в переменную, потом его можно вызывать. Мой способ уже не актуален, так как ему нужно по публикации выводить.
Убежден, что вы ошибаетесь
Он не вызывается, а помещается в переменную, потом его можно вызывать.Кстати, по вашей логике:
{set $news = '!pdoResources'|snippet:[
'parents' => 'айди ресурса с новостями'
]}
{if $news} {* <-- По вашей логике сниппет якобы должен вызываться здесь *}
{$news}
{/if}
Вопрос, откуда условию известен результат?{if $news} {* Откуда здесь условию известен результат? *}
{$news} {*Если сниппет вызывается тут, то (см. выше)*}
{/if}
Можно как то осуществить проверку на публикацию ресурса по id и скрыть чанк если ресурс не опубликован?
Можно, я вам направление дал
[[$[[#2.publishedon:is=`1`:then=`chunk_name`]]]]
Что бы я без вас делал, спасибо добрый человек!
Хотя что то не работает, но смысл такой
Может такое?
{if '!pdoField' | snippet : [ 'id' => 2, 'field' => 'published' ] == 1}
{include 'chunk'}
{/if}
Зачем pdoField, тем более некэшированный, когда есть модификатор resource?
Ой да пожалуйста
{if 2 | resource : 'publish' == 1}
{include 'chunk'}
{/if}
Поле если не ошибаюсь называется published ?
Вы только не обижайтесь, а то уже слышал, что могу кого-то задеть)
Вы только не обижайтесь, а то уже слышал, что могу кого-то задеть)
Да-да, у меня Новый год еще не закончился. А код исправить уже не могу =/
Непонятен вопрос. Этот чанк в принципе один или вызывается в составе сниппета? Условие касается только документа с id=2 или всех неопубликованных? Я так понял, что есть раздел «Новости» с id=2 и есть блок вывода всех новостей на главной. Если так, то это решается параметром pdoResources:
&wrapIfEmpty=`0`
Если что-то более замороченное, на этот случай тоже есть отличная штука в том же сниппете:&conditionalTpls
Спасибо за помощь, но то что вы говорите это не верно.
1. Есть главная страница на ней выводятся новости. Этот блог имеет свое оформление и имеет несколько сниппетов и все это в оном чанке
2. Есть родитесь с новостями, если новостей нет, я скрываю этот раздел и все
Но возникает одно НО на главной странице оформление не куда не делось.
&conditionalTpls — это для выборки
&tplWrapper — это интересно, но боюсь не смогу внедрить так как там несколько сниппетов выводится
Поэтому надо условия исключительно на опубликованный ресурс.
1. Есть главная страница на ней выводятся новости. Этот блог имеет свое оформление и имеет несколько сниппетов и все это в оном чанке
2. Есть родитесь с новостями, если новостей нет, я скрываю этот раздел и все
Но возникает одно НО на главной странице оформление не куда не делось.
&conditionalTpls — это для выборки
&tplWrapper — это интересно, но боюсь не смогу внедрить так как там несколько сниппетов выводится
Поэтому надо условия исключительно на опубликованный ресурс.
Код чанка можно? С указанием, что мешает))
Да, пожалуйста)
<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>
Вообщем может кому-то пригодится:
{if 2 | resource : 'published' == 1}
{include 'Название чанка'}
{/if}
ИЛИ[[$[[#2.published:is=`1`:then=`Название чанка`]]]]
Ну вот, сказал же поковырряйтесь и найдёте решение. Кстати, равно 1 можно не ставить, всё равно придёт значение Boolean 1/0
Ну вот)) Получилось и ладно, только Павел же этот пример и приводил выше. Когда не подошло, подумал было, что совсем уникальный случай, а оно всё же просто решается).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.