Всем привет! Тут на днях столкнулся с проблемой: есть сайт (motorespect.com), в нем 2 раздела: новости и статьи, оба организованы в формате блога с помощью сниппета articles. Появилась задача: нужно в каждой статье и в каждой новости, после основного контента, поставить ссылки, типа — «предыдущая новость» «следующая новость». Я 2 дня рыл modx и гугл, толку ноль! Так понимаю, что у articles нет встроенного плейсхолдера для этой задачи… хотел наваять простенький сниппет, который будет возвращать ссылку по ID текущей страницы +, — 1, да вот незадача: все ресурсы от articles упрятаны в один контейнер, у каждого есть свой ID, но идентификаторы присваиваются статьям/новостям по времени их добавления! То есть, если последняя добавл.новость имеет id = 300, а статья — 295, то — если добавляем статью — ей присваивается id=301, а не 296… получается, что все ресурсы articles валятся в общую кучу, но в каждой из них есть своя метка принадлежности своему контейнеру… я так это понял! К сожалению, pdotools не годится для этой задачи: проблема с настройкой сервера хостинга… Пытался с помощью getResurces вывести — указав родительский контейнер, не могу сообразить как поставить сортировку (или фильтр), чтобы выводил соседние ресурсы… Друзья, подскажите, в какую сторону глядеть??? Я в MODx новичок, система очччень нравится, огромное желание её освоить! Пока, к сожалению, пытаюсь набираться опыта у более взрослых коллег… С уважением, Алексей.
Воспользуйся плагином siblingNav:
1
&limit=1
&sortBy={"publishedon":"ASC"}
]]
[[+sn.first]][[+sn.prev]][[+sn.prevlinks]][[+sn.self]][[+sn.nextlinks]][[+sn.next]][[+sn.last]] Если сортировка неправильная, то вместо ASC ставь DESC.
Получится такой вид, как на картинке:
http://nimb.ws/duswvQ
Это поможет тебе убедиться, что все работаетsiblings.RowTpl
&selfTpl=siblings.SelfTpl
&prevTpl=siblings.PrevTpl
&nextTpl=siblings.nextTpl
&firstTpl=siblings.firstTpl
&lastTpl=siblings.lastTpl
4) Cоздай чанки с соответствующими именами(siblings.RowTpl, siblings.PrevTpl, и т.д.). Что туда писать можно подсмотреть в тех чанках, что идут по умолчанию (они лежат в папке /core/components/siblingnav/elements/chunks).
Например в siblings.nextTpl: <li>
[[+_isactive:is=1
:then=<a class="btn next" href="[[~[[+id]]]]">Следущая »</a>
:else=''
]]Забыл еще параметр parents. Если я правильно понял, то ты хочешь, чтобы новости и статьи были одной коллекцией? Тогда указывай в параметрах parents=10,12
, где 10 b 12 это id контейнеров «Новости» и «Статьи»
Андрей, спасибо огромное за развернутый ответ! Да, воспользовался этим замечательным сниппетом! Немного пришлось помучаться с направлением сортировки — по замыслу, две предыдущие новости должны выводиться так: более новая выше, а вторая, которая ниже, более древняя! Подумал и разобрался… сейчас все в ажуре!) Ещё раз — благодарю…
Вот сам вызов сниппета: <ul>
[[!siblingNav?
&showHidden=1
&prevTpl=snprevtpl
&limit=2
&nextTpl=snnexttpl
&selfTpl=snselftpl
]]
[[+sn.next]][[+sn.self]][[+sn.prevlinks]]
А я ж в первой инструкции писал про сортировку — если порядок неправильный, просто DESC вместо ASC.
Да, я помню! Как и писал уже — после перенаправления сортировки пришлось менять местами плейсхолдеры вывода предыдущих и последующих новостей…
Это потому что у тебя сортировка по menuindex, а я писал о publishedon. menuindex — это позиция ресурса в контейнере в дереве ресурсов слева. Articles скрывает элементы в дереве, отображая их вместо этого в таблице. Статьи у тебя идут в том же порядке, что и в этой таблице — это хорошо. Но, если ты добавишь статью с датой публикации, например прошлым годом, то она будет все равно отображаться первой, с articles ты лишаешься возможности перетаскивать ресурсы и управлять значением menuindex. Используя publishedon, ты можешь поменять дату публикации, открыв и отредактировав статью и передвинуть ее на сайте в прошлое, c menuindex — нет.