mod_feature_search: Meta-Wert in Sortierfeld eingeben?

Diskussion zu nicht so umfangreichen Modulen und Start-Up für neue Module. Ansonsten bitte die speziellen Kategorien benutzen!
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

mod_feature_search: Meta-Wert in Sortierfeld eingeben?

Beitrag von dutch »

Hallo zusammen,

ich habe eine Frage zu der Sortierreihenfolge bei mod_feature_search.

In der Anleitung steht:

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
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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!
;)
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

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

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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

8)
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

Hm...

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

Code: Alles auswählen

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: Alles auswählen

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

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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? :shock:

Gruß,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

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

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Alles klar, danke!
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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...
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

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

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

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.