ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
mod_feature_search: Meta-Wert in Sortierfeld eingeben?

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Kleine und neue Module
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 21.10.2017 19:02    Titel: mod_feature_search: Meta-Wert in Sortierfeld eingeben? Antworten mit Zitat

Hallo zusammen,

ich habe eine Frage zu der Sortierreihenfolge bei mod_feature_search.

In der Anleitung steht:
Zitat:

Zu sortierendes Feld

bestimmt, nach welchem Feld (Meta-Werte oder Platzhalter) die Sortierung der Ergenisse erfolgt.
Die frühere direkte Angabe im Suchformular wird aus Sicherheitsgründen nicht mehr unterstützt!


Ich möchte gerne die Sortierung auf Basis des Artikel-Titels ausgeben lassen, allerdings klappt das nicht...
Wie kann ich den Meta-Wert 'title' korrekt angeben?

Ich habe es mit 'title' versucht und auch mit 'Titel' aber beides geht nicht.
Bei einem Platzhalter ist es kein Problem, nur die Angabe eines Meta-Wertes für die Sortierung würde mich interessieren.


Grüße,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 21.10.2017 19:06    Titel: Antworten mit Zitat

Jetzt habe ich es gerade mit 'titel' anstelle von 'Titel' versucht und siehe da, es klappt!
Ist zwar für meine Begriffe nicht ganz logisch aber immerhin, es funktioniert!
Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6983

BeitragVerfasst am: 21.10.2017 19:28    Titel: Antworten mit Zitat

In der Datenbank heißt das Feld eben "titel".
Ich habe diese Mischung aus kleingeschriebenen deutschen Begriffen (verfallsdatum) und englischen Begriffen (last_modify) auch nie verstanden...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 21.10.2017 19:53    Titel: Antworten mit Zitat

Hätte bei den Meta-Werten auch eher englische Bezeichnungen erwartet...
Na ja, Hauptsache es funktioniert.

Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 22.10.2017 10:41    Titel: Antworten mit Zitat

Ich hätte doch noch eine Frage zur Sortierung:

Ich habe mod_feature_search als Rubrikverzeichnis angelegt.
Die Sortierung erfolgt alphabetisch.
Wenn ich die Rubrik (also ohne eine Suche gestartet zu haben) anschaue, also alle Artikel angezeigt werden, wird alles wie gewünscht angezeigt.

Starte ich eine Suchanfrage, werden die Ergebnisse etwas anders angezeigt.
Zwar auch alphabetisch, dann aber zuerst nach Großbuchstaben sortiert und dann erst die Kleinbuchstaben. Es stehen also Einträge die mit Z beginnen vor Einträgen, die mit a beginnen.

Kann man die Suchergebnisse nach der gleichen Sortierung wie die Rubrik ausgeben lassen? Also in der Reihenfolge a A b B c C usw. ?

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6983

BeitragVerfasst am: 22.10.2017 11:04    Titel: Antworten mit Zitat

Hm...

Du könntest folgendes probieren:
in includes/inc_search_function.inc.php

Code:
if (!function_exists('SortArray')) {
   function SortArray() {            // http://www.php.net/manual/de/function.usort.php#42535
       $arguments = func_get_args();
       $array = $arguments[0];
      if (is_array($arguments[1]))  {   // mehrere Sortierkriterien in einem Array
         $multi_arg = $arguments[1];
         for ($a=0;$a<count($multi_arg);$a++)  {
            $arguments[$a+1] = $multi_arg[$a];
         }
      }
       $code = '';
       for ($c = 1; $c < count($arguments); $c += 2) {
           if (in_array($arguments[$c + 1], array("ASC", "DESC"))) {
               $code .= 'if ($a["'.$arguments[$c].'"] != $b["'.$arguments[$c].'"]) {';
               if ($arguments[$c + 1] == "ASC") {
                   $code .= 'return ($a["'.$arguments[$c].'"] < $b["'.$arguments[$c].'"] ? -1 : 1); }';
               }
               else {
                   $code .= 'return ($a["'.$arguments[$c].'"] < $b["'.$arguments[$c].'"] ? 1 : -1); }';
               }
           }
       }
       $code .= 'return 0;';
       $compare = create_function('$a,$b', $code);
       usort($array, $compare);
       return $array;
   }
}


ändern zu

Code:

if (!function_exists('SortArray')) {
   function SortArray() {            // http://www.php.net/manual/de/function.usort.php#42535
       $arguments = func_get_args();
       $array = $arguments[0];
      if (is_array($arguments[1]))  {   // mehrere Sortierkriterien in einem Array
         $multi_arg = $arguments[1];
         for ($a=0;$a<count($multi_arg);$a++)  {
            $arguments[$a+1] = $multi_arg[$a];
         }
      }
       $code = '';
       for ($c = 1; $c < count($arguments); $c += 2) {
           if (in_array($arguments[$c + 1], array("ASC", "DESC"))) {
               $code .= 'if ($a["'.$arguments[$c].'"] != $b["'.$arguments[$c].'"]) {';
               if ($arguments[$c + 1] == "ASC") {
                   $code .= 'return (strtolower($a["'.$arguments[$c].'"]) < strtolower($b["'.$arguments[$c].'"]) ? -1 : 1); }';
               }
               else {
                   $code .= 'return (strtolower($a["'.$arguments[$c].'"]) < strtolower($b["'.$arguments[$c].'"]) ? 1 : -1); }';
               }
           }
       }
       $code .= 'return 0;';
       $compare = create_function('$a,$b', $code);
       usort($array, $compare);
       return $array;
   }
}


ungetestet auf eigene Gefahr!

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 22.10.2017 11:17    Titel: Antworten mit Zitat

Hallo Markus,

danke, werde ich ausprobieren!

'Auf eigene Gefahr' bedeutet, im schlimmsten Fall zur alten Version zurückkehren oder könnte mir das theoretisch auch die Datenbank zerschießen? Shocked

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6983

BeitragVerfasst am: 22.10.2017 11:30    Titel: Antworten mit Zitat

Entweder es bringt nichts oder es gibt keine Ergebnisse mehr.
Ist nur eine Sortierung, damit geht nichts kaputt.

Bei negativem Ergebnis einfach das Original wiederherstellen.
(ich lasse für solche Tests die Datei im Editor offen und kann bei Fehlschlägen einfach auf "Rückgängig" klicken und dann die Datei erneut hochladen)

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 22.10.2017 12:28    Titel: Antworten mit Zitat

Alles klar, danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 22.10.2017 12:37    Titel: Antworten mit Zitat

Habe ich eben ausprobiert. Funktioniert auch schon ganz gut (besser als es war) aber ist eben noch nicht die gleiche Sortierung wie bei der Rubrik selbst. Jetzt wird kein Unterschied mehr zwischen Groß- und Kleinschreibung gemacht.

Finde ich an sich auch nicht schlimm, es wäre nur schön wenn beides auf die gleiche Art sortiert werden würde...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6983

BeitragVerfasst am: 22.10.2017 12:41    Titel: Antworten mit Zitat

Sind aber eben zwei völlig verschiedene Schuhe.
Das eine ist die Sortierung in der mySQL-Datenbank mittels SORT BY.
Das andere ist eine Sortierung in einem mehrdimensionalen Array nach einem beliebigen Wert, was es nicht mal als native PHP-Funktion gibt.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 512

BeitragVerfasst am: 22.10.2017 12:47    Titel: Antworten mit Zitat

Ok.
Vielleicht kann ich es so umbauen, dass der Seitenaufruf schon als Suchanfrage ausgeführt wird. Dann käme die erste Liste auch schon aus der Suche und alles wäre gleich.

Muss dann nur nach etwas suchen lassen, was in allen Artikeln vorkommt. Leider steht die Suchanfrage dann auch schon in der Suchmaske, was etwas unschön ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Kleine und neue Module Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen