[[!getMyResources? &parents=`[[*parent]]`&tpl=`drawerTpl` &tvId=`##`]]
[[!getMyResources? &parents=`[[*parent]]`&tpl=`drawerTpl` &tvId=`##`]]
<?
/* getMyResources snippet */
$tv = $modx->getObject('modTemplateVar', $scriptProperties['tvId']);
if (empty($tv)) {
return 'Failed to get TV';
}
$resources = $modx->getCollection('modResource', array ('parent'=>$scriptProperties['parent']));
$output = "<ul>\n";
if ( ! empty($resources) ) {
$max = count ($resources);
$i = 1;
foreach($resources as $resource) {
$o = $modx->getChunk($scriptProperties['tpl'], $resource->toArray() );
$output .= "\n " . str_replace('[[+MyTv]]', $tv->renderOutput($resource->get('id')), $o);
if ($i%3 == 0 && $i < $max) {
$output .= "\n</ul>\n<ul>\n";
}
}
$output .= "\n</ul>\n";
} else {
return 'No Resources Found';
}
return $output;
[[groupResources? &group=`3` &groupTag=`ul` &...getResources params here... ]]
<?php
$output = '';
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
$rows = $modx->runSnippet('getResources', $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
foreach ($rows as $i => $row) {
$output .= $row;
if (($i + 1) % $scriptProperties['group'] == 0) {
$output .= "\n</".$scriptProperties['groupTag'].">\n<".$scriptProperties['groupTag'].">\n";
}
}
return $output;
[[groupResources? &group=`3` &groupTag=`ul` &parents=`[[*parent]]` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]]
<?php
$output = '';
if (!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
};
if (!isset($scriptProperties['groupTag'])) {
$scriptProperties['groupTag'] = 'li';
};
if (!isset($scriptProperties['wrapperTag'])) {
$scriptProperties['wrapperTag'] = 'ul';
};
if (!isset($scriptProperties['wrapper'])) {
$scriptProperties['wrapper'] = '1';
};
$rows = $modx->runSnippet('getResources', $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'], $rows);
if ($scriptProperties['wrapper'] == 1) {
$output .= "\n<" . $scriptProperties['wrapperTag'] . " ";
};
if (isset($scriptProperties['wrapperClass']) && $scriptProperties['wrapper'] == 1) {
$output .= "class='" . $scriptProperties['wrapperClass'] . "'";
};
if ($scriptProperties['wrapper'] == 1) {
$output .= ">";
};
if (isset($scriptProperties['groupClass'])) {
$output .= "\n<" . $scriptProperties['groupTag'] . " class='" . $scriptProperties['groupClass'] . "'>\n";
} else {
$output .= "\n<" . $scriptProperties['groupTag'] . ">\n";
};
foreach ($rows as $i => $row) {
$output .= $row;
if (($i + 1) % $scriptProperties['group'] == 0 && ($i + 1) !== count($rows)) {
if (isset($scriptProperties['groupClass'])) {
$output .= "\n</" . $scriptProperties['groupTag'] . ">\n<" . $scriptProperties['groupTag'] . " class='" . $scriptProperties['groupClass'] . "'>\n";
} else { $output .= "\n</" . $scriptProperties['groupTag'] . ">\n<" . $scriptProperties['groupTag'] . ">\n";
};
}
};
if ($scriptProperties['wrapper'] == 1) {
$output .= "\n</" . $scriptProperties['groupTag'] . ">\n</" . $scriptProperties['wrapperTag'] . ">";
} else {
$output .= "\n</" . $scriptProperties['groupTag'] . ">";
};
return $output;
[[groupResources? &group=`3` &...getResources params here... ]]
[[groupResources? &group=`3` &parents=`[[*parent]]` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]]
[[groupResources? &group=`3` &wrapperTag=`div` &wrapperClass=`slideshow` &groupTag=`div` &groupClass=`slide` &...getResources params here... ][
<div class="slideshow">
<div class="slide">
ContentA
ContentB
ContentC
</div>
<div class="slide">
ContentD
ContentE
</div>
</div>
How about this: a 'wrapper' snippet for getResources which will take all getResources parameters and respect published status, permissions, etc.
It requires two extra params, group (ie. group by every 3 resources) and groupTag (html tag to wrap with, such as ul).
Snippet code (save as groupResources):
<?php $output = ''; if(!isset($scriptProperties['outputSeparator'])) { $scriptProperties['outputSeparator'] = '||'; } $rows = $modx->runSnippet('getResources', $scriptProperties); $rows = explode($scriptProperties['outputSeparator'],$rows); foreach ($rows as $i => $row) { $output .= $row; if (($i + 1) % $scriptProperties['group'] == 0) { $output .= "\n</".$scriptProperties['groupTag'].">\n<".$scriptProperties['groupTag'].">\n"; } } return $output;
For ihallin's example the snippet call would be:
[[groupResources? &group=`3` &groupTag=`ul` &parents=`[[*parent]]` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]]
<?php
$output = '';
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
$rows = $modx->runSnippet('getResources', $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
for ($i=$startPos; $i <= count($rows); $i+=$increaseBy){
if ($i == count($rows)){
break;
}
$output .= $rows[$i];
}
return $output;
<div class="col1"> [[splitGetResources? &increaseBy=`3` &startPos=`0` &sortby=`menuindex` &sortdir=`ASC` &parents=`2` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]] </div> <div class="col2"> [[splitGetResources? &increaseBy=`3` &startPos=`1` &sortby=`menuindex` &sortdir=`ASC` &parents=`2` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]] </div> <div class="col1"> [[splitGetResources? &increaseBy=`3` &startPos=`2` &sortby=`menuindex` &sortdir=`ASC` &parents=`2` &tpl=`columnTpl` &includeTVs=`1` &processTVs=`1` &tvPrefix=`` &limit=`0` ]] </div>
[[columns? &sortby=`menuindex` &cols=`3` &offset=`2` &sortdir=`ASC` &parents=`2` &tpl=`drawerTpl` &includeTVs=`1` &processTVs=`1` &limit=`0` ]]
<?php
$output = '';
$startPos = 0;
$increaseBy = $cols;
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
$rows = $modx->runSnippet('getResources', $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
//Create a column div with the correct class for each column
for ($column=1; $column <= $cols; $column++) {
$output .= "<div class=\"col".$column."\">";
//output the resources for each column
for ($i=$startPos; $i <= count($rows); $i+=$increaseBy){
$output .= $rows[$i];
}
$startPos++;
$output .= "</div>";
}
return $output;
<?php
$output = '';
$groupTag = $scriptProperties['groupTag'];
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
if(!isset($groupTag)) {
$groupTag = 'ul';
}
if(isset($scriptProperties['groupClass'])) {
$markupOpen = $groupTag.' class="'.$scriptProperties['groupClass'].'"';
} else {
$markupOpen = $groupTag;
}
$rows = $modx->runSnippet('getResources', $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
$numItems = count($rows);
foreach ($rows as $i => $row) {
$output .= $row;
if ($i == 0){
echo '<'.$markupOpen.'>';
}
if (($i + 1) % $scriptProperties['group'] == 0) {
if($i != $numItems-1) {
$output .= "\n</".$groupTag.">\n<".$markupOpen.">\n";
} else {
$output .= "\n</".$groupTag.">\n";
}
}
}
return $output;[[getPage@resourcePaging? &elementClass=`modSnippet` &element=`getResources` &parents=`[[*id]]` &limit=`32` &sortby=`RAND()` &includeContent=`0` &includeTVs=`1` &showHidden=`1` &hideContainers=`1` &tpl=`shopRowTpl` ]] [[!+page.nav:notempty=`<div class="paging"><div class="page-list">[[!+page.nav]]</div></div>`]]