Как выводить через pdoResources разные блоки?
Привет! Подскажите как через pdoResources выводить блоки разного размера?
Есть на сайте проекты, они реализованы следующим образом:
Чанк проектов
http://torrez.ru/project/
Но, на главной верстка немного отличается если посмотрите(либо можно глянуть здесь). Как можно через pdoResources сделать вывод на главной? Там разница лишь в классе col-md-3 col-sm-6 и col-md-6 col-sm-12
А на страничке проекты, класс тоже отличается, там у всех проектов которые добавляются, применяется класс col-md-4 col-sm-6
Есть на сайте проекты, они реализованы следующим образом:
Чанк проектов
<!-- main container -->
<div class="main-container portfolio-inner clearfix">
<!-- portfolio div -->
<div class="portfolio-div">
<div class="portfolio">
<!-- portfolio_container -->
<div class="no-padding portfolio_container clearfix">
[[pdoResources?
&parents=`[[*id]]`
&depth=`0`
&tpl=`tpl.project`
&includeTVs=`img`
&processTVs=`1`
]]
</div>
<!-- end portfolio_container -->
</div>
<!-- portfolio -->
</div>
<!-- end portfolio div -->
</div>
<!-- end main container -->
чанк тпл проекта:<!-- single work -->
<div class="col-md-4 col-sm-6">
<a href="[[~[[+id]]]]" class="portfolio_item">
<img src="[[+tv.img:phpthumbof=`w=1000&h=1000&zc=1`]]" alt="[[+pagetitle]]" class="img-responsive" />
<div class="portfolio_item_hover">
<div class="portfolio-border clearfix">
<div class="item_info">
<span>[[+pagetitle]]</span>
<em>[[+introtext]]</em>
</div>
</div>
</div>
</a>
</div>
<!-- end single work -->
на сайте это выглядит вот так:http://torrez.ru/project/
Но, на главной верстка немного отличается если посмотрите(либо можно глянуть здесь). Как можно через pdoResources сделать вывод на главной? Там разница лишь в классе col-md-3 col-sm-6 и col-md-6 col-sm-12
А на страничке проекты, класс тоже отличается, там у всех проектов которые добавляются, применяется класс col-md-4 col-sm-6
Комментарии: 21
В чанке вывода сделать проверку на id.
[[*id:is=`1`:then=`col-md-4 col-sm-6`:else`col-md-6 col-sm-12`]]
Либо можно сделать разные чанки и сделать вызов pdoResources через феном, записать параметры вызова как массив, в зависимости от страницы вызова подставлять нужный чанк.
А pdoResources можно в разных чанках вызывать? Или только в одном, а для того чтобы в разных это делать нужен этот феном? Потому что через проверку по ИД не получится такое замутить!
Почему не получится по id?
Вопрос был — на главной выводится одно, на остальных страницах другое.
Должно работать.
Через стандартный парсер тоже можно вывести, но придется городить условия.
Вопрос был — на главной выводится одно, на остальных страницах другое.
Должно работать.
Через стандартный парсер тоже можно вывести, но придется городить условия.
на главной пытаюсь вывести, то что у меня находится в проектах:
[[pdoResources?
&parents=`[[*id]]`
&depth=`0`
&tpl=`tpl.project`
&includeTVs=`img`
&processTVs=`1`
]]
не работает, хотя в проектах все четко работает. &parents=`[[*id]]`
А у главной есть свои проекты?
Нет, у главной нет своих проектов, я пытался вывести проекты из страницы проектов, но смог только таким образом:
[[!pdoResources?
&parents=`{{*id}}`
&depth=`2`
&tpl=`tpl.content`
&includeTVs=`img`
&processTVs=`1`
]]
Все очень просто — параметр parents выводит дочерние страницы определенного ресурса.
В данном вызове в параметр parents подставляется id текущей страницы, то есть если вызов на главной — идет запрос на дочерние страницы главной.
Т.е. нужно вставить в parents id страницы с проектами.
В данном вызове в параметр parents подставляется id текущей страницы, то есть если вызов на главной — идет запрос на дочерние страницы главной.
Т.е. нужно вставить в parents id страницы с проектами.
Да теперь работает как надо, спасибо Олег!
Теперь вопрос как на главной сделать вид отображения тот что в топике выше описывал или тут?
В чанке проверку на айди таким образом не работает:
Теперь вопрос как на главной сделать вид отображения тот что в топике выше описывал или тут?
В чанке проверку на айди таким образом не работает:
[[*id:is=`1`:then=`col-md-3 col-sm-6`:else`col-md-6 col-sm-12`]]
сейчас вызов ресурса у главной вот такой:[[!pdoResources?
&parents=`8`
&depth=`0`
&tpl=`tpl.content`
&includeTVs=`img`
&processTVs=`1`
]]
После else не хватает =
Выводит все ресурсы которые есть и не делает блоки разного размера как надо тут, что то не так делаю видимо:
Сейчас чанк «tpl.content» оформления проекта на главной имеет вид:
Сейчас чанк «tpl.content» оформления проекта на главной имеет вид:
<!-- single work -->
<div class="col-md-3 col-sm-6">
<a href="[[~[[+id]]]]" class="portfolio_item">
<img src="[[+tv.img:phpthumbof=`w=1000&h=1000&zc=1`]]" alt="[[+pagetitle]]" class="img-responsive" />
<div class="portfolio_item_hover">
<div class="portfolio-border clearfix">
<div class="item_info">
<span>[[+pagetitle]]</span>
<em>[[+introtext]]</em>
</div>
</div>
</div>
</a>
</div>
<!-- end single work -->
А чанк «content» всех проектов на главной такой:<div class="portfolio-div">
<div class="portfolio">
<div class="no-padding portfolio_container">
[[!pdoResources?
&parents=`[[*id:is=`1`:then=`col-md-3 col-sm-6`:else=`col-md-6 col-sm-12`]]`
&depth=`0`
&tpl=`tpl.content`
&includeTVs=`img`
&processTVs=`1`
]]
</div>
<!-- end portfolio_container -->
</div>
<!-- portfolio -->
</div>
Так тоже не работает &parents=`[[*id:is=`8`..
Уууу… Тут все запущенно.
Давай так, чтобы не морочиться:
Для главной
Для остальных чанк tpl.content
Давай так, чтобы не морочиться:
Для главной
[[!pdoResources?
&parents=`8`
&depth=`0`
&tpl=`tpl.content_main`
&includeTVs=`img`
&processTVs=`1`
]]
Для остальных[[!pdoResources?
&parents=`[[*id]]`
&depth=`0`
&tpl=`tpl.content`
&includeTVs=`img`
&processTVs=`1`
]]
Для главной чанк tpl.content_mainДля остальных чанк tpl.content
Сейчас сделал все вот в таком формате:
Для главной
gyazo.com/58670ffcb5a4d66bd622432a68d1490e
для страницы всех проектов
gyazo.com/0bca822faf33f197c8ee59f50e369ba7
Вот теперь нужно для чанка projects_main задать проверку на id?
Потому что, пока на главной все блоки выстраиваются одинаково по классу col-md-3 col-sm-6 так как у меня там указан конкретный id (8)
Для главной
gyazo.com/58670ffcb5a4d66bd622432a68d1490e
для страницы всех проектов
gyazo.com/0bca822faf33f197c8ee59f50e369ba7
Вот теперь нужно для чанка projects_main задать проверку на id?
Потому что, пока на главной все блоки выстраиваются одинаково по классу col-md-3 col-sm-6 так как у меня там указан конкретный id (8)
Как можно через pdoResources сделать вывод на главной? Там разница лишь в классе col-md-3 col-sm-6 и col-md-6 col-sm-12— можно выставлять все в разный плейсхолдеры, а плейсхолдеры раскидывать по верстке как нужно, это уместно если количество блоков, например, заранее определено.
docs.modx.pro/components/pdotools/snippets/pdoresources смотри &toSeparatePlaceholders
Владимир спасибо за ответ, а что значит это уместно если кол-во блоков заранее определено? У меня эти блоки появляются, когда я завожу в админке новый проект и по сути их может быть сколько угодно.
Или же ты имеешь ввиду про лимит кол-ва блоков которое располагается на странице? Лимит я хочу выставить 5 блоков(последних проектов которые были добавлены) на главной, а на странице проектов сделать пагинацию через pdoPage, и там будет 9 блоков и внизу пагинация (пока еще не сделал правда, но это вроде не сложно). =)
Или же ты имеешь ввиду про лимит кол-ва блоков которое располагается на странице? Лимит я хочу выставить 5 блоков(последних проектов которые были добавлены) на главной, а на странице проектов сделать пагинацию через pdoPage, и там будет 9 блоков и внизу пагинация (пока еще не сделал правда, но это вроде не сложно). =)
Что бы точно решение найти нужно так же точно представлять задачу. Можно выводить в разные чанки см. docs.modx.pro/components/pdotools/general-settings
&tpl_N Имя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса.
&tpl_nN Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу.
Ну и важно, какая пагинация, если ajax то чуть сложнее, т.к. может развалиться верстка с разноразмерными блоками (может развалиться, не значит что должна)
&tpl_N Имя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса.
&tpl_nN Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу.
Ну и важно, какая пагинация, если ajax то чуть сложнее, т.к. может развалиться верстка с разноразмерными блоками (может развалиться, не значит что должна)
Владимир, помогло спасибо большое!
Но теперь ситуация следующая, которую хотелось бы решить.
Сейчас на главной странице у меня расположены 4 проекта.
Каждый ресурс, в данном случает проект, имеет чанк вывода tpl.project_main, у которого используется класс col-md-3 col-sm-6, кроме 3го ресурса, ему я задал другой чанк с классом col-md-6 col-sm-12. Через &tpl_N сделал это.
Вот для наглядности сделал скрин чтобы не запутаться:
увеличить
Так вот, эти блоки теперь заведомо выстраиваются таким образом
ссылка на фото
То есть 3й блок всегда большой, так как я ему дал класс необходимый, но хочу сделать чтобы этот 3 блок превращался в такой вид только когда добавлено 5 проектов.
Как реализовать так чтобы при добавлении нового блока менялся общий вид исходя из того какой это блок по счету и сколько блоков(то есть проектов) вообще.
То есть если мы добавили первый проект, он у нас один на странице, пусть будет в пол экрана, далее добавили 2й проект, так же в пол экрана, далее 3й в треть экрана, 4й в четверть, а при добавлении пятого вид становился бы таким:
Но теперь ситуация следующая, которую хотелось бы решить.
Сейчас на главной странице у меня расположены 4 проекта.
Каждый ресурс, в данном случает проект, имеет чанк вывода tpl.project_main, у которого используется класс col-md-3 col-sm-6, кроме 3го ресурса, ему я задал другой чанк с классом col-md-6 col-sm-12. Через &tpl_N сделал это.
Вот для наглядности сделал скрин чтобы не запутаться:
увеличить
Так вот, эти блоки теперь заведомо выстраиваются таким образом
ссылка на фото
То есть 3й блок всегда большой, так как я ему дал класс необходимый, но хочу сделать чтобы этот 3 блок превращался в такой вид только когда добавлено 5 проектов.
Как реализовать так чтобы при добавлении нового блока менялся общий вид исходя из того какой это блок по счету и сколько блоков(то есть проектов) вообще.
То есть если мы добавили первый проект, он у нас один на странице, пусть будет в пол экрана, далее добавили 2й проект, так же в пол экрана, далее 3й в треть экрана, 4й в четверть, а при добавлении пятого вид становился бы таким:
Если резюмировать, то как бы реализовать так чтобы при добавлении 1 и 2 проекта, у нас использовался класс который растягивал 2 проекта по 50% каждый, при добавлении 3 проекта, использовался бы у всех 3х новый класс который растягивал бы на 33,3%, при добавлении 4 проекта, снова у всех использовался бы новый класс по 25% каждый блок, а при добавлении 5 проекта, вступал в силу &tpl_N, где мы бы для 3го ресурса задавали другой чанк с нужным классом.
есть плейсхолдер тотал (&totalVar total), в него выводится общее число результатов, есть idx (номер итерации вывода результатов), в чанке можно составить условие на феном по этим параметрам и получить нужный класс для соответствующих блоков.
Спасибо, Владимир) На словах кажется все просто, но как такое условие стряпать=(
ну давайте подумаем)
t.me/user_shadow
t.me/user_shadow
Большое спасибо Владимиру, решили проблему с помощью фенома и плейсхолдера (&totalVar total).
косок условия из чанка обертки проектов:
косок условия из чанка обертки проектов:
{if $_modx->getPlaceholder('total_1') == 2}
{set $myclass = "col-md-6 col-sm-12"}
{elseif $_modx->getPlaceholder('total_1') == 3}
{set $myclass = "col-md-4 col-sm-6"}
{elseif $_modx->getPlaceholder('total_1') == 4}
{set $myclass = "col-md-3 col-sm-6"}
{elseif $_modx->getPlaceholder('total_1') == 6}
{set $myclass = "col-md-4 col-sm-6"}
{else}
{set $myslass = "col-md-3 col-sm-6"}
{/if}
Так же для 3го проекта использовался отдельный чанк с таким условием:{if $_modx->getPlaceholder('total_1') == 4}
{set $myclass = "col-md-3 col-sm-6"}
{elseif $_modx->getPlaceholder('total_1') == 5}
{set $myclass = "col-md-6 col-sm-12"}
{elseif $_modx->getPlaceholder('total_1') == 6}
{set $myclass = "col-md-4 col-sm-6"}
{else}
{set $myclass = "col-md-4 col-sm-6"}
{/if}
А чанк вывода всех проектов где происходит непосредственно сам подресурс:[[!pdoResources?
&parents=`[[*id]]`
&depth=`0`
&tpl=`tpl.project`
&tpl_3=`tpl.p3th`
&includeTVs=`img,plan`
&processTVs=`1`
&totalVar=`total_1`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.