Configuration for default sort order
authorChristian Weiske <cweiske@cweiske.de>
Thu, 17 Nov 2016 17:21:14 +0000 (18:21 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Thu, 17 Nov 2016 17:21:14 +0000 (18:21 +0100)
data/config.php.dist
data/templates/search/sidebar.htm
src/phinde/Elasticsearch.php
www/index.php

index 9c432f948946f11139956a49213975b59dcdfe29..19a322156d89648fc19f16912f8c0fe4f0847a3e 100644 (file)
@@ -34,5 +34,7 @@ $GLOBALS['phinde'] = array(
     'showFullContent' => false,
     //search result "hit" template file
     'hitTemplate' => 'hit.htm',
+    //default sort order: "score" or "date"
+    'defaultSort' => 'score',
 );
 ?>
\ No newline at end of file
index a48b6e805664d76d25da78a84428d3f85cd88a3a..0c663ee4418c2be190d02634185b43a18728ccc9 100644 (file)
@@ -1,8 +1,8 @@
 {% if hitcount > 1 %}
  Sort by:
 <div class="btn-group">
- <a class="btn{%if sort==""%} disabled btn-primary{%endif%}" href="{{urlSortRelevance}}">Relevance</a>
- <a class="btn{%if sort=="date"%} disabled btn-primary{%endif%}" href="{{urlSortDate}}">Date</a>
+ <a class="btn{%if sort=="score"%} disabled btn-primary{%endif%}" href="{{urlSorts.score}}">Relevance</a>
+ <a class="btn{%if sort=="date"%} disabled btn-primary{%endif%}" href="{{urlSorts.date}}">Date</a>
 </div>
 <br/>
 <br/>
index 6c90480475d152a361ea0eb645dfb842265310a7..c24f6cd60b690f49baf32539d35c69d2be08071d 100644 (file)
@@ -135,6 +135,9 @@ class Elasticsearch
             )
         );
 
+        if ($sort == '' && $GLOBALS['phinde']['defaultSort'] == 'date') {
+            $sort = 'date';
+        }
         if ($sort == 'date') {
             $sortCfg = array('status.modate' => array('order' => 'desc'));
         } else {
index 8bf81479b7cd651cc77230fd93d1ed3e8fe21158..8bd900ca90f403889957547cbd223bc14c5e0efe 100644 (file)
@@ -35,11 +35,16 @@ if (preg_match('#site:([^ ]*)#', $query, $matches)) {
     $cleanQuery = $query;
 }
 
-if (isset($_GET['sort']) && $_GET['sort'] == 'date') {
-    $sort = 'date';
-    $baseLink .= '&sort=date';
+if (isset($_GET['sort'])
+    && ($_GET['sort'] === 'date' || $_GET['sort'] === 'score')
+) {
+    $sortMode = $_GET['sort'];
 } else {
-    $sort = '';
+    $sortMode = $GLOBALS['phinde']['defaultSort'];
+}
+$sort = $sortMode;
+if ($sortMode !== $GLOBALS['phinde']['defaultSort']) {
+    $baseLink .= '&sort=' . $sortMode;
 }
 
 $filters = array();
@@ -132,10 +137,17 @@ if ($site !== null) {
     $urlNoSite = null;
 }
 
-$urlSortRelevance = buildLink(
-    str_replace('&sort=date', '', $baseLink), $filters, null, null
+$urlSortBase = buildLink(
+    preg_replace('#&sort=[^&]+#', '', $baseLink), $filters, null, null
 );
-$urlSortDate = $urlSortRelevance . '&sort=date';
+$urlSorts = [];
+foreach (['date', 'score'] as $sortMode) {
+    if ($sortMode === $GLOBALS['phinde']['defaultSort']) {
+        $urlSorts[$sortMode] = $urlSortBase;
+    } else {
+        $urlSorts[$sortMode] = $urlSortBase . '&sort=' . $sortMode;
+    }
+}
 
 if (isset($_GET['format']) && $_GET['format'] == 'opensearch') {
     $template = 'opensearch';
@@ -161,8 +173,7 @@ render(
         'activeFilters' => $activeFilters,
         'pager' => $pager,
         'sort' => $sort,
-        'urlSortRelevance' => $urlSortRelevance,
-        'urlSortDate' => $urlSortDate,
+        'urlSorts' => $urlSorts,
         'hitTemplate' => 'search/' . $GLOBALS['phinde']['hitTemplate'],
     )
 );