Jump to content
xt:Commerce Community Forum

Sortierung Nach...


YesIT

Recommended Posts

Hallo und Guten Tag

Ich m?chte, dass der User nach frei w?hlbaren kriterien sortieren k?nnen sollte..

Bspw. beim Produkt Listing nach Lieferstatus oder Preis..

Hat jemand schon eine entsprechendes Modul im geschrieben, wo man ein wenig abschreiben kannn?

Viele Gr??e

Link to comment
Share on other sites

:dafuer:

w?rde mich auch interessieren (und wahrscheinlich mehrere user, die keine php-profis sind :D )

der kunde soll sich z.b. nach preis, erzeugungs- oder ver?ffentlichungsdatum oder sonst neu definierbare kriterien sortiert auflisten lassen k?nnen.

sch?ne gr??e

leo

Link to comment
Share on other sites

  • 5 months later...

Da offenbar dieses Problem noch nicht gel?st wurde, und auch in der aktuellen Shop-Version (v3.03 habe ich hier) nicht integriert ist (hab's zumindest nicht gefunden...), hab ich mich mal rangesetzt und da ne schnelle L?sung programmiert. :rolleyes:

Die Sortierung erfolgt damit hierbei mit 2 zus?tzlichen Parametern sort und sort2.

/shop/includes/modules/default.php

nach der Zeile if (!$sorting_data['products_sorting']) $sorting_data['products_sorting']='pd.products_name'; einf?gen:

(kommt 3x vor: ca. Zeile 190, 275 und 320)


if (isset($_GET["sort"])) $sorting_data['products_sorting']=substr($_GET["sort"], 0, 20);

if (isset($_GET["sort2"])) $sorting_data['products_sorting2']=substr($_GET["sort2"], 0, 4);

Die Parameter werden nach 20 bzw. 4 Zeichen abgeschnitten, um zu verhindern dass "b?sartiger" SQL-Code als Parameter ?bergeben und in den SQL eingef?gt wird. Wei? nicht, ob das die beste L?sung ist, vielleicht findet jmd. eine kompakte, bessere L?sung. <templateverzeichnis>/module/product_listing/product_listing_v1.html Dieser Code erstellt 2 Comboboxen mit Feld und Reihenfolge und einen Knopf zum abschicken. Feldnamen k?nnen nat?rlich noch erweitert werden, m?sst ihr in der DB gucken, welche vorhanden sind.

<form><table border="0" >

 <tr>

  <td>Sortierung nach:</td>

  <td><select name="sort">

     <option value="products_name" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_name") ? "selected" : ""; {/php}>Produktname</option>

     <option value="products_price" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_price") ? "selected" : ""; {/php}>Preis</option>

    </select></td>

  <td>Reihenfolge:</td>

  <td><select name="sort2">

 	<option value="desc" {php} echo (isset($_GET["sort2"]) && $_GET["sort2"]=="desc") ? "selected" : ""; {/php}>absteigend</option>

 	<option value="asc" {php} echo (isset($_GET["sort2"]) && $_GET["sort2"]=="asc") ? "selected" : ""; {/php}>aufsteigend</option>

    </select></td>

  <td><input type="button" value="Go" onClick="location.href='index.php?cPath={php} echo $_GET["cPath"]; {/php}&sort='+this.form.sort.value+'&sort2='+this.form.sort2.value;"></td>

 </tr>

</table>

</form>

Man kann z.B. auch in der product_listing_v1.html (wenn tabellerisch aufgebaut) Spalten?berschriften mit Links versehen und hier die Sortierung angeben, z.B. der Preis:

Preis

Ich denke, diese L?sung ist vielleicht nicht ganz perfekt (Anregungen willkommen!) aber man kommt erstmal ein St?ck weiter. :cool:

[edit]

Bis zu den Seiten-Bl?tter-Funktionen bin ich noch nicht vorgedrungen... Das muss ich mir wohl auch noch mal ansehen... :unsure:

Link to comment
Share on other sites

  • 2 months later...

Hi WEIGsoft!

K?nntest Du mir mal nen Tipp geben, da Du Dich da ja scheinbar gut auskennst:

Wie kann ich einrichten, dass die Sortierung (wenn ich nach Reihung eingestellt habe)erst nach Reihung, anschliessend nach Namen sortiert?

Beispiel: Produkt Christa mit Reihung 0 soll vor Produkt Daniela mit Reihung 0 sortiert werden.

Momentan erscheint mir das recht beliebig, wenn Reihungsnummern identisch sind...

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...

hallo.

wen ich meine suchergebnisse auf diese weise sortiere, bringt mich der 'go' button immer auf die startseite anstatt die suchergebnisse sortiert anzuzeigen. habe das 1:1 eingebaut. funktioniert das evtl. in der 3.0.4 SP1 nicht?

meine url sieht nach dem sortieren folgendermassen aus "/index.php?cPath=&sort=products_name&sort2=desc"

da wird der cPath nicht erkannt?

hat das schon mal jemand in der neuesten version ausprobiert, oder sonst eine idee wie ich das zum laufen bekomme?

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 weeks later...
  • 2 months later...

Hallo,

ich habe die Funktion von vorher etwas erweitert und vor Allem sicherer gemacht.

Und zwar habe ich die beiden Parameter in 1 zusammengefasst, nehme den dann auseinander und checke ob jemand irgendwas einschleusen will.

Also:

1. includes/header.php

ca. Zeile 45 nach "var submitter = null;" folgendes einfügen:

function MM_jumpMenu(targ,selObj,restore){ //v3.0

  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

  if (restore) selObj.selectedIndex=0;

}
2. includes/modules/default.php ca. Zeilen 175, 260, 300. Immer nach if (!$sorting_data['products_sorting']) $sorting_data['products_sorting'] = 'pd.products_name'; folgendes einfügen:
    //Sortierungs-Extension

    if (isset($_GET["sort"])) {

        $sortingArray = explode('-', $_GET['sort']);


        if(!empty($sortingArray[0]) && preg_match("/^products_price|products_name|products_date_added$/", $sortingArray[0]) > 0) {

            $sorting_data['products_sorting'] = $sortingArray[0];

        } else {

            $sorting_data['products_sorting'] = 'products_name';

        }


        if(preg_match("/^asc|desc$/", $sortingArray[1]) > 0) {

            $sorting_data['products_sorting2'] = $sortingArray[1];

        } else {

            $sorting_data['products_sorting2'] = 'asc';

        }

    }
3. <templateverzeichnis>/module/product_listing/product_listing_v1.html wo ihr sie halt haben wollt, folgendes einfügen:
<form method="POST">Sortieren nach: 

    <select name="sort" onchange="MM_jumpMenu('parent',this,0);">

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_price-asc" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_price-asc") ? "selected" : ""; {/php}>Preis aufsteigend</option>

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_price-desc" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_price-desc") ? "selected" : ""; {/php}>Preis absteigend</option>

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_date_added-desc" {php} echo (isset($_GET["sort"]) && $_GET["sort"] == "products_date_added-desc") ? "selected" : ""; {/php}>Neueste zuerst</option>

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_date_added-asc" {php} echo (isset($_GET["sort"]) && $_GET["sort"] == "products_date_added-asc") ? "selected" : ""; {/php}>Älteste zuerst</option>

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_name-asc" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_name-asc") ? "selected" : ""; {/php}>Alphabet A-Z</option>

        <option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_name-desc" {php} echo (isset($_GET["sort"]) && $_GET["sort"]=="products_name-desc") ? "selected" : ""; {/php}>Alphabet Z-A</option>

    </select>

</form>

Dann habt ihr sowas wie bei dieser kommerziellen Extension.

Hoffe, das hilft jemandem! Viel Spaß damit :P

Link to comment
Share on other sites

DANKE DANKE DANKE DANKE

Ich finde es einfach nur Geil, wie Menschen ihr Wissen für Lau weiter weitergeben. Solche Menschen braucht das Land.

Ich bedanke mich rechtherzlich bei varsikin

Funktioniert einfach nur bestens.

Nochmals diggen Respekt an varsikin

Link to comment
Share on other sites

Hallo,

ich habe die tolle erweiterung von varsikin bei mir eingebaut, leider passiert nix ...

es ändert sich nur der link alles andere bleibt gleich.

vor der Preissortierung

http://www.meinedomain.de/index.php/cat/c44_IDE.html

nach der Preissortierung

http://www.meinedomain.de/index.php/cat/c44_IDE.html&sort=products_price-asc

hat jemand eine idee für das kleine problem ?

danke im voraus

gruss

arne

Link to comment
Share on other sites

Kann dir so erstmal auch nix sagen, denke aber dass es wegen irgendeiner Suchmaschinen-Optimierungserweiterung ist, dass die Parameter nicht angenommen werden. Müsste mir das genauer anschauen und den Code entsprechend erweitern.

Wenn ich ne Lösung hab werd ichs hier posten. Wenn jemand das selbe Problem hat, bitte bei mir melden!

Link to comment
Share on other sites

  • 2 months later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...