Skip to content

Instantly share code, notes, and snippets.

@autumned
Last active August 29, 2015 13:56
Show Gist options
  • Save autumned/9139481 to your computer and use it in GitHub Desktop.
Save autumned/9139481 to your computer and use it in GitHub Desktop.
modx GroupSeperator
//Here is the snippet code:
<?php
$output = '';
$groupTag = $scriptProperties['groupTag'];
$snip = $scriptProperties['snippet'];
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($snip, $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;
//This is the snippet call:
[[!GroupSeperator? &groupTag=`div` &groupClass=`row` &group=`3` &snippet=`getPage` &...getpage properties...]]
//so i guess your snippet call should look something like this:
[[!GroupSeperator?
&groupTag=`div`
&groupClass=`row`
&group=`3`
&snippet=`getPage`
&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>`]]
// My update with class count
<?php
$output = '';
$groupTag = $scriptProperties['groupTag'];
$snip = $scriptProperties['snippet'];
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
if(!isset($groupTag)) {
$groupTag = 'ul';
}
if(isset($scriptProperties['groupClass'])) {
//$markupOpen = $groupTag.' class="'.$scriptProperties['groupClass'].'"';
$markupOpen;
$addClass = $scriptProperties['groupClass'];
function classCount($tag, $class, $id){
$newClass = $class.' '.$class.'_00'.$id;
$result = $tag.' class="'.$newClass.'"';
return $result;
}
} else {
$markupOpen = $groupTag;
}
$rows = $modx->runSnippet($snip, $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
$numItems = count($rows);
$numBlocks = 0;
foreach ($rows as $i => $row) {
$output .= $row;
if ($i == 0){
//echo '<'.$markupOpen.'>';
$numBlocks++;
echo '<'.classCount($groupTag, $addClass, $numBlocks).'>';
}
if (($i + 1) % $scriptProperties['group'] == 0 OR $numItems <= $scriptProperties['group']) {
if($i != $numItems-1) {
$numBlocks++;
$output .= "\n</".$groupTag.">\n<".classCount($groupTag, $addClass, $numBlocks)." >\n";
} else {
$output .= "\n</".$groupTag.">\n";
}
}
}
return $output;
// full fix + upgrafe for interesnoo
<?php
$output = '';
$groupTag = $scriptProperties['groupTag'];
$snip = $scriptProperties['snippet'];
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
if(!isset($groupTag)) {
$groupTag = 'ul';
}
if(isset($scriptProperties['groupClass'])) {
//$markupOpen = $groupTag.' class="'.$scriptProperties['groupClass'].'"';
$markupOpen;
$addClass = $scriptProperties['groupClass'];
function classCount($tag, $class, $id){
$newClass = $class.' '.$class.'_00'.$id;
$result = $tag.' class="'.$newClass.'"';
return $result;
}
} else {
$markupOpen = $groupTag;
}
$rows = $modx->runSnippet($snip, $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
$numItems = count($rows);
$numBlocks = 0;
$soc_block;
foreach ($rows as $i => $row) {
$output .= $row;
if ($i == 0){
//echo '<'.$markupOpen.'>';
$numBlocks++;
echo '<'.classCount($groupTag, $addClass, $numBlocks).'">';
}
if (($i + 1) % $scriptProperties['group'] == 0) {
// || ($i + 1) == $scriptProperties['mylimit'] || $numItems <= $scriptProperties['group'] || ($i + 1) == $numItems
if($i != $numItems-1) {
$numBlocks++;
if($numBlocks == 3){
$soc_block = $modx->getChunk('right_banner',$properties);
}
$output .= "\n</".$groupTag.">\n<".classCount($groupTag, $addClass, $numBlocks)." >\n".$soc_block."";
}elseif (($i + 1) == $scriptProperties['mylimit']) {
$output .= "\n</".$groupTag.">\n";
}elseif(($i + 1) == $numItems){
$output .= "\n</".$groupTag.">\n";
}else {
$output .= "\n</".$groupTag.">\n";
}
}else{
if(($i + 1) == $numItems){
$output .= "\n</".$groupTag.">\n";
}
}
}
return $output;
// UPDATED: горизонтальный вывод по датам в 3 колонки:
<?php
$output = '';
$colRowsOne = '';
$colRowsTwo = '';
$colRowsThree = '';
$soc_block = $modx->getChunk('right_banner',$properties);
$snip = $scriptProperties['snippet'];
if(!isset($scriptProperties['outputSeparator'])) {
$scriptProperties['outputSeparator'] = '||';
}
$rows = $modx->runSnippet($snip, $scriptProperties);
$rows = explode($scriptProperties['outputSeparator'],$rows);
$numItems = count($rows);
foreach ($rows as $i => $row) {
if(!$itemNum || $itemNum == 0){
$itemNum = 1;
}
if($itemNum == 1){
$colRowsOne .= $row;
}
if($itemNum == 2){
$colRowsTwo .= $row;
}
if($itemNum == 3){
$colRowsThree .= $row;
$itemNum = 0;
}
$itemNum += 1;
}
$output .= '<div class="block block_001">'.$colRowsOne.'</div>';
$output .= '<div class="block block_002">'.$colRowsTwo.'</div>';
$output .= '<div class="block block_003">'.$soc_block.''.$colRowsThree.'</div>';
return $output;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment