diff --git a/_build/properties/properties.getpage.php b/_build/properties/properties.getpage.php index 2695283..987a00c 100644 --- a/_build/properties/properties.getpage.php +++ b/_build/properties/properties.getpage.php @@ -150,7 +150,25 @@ 'type' => 'textfield', 'options' => '', 'value' => '', + ),array( + 'name' => 'pathUrlSeparator', + 'desc' => 'If you use "path" as pageNavScheme this sets the separator between the resources URI and the pagination path.', + 'type' => 'textfield', + 'options' => '', + 'value' => '/', + ),array( + 'name' => 'pathNumberSeparator', + 'desc' => 'Separator between pageVarKey and page number if you use "path" as pageNavScheme.', + 'type' => 'textfield', + 'options' => '', + 'value' => '-', + ),array( + 'name' => 'pathHidePageVarKey', + 'desc' => 'Optionally hide the pageVarKey from the pagination path', + 'type' => 'combo-boolean', + 'options' => '', + 'value' => false, ) ); -return $properties; \ No newline at end of file +return $properties; diff --git a/core/components/getpage/include.getpage.php b/core/components/getpage/include.getpage.php index 7280a48..830a299 100644 --- a/core/components/getpage/include.getpage.php +++ b/core/components/getpage/include.getpage.php @@ -39,13 +39,30 @@ function getpage_buildControls(& $modx, $properties) { function getpage_makeUrl(& $modx, $properties, $pageNo, $tpl) { $qs = $properties['qs']; - if ($pageNo === 1) { + $scheme = !empty($properties['pageNavScheme']) ? $properties['pageNavScheme'] : $modx->getOption('link_tag_scheme', $properties, -1); + + if ($properties['pageNavScheme'] === 'path') { + unset($qs[$properties['pageVarKey']]); + $properties['href'] = $modx->makeUrl($modx->resource->get('id'), '', '', $modx->getOption('link_tag_scheme', $properties, -1)); + if ($pageNo !== 1) { + $properties['href'] = rtrim($properties['href'], '/').$properties['pathUrlSeparator']; + if (!$properties['pathHidePageVarKey']) $properties['href'] .= $properties['pageVarKey'].$properties['pathNumberSeparator']; + $properties['href'] .= $pageNo; + } + if (!empty($qs)) $properties['href'] .= '?'. http_build_query($qs); + } else { - $qs[$properties['pageVarKey']] = $pageNo; + + if ($pageNo === 1) { + unset($qs[$properties['pageVarKey']]); + } else { + $qs[$properties['pageVarKey']] = $pageNo; + } + $properties['href'] = $modx->makeUrl($modx->resource->get('id'), '', $qs, $scheme); + } - $scheme = !empty($properties['pageNavScheme']) ? $properties['pageNavScheme'] : $modx->getOption('link_tag_scheme', $properties, -1); - $properties['href'] = $modx->makeUrl($modx->resource->get('id'), '', $qs, $scheme); + $properties['pageNo'] = $pageNo; $nav= $modx->newObject('modChunk')->process($properties, $tpl); return $nav; diff --git a/core/components/getpage/snippet.getpage.php b/core/components/getpage/snippet.getpage.php index 8fbff5a..f4efcc7 100644 --- a/core/components/getpage/snippet.getpage.php +++ b/core/components/getpage/snippet.getpage.php @@ -29,6 +29,9 @@ $properties['pageLastTpl'] = !isset($pageLastTpl) ? "