Skip to content

Instantly share code, notes, and snippets.

@naokazuterada
Last active December 11, 2015 05:58
Show Gist options
  • Save naokazuterada/4555447 to your computer and use it in GitHub Desktop.
Save naokazuterada/4555447 to your computer and use it in GitHub Desktop.
<?php
// MODX revo "PageBreaking" snnipet for output filter
// SnnipetName : pageBreak
// Usage : [[content:pageBreak]]
if ($input == '') return '';
$var_name = 'p';
$delimiter = '{pagebreak}';
$tplLinkNext = '<a href="[+link+]" class="next">&gt;</a>';
$tplLinkNextNL = '<span class="next">&gt;</span>';
$tplLinkPrev = '<a href="[+link+]" class="prev">&lt;</a>';
$tplLinkPrevNL = '<span class="prev">&lt;</span>';
$tplLinkNav = '<div class="pb_nav">[+linkprev+][+pagelinks+][+linknext+]</div>';
$pip_content = $input;
// This snnipet is for output filter, so read input above.
// Uncomment below if you want to use this code as a normal call snnipet.
// $pip_content = $modx->resource->get('content');
$pip_pagecontent = preg_split('/(<([\w]+)[^>]*>|[\s\n]|)*'.$delimiter.'(<\/([\w]+)[^>]*>|[\s\n]|)*/i',$pip_content); // Ignore HTMLtags before and after delimiter.
$pip_pagecount = count($pip_pagecontent);
if ($pip_pagecount > 1){
$pip_currentpage = isset($_GET[$var_name]) ? $_GET[$var_name]: 1;
if ($pip_currentpage > $pip_pagecount || $pip_currentpage < 1) { $pip_currentpage = 1; }
$config = $modx->getConfig();
$char = ($config['friendly_urls'] == 0) ? "&" : "?";
$url = $modx->makeUrl($modx->resource->get('id'),'',$char.$var_name.'=','full');
$prevpage = $pip_currentpage-1;
$nextpage = $pip_currentpage+1;
$linkprev = ($prevpage>0) ? str_replace("[+link+]",$url.$prevpage,$tplLinkPrev) : $tplLinkPrevNL;
$linknext = ($nextpage>$pip_pagecount) ? $tplLinkNextNL : str_replace("[+link+]",$url.$nextpage,$tplLinkNext);
$pagelinks='';
for($i=1;$i<=$pip_pagecount;$i++){
if($i==$pip_currentpage) $pagelinks.='<span class="num current">'.$i.'</span>';
else $pagelinks.='<a class="num" href="'.$url.$i.'">'.$i.'</a>';
}
$pip_template = str_replace("[+linkprev+]",$linkprev,$tplLinkNav);
$pip_template = str_replace("[+linknext+]",$linknext,$pip_template);
$pip_template = str_replace("[+total+]",$pip_pagecount,$pip_template);
$pip_template = str_replace("[+current+]",$pip_currentpage,$pip_template);
$pip_template = str_replace("[+pagelinks+]",$pagelinks,$pip_template);
$pip_content=$pip_template.$pip_pagecontent[$pip_currentpage-1].$pip_template;
}
return $pip_content;
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment