1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-11 17:24:46 +02:00

Add support for sorting by page path or URL to PageFinder (requires PagePaths module be installed)

This commit is contained in:
Ryan Cramer
2023-07-10 13:39:20 -04:00
parent 206cd8c280
commit a53e809fc4

View File

@@ -2413,6 +2413,24 @@ class PageFinder extends Wire {
} else {
$value = "pages." . $database->escapeCol($value);
}
} else if(($value === 'path' || $value === 'url') && $this->wire()->modules->isInstalled('PagePaths')) {
static $pathN = 0;
$pathN++;
$pathsTable = "_sort_pages_paths$pathN";
if($language && !$language->isDefault() && $this->supportsLanguagePageNames()) {
$query->leftjoin("pages_paths AS $pathsTable ON $pathsTable.pages_id=pages.id AND $pathsTable.language_id=0");
$lid = (int) $language->id;
$asc = $descending ? 'DESC' : 'ASC';
$pathsLangTable = $pathsTable . "_$lid";
$s = "pages_paths AS $pathsLangTable ON $pathsLangTable.pages_id=pages.id AND $pathsLangTable.language_id=$lid";
$query->leftjoin($s);
$query->orderby("if($pathsLangTable.pages_id IS NULL, $pathsTable.path, $pathsLangTable.path) $asc");
$value = false;
} else {
$query->leftjoin("pages_paths AS $pathsTable ON $pathsTable.pages_id=pages.id");
$value = "$pathsTable.path";
}
} else {
// sort by custom field, or parent w/custom field
@@ -3696,4 +3714,3 @@ class PageFinder extends Wire {
* @property PageFinder $pageFinder PageFinder instance that initiated the query
*/
abstract class PageFinderDatabaseQuerySelect extends DatabaseQuerySelect { }