*

Offline Jo

  • *****
  • 222
  • Geschlecht: Männlich
    • JoLichter.de
pdoTools
« am: 10. Januar 2015, 21:05:45 »
pdoTools kann folgende Extras für MODX REVOLUTION ersetzen:
  • pdoResources - schneller Ersatz für getResources
  • pdoCrumbs - schneller Ersatz für Breadcrumb(s)
  • pdoField - schneller Ersatz für getResourceField und UltimateParent
  • pdoPage - schneller Ersatz für getPage
  • pdoMenu - schneller Ersatz für Wayfinder
siehe auch docs-pdoTools (englisch)


pdoToos hat mehr Funktionen und ist eine schnellere Alternative zu den anderen Snippets. Daher ist die Syntax nicht immer gleich.

Ein Grund für die Geschwindigkeit ist z.B. dass der Parameter "includeTVs" in pdoResources kein einfacher Schalter (boolean) ist um die TV-Abfrage zu aktivieren. Hier gebt ihr die gewünschten TVs an, z.B.: "includeTVs=`tvClass,tvPfad,tvDatum`" - es werden also nur geziehlt TVs abgefragt!

Hier ein paar Anwendungsbeispiele:

Brotkrümel
[[!pdoCrumbs?
  &context=`web5`
  &depth=`2`
  &showHome=`1`
  &showAtHome=`0`
  &showContainer=`1`
  &tplWrapper=`@INLINE <ul class="breadcrumb">[[+output]]</ul>`
  &tplCurrent=`@INLINE <li>[[+menutitle]]</li>`
  &tpl=`@INLINE <li><a href="[[+link]]">[[+menutitle]]</a></li>`
  &outputSeparator=``
]]

Navigationsmenü
[[!pdoMenu?
  &context=`web5`
  &parents=`0`
  &level=`2`
  &tpl=`tplBS3.WF.row`
  &tplOuter=`@INLINE [[+wf.wrapper]]`
  &tplParentRow=`tplBS3.WF.row.parent`
  &tplInnerRow=`tplBS3.WF.row.inner`
]]

Navigationsmenü mit der Anzahl der Kinder
[[pdoMenu?
    &context=`web5`
    &parents=`0`
    &level=`2`
    &countChildren=`1`
    &tplInner=`@INLINE [[+wrapper]]`
    &tplParentRow=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]`
]]

Inhalte aus den Kindressourcen
[[!pdoResources?
   &context=`web3`
   &parents=`[[*id]]`
   &tpl=`tplBS3-2Column`
   &limit=`0`
   &idx=`0`
   &includeContent=`1`
   &showUnpublished=`0`
   &includeTVs=`tvGaleriePfad`
   &sortby=`menuindex`
   &sortdir=`asc`
]]

Info zur Eigenschaft &idx=`0`:
Bei pdoTools 1.9.7-pl scheint das Festlegen einer Start-IDX nicht zu funktionieren. Bei mir startet diese immer mit einer 1 (bei getResources funktioniert es). Scheint ein Bug zu sein? Habe das derzeit im entsprechenden Template mit einem Output Filter so gelöst:
[[+idx:add=`-1`]]


Wayfinder mit UltimateParent
[[!Wayfinder?
  &contexts=`web2`
  &startId=`[[UltimateParent? &topLevel=`1`]]`
  &level=`1`
  &rowTpl=`tplBS.WF.row`
  &outerTpl=`tplBS.WF.outer`
  &parentRowTpl=`tplBS.WF.row.parent`
  &innerRowTpl=`tplBS.WF.row.inner`
]]

dasselbe mit pdoMenu und pdoField
[[!pdoMenu?
  &context=`web2`
  &parents=`[[*id:pdoField=`{"topLevel":1,"field":"id"}`]]`
  &level=`1`
  &tpl=`tplBS.WF.row`
  &tplOuter=`tplBS.WF.outer`
  &tplParentRow=`tplBS.WF.row.parent`
  &tplInnerRow=`tplBS.WF.row.inner`
]]

oder
[[!Wayfinder? &contexts=`web` &level=`1` &startId=`[[UltimateParent]]` &rowTpl=`wfRow` &hereTpl=`wfHere` &rowIdPrefix=`menu`]]mit dem pdoMenu
[[!pdoMenu? &context=`web` &parents=`[[*id:pdoField=`{"topLevel":1,"field":"id"}`]]` &level=`1` &tpl=`wfRow` &tplHere=`wfHere` &rowIdPrefix=`menu`]]



getResources Bootstrap3 - Spaltentext aus den Childs parsen
[[*id:is=`42`:then=`
[[!getResources:default=``?
   &context=`web2`
   &parents=`[[*id]]`
   &tpl=`web2tplGrid`
   &limit=`0`
   &depth=`0`
   &includeContent=`1`
   &showHidden=`1`
   &showUnpublished=`0`
   &showHidden=`1`
   &sortby=`menuindex`
   &sortdir=`asc`
]]`:else=``]]

dasselbe mit pdoResources
[[*id:is=`42`:then=`
[[!pdoResources:default=``?
   &context=`web2`
   &parents=`[[*id]]`
   &tpl=`web2tplGrid`
   &limit=`0`
   &depth=`0`
   &includeContent=`1`
   &showHidden=`1`
   &showUnpublished=`0`
   &sortby=`menuindex`
   &sortdir=`asc`
]]`:else=``]]
(showHidden ist bei pdoResources 1 vorgegeben)

web2tplGrid (Beispiel)
<div class="grid-item col-md-6">
[[+tv.Seitentitel:is=`ja`:then=`<h4>[[+longtitle:default=`[[+pagetitle]]`]]</h4>`:else=``]]
[[+introtext:notempty=`<span class="pull-right [[+introtext]]"></span>`]]
[[+content]]
</div>

getResources für aktuelle Events (mit tvFilters nach Datum Filtern)
[[!getResources:default=`Keine Events vorhanden`?
    &context=`web`
    &parents=`62`
    &tpl=`tplEvents`
    &limit=`20`
    &sortbyTV=`tvEventDateEnd`
    &sortdirTV=`asc`
    &sortby=``
    &includeContent=`1`
    &tvFilters=`tvEventDateEnd>=[[!getStrftime? &format=`%Y-%m-%d %H:%M`]]`
]]

dasselbe mit pdoResources
[[!pdoResources:default=`Keine Events vorhanden`?
    &context=`web`
    &parents=`62`
    &depth=`0`
    &tpl=`tplEvents`
    &limit=`20`
    &includeContent=`1`
    &showUnpublished=`0`
    &includeTVs=`tvEventDateEnd`
    &sortby=`tvEventDateEnd`
    &sortdir=`asc`
    &tvFilters=`tvEventDateEnd>=[[!getStrftime? &format=`%Y-%m-%d %H:%M`]]`
]]

getResources für eine One-Page Seite (alle Parent Ressourcen auf einer Seite zeigen)
[[getResources?
  &context=`web6`
  &parents=`0`
  &limit=`0`
  &depth=`0`
  &sortby=`menuindex`
  &sortdir=`asc`
  &includeTVs=`1`
  &processTVs=`1`
  &includeContent=`1`
  &tpl=`web6tplContent`]]

dasselbe mit pdoResources für eine One-Page Seite
[[pdoResources?
    &context=`web6`
    &parents=`0`
    &resources=`[[pdoMenu:striptags? &context=`web6` &parents=`0` &level=`0` &tpl=`@INLINE [[+id]]`]]`
    &depth=`0`
    &limit=`0`
    &tpl=`web6tplContent`
    &includeContent=`1`
    &showUnpublished=`0`
    &includeTVs=`tvClass,tvClassCol,tvGaleriePfad`
    &sortby=`menuindex`
    &sortdir=`asc`
]]
Hier muss auch der Parameter &resources angegeben werden, z.B.:
&resources=`351,367,350,349,358,365,370,352`

Ich Liste alle Ressourcen IDs dynamisch mit dem pdoMenu auf  :wink:



getResources Pagination mit getPage
[[!getPage:default=`Keine Events vorhanden`?
   &context=`web7`
   &element=`getResources`
   &elementClass=`modSnippet`
   &parents=`[[*id]]`
   &depth=`0`
   &limit=`5`
   &tpl=`tplEvents`
   &pageVarKey=`page`
   &pageFirstTpl=`<li class="control"><a[[+classes]][[+title]] href="[[+href]]">Erste</a></li>`
   &pageLastTpl=`<li class="control"><a[[+classes]][[+title]] href="[[+href]]">Letzte</a></li>`
   &dateFormat=`%Y-%m-%d`
   &includeContent=`1`
   &showHidden=`0`
   &includeTVs=`1`
   &sortbyTV=`tvEventDateEnd`
   &sortdirTV=`asc`
   &sortby=``
   &tvFilters=`tvEventDateEnd>=[[!getStrftime? &format=`%Y-%m-%d %H:%M`]]`
]]
</div>

[[!+page.nav:notempty=`
<div class="paging">
<ul class="pageList">
[[!+page.nav]]
</ul>
</div>
`]]

dasselbe mit pdoResources und pdoPage
[[!pdoPage:default=`Keine Events vorhanden`?
    &context=`web7`
    &element=`pdoResources`
    &parents=`[[*id]]`
    &depth=`0`
    &limit=`5`
    &tpl=`tplEvents`
    &pageLimit=`100`
    &includeContent=`1`
    &showUnpublished=`0`
    &includeTVs=`tvEventDateEnd`
    &sortby=`tvEventDateEnd`
    &sortdir=`asc`
    &tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>`
    &tplPageWrapper=`@INLINE <div class="pagination"><ul class="pageList">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>`
]]

[[!+page.nav]]
(habe hier meine eigene ul-Klasse "pageList" eingetragen)



Parent Title Anzeigen

[[getResourceField? &id=`[[UltimateParent]]` &field=`menutitle`]]dasselbe mit pdoField
[[*id:pdoField=`{"topLevel":1,"field":"menutitle"}`]]oder
[[!pdoField? &id=`[[*id]]` &field=`pagetitle` &top=`1`]]
Wenn Parent ID 42 ist, dann tu das
[[*id:pdoField=`{"topLevel":1,"field":"id"}`:is=`42`:then=`
tu das
`:else=`
sonst tu das
`]]


PS: Datum in einem Template von pdoResources ausgeben, z.B.
[[+publishedon:date=`%Y-%m-%d`]]anstatt wie bei getResources
[[+publishedon:strtotime:date=`%Y-%m-%d`]]
« Letzte Änderung: 15. April 2019, 23:26:28 von Jo »