[SOLVED] Sortieren nach..?

  • Servus

    währe es evtl möglich, dieses hier in den Shop Standardmäßig zu integrieren?
    hier der Link vom xt:commerce Forum
    http://www.xt-commerce.com/forum/showthread.php?t=12250

    soweit Funktioniert das Teil auch in commerce:SEO, bin nur am Umschreiben des Teils, weil was ist wenn SESSIONs, statt Cookies genommen werden, oder SEO-URLs das muss alle angepasst werden, damit es Fehlerfrei funktioniert

    Gruß
    Gunah

  • Moin Gunah, ich glaube Daniel hat da was, was auch wirklich mal funktioniert. Ich denke wir laden das mal in den Download Bereich. Schick ihm mal ne Mail, er kann es Dir vorab schon mal zusenden.

  • hier mal meine Variante habe es per SESSION gelöst, sodass es beim Kunden immer in der Einstellung ist.
    Suche 3 mal nach

    PHP
    if (!$sorting_data['products_sorting'])  $sorting_data['products_sorting'] = 'pd.products_name';

    füge folgendes Darunter ein:

    PHP
    /*Sorting*/  if(isset($_POST['products_sort'])) {   $_SESSION['products_sort'] = invtal($_POST['products_sort']);  }  if (isset($_SESSION['products_sort'])) {   switch($_SESSION['products_sort']):// Preis	case '1': // aufsteigend	 $sorting_data['products_sorting'] = 'p.products_price';	 $sorting_data['products_sorting2'] = 'asc';	break;	case '2': // absteigend	 $sorting_data['products_sorting'] = 'p.products_price';	 $sorting_data['products_sorting2'] = 'desc';	break;// Datum	case '3': // Neueste zuerst	 $sorting_data['products_sorting'] = 'p.products_date_added';	 $sorting_data['products_sorting2'] = 'desc';	break;	case '4': // Aelteste zuerst	 $sorting_data['products_sorting'] = 'p.products_date_added';	 $sorting_data['products_sorting2'] = 'asc';	break;//Alphabet	case '5': // A-Z	 $sorting_data['products_sorting'] = 'pd.products_name';	 $sorting_data['products_sorting2'] = 'asc';	break;	case '6': // Z-A	 $sorting_data['products_sorting'] = 'pd.products_name';	 $sorting_data['products_sorting2'] = 'desc';	break;// Standard = Alphabet = A-Z	default:	 $sorting_data['products_sorting'] = 'pd.products_name';	 $sorting_data['products_sorting2'] = 'asc';  endswitch;  }/*END*/

    Fügen Sie in das Template irgendeiner steller folgendes ein:
    templates/<NAME>/module/product_listing/product_listing_v1.html

    Code
    <form method="post" action="{php} echo $_SERVER['REQUEST_URI']; {/php}">Sortieren nach: 
     <select name="products_sort" onchange="this.form.submit()">
        <option value="1"{php} if($_SESSION['products_sort']=='1') echo ' selected="selected"' {/php}>Preis aufsteigend</option>
        <option value="2"{php} if($_SESSION['products_sort']=='2') echo ' selected="selected"' {/php}>Preis absteigend</option>
        <option value="3"{php} if($_SESSION['products_sort']=='3') echo ' selected="selected"' {/php}>Neueste zuerst</option>
        <option value="4"{php} if($_SESSION['products_sort']=='4') echo ' selected="selected"' {/php}>&Auml;lteste zuerst</option>
        <option value="5"{php} if($_SESSION['products_sort']=='5') echo ' selected="selected"' {/php}>Alphabet A-Z</option>
        <option value="6"{php} if($_SESSION['products_sort']=='6') echo ' selected="selected"' {/php}>Alphabet Z-A</option>
      </select>
    </form>
  • Wir haben das ganze Teil noch ein wenig "verfeinert".

    [Blockierte Grafik: http://www.siekiera-online.de/images/extern/2008-09-30_0829.png]

    In diesem Beispiel kann, z.B. nach Preis aufsteigend sortiert werden, danach noch die Liste verlängert/verkürzt werden, die Ansicht von Liste auf Gallerie geändert, aber ohne das das Sortierergebnis verändert wird.

    Sieht dann so aus:

    [Blockierte Grafik: http://www.siekiera-online.de/images/extern/2008-09-30_0835.png]

  • Sieht sehr nice aus :)

    das mit der Listen/Gallerie ansicht ist so schnell umsetztbar, das ist ja kein Problem :)

    nur mit der Anzahl der Produkte habe ich meine Probleme, da ich den Punkt nicht finde, wo das Limit (SQL) angeben wird :(

    habe eben mal die Sortierung überarbeitet:
    Die alten inhalte aus der default.php müssen rückgänig gemacht werden:
    Such nach:

    Code
    $main_content = '';


    Füge darunter folgendes ein:

    Code
    /*Function for Category Sorting*/function cat_sorting($post,$sortcat1,$sortcat2) {global $_SESSION;	/*Sorting*/		if(isset($post)) {		 $_SESSION['products_sort'] = intval($post);		}		if (isset($_SESSION['products_sort'])) {		 switch($_SESSION['products_sort']):		case '0': // Sortieren nach		 $sorting_data['products_sorting'] = $sortcat1;		 $sorting_data['products_sorting2'] = $sortcat2;		break;	// Preis		case '1': // aufsteigend		 $sorting_data['products_sorting'] = 'p.products_price';		 $sorting_data['products_sorting2'] = 'asc';		break;		case '2': // absteigend		 $sorting_data['products_sorting'] = 'p.products_price';		 $sorting_data['products_sorting2'] = 'desc';		break;	// Datum		case '3': // Neueste zuerst		 $sorting_data['products_sorting'] = 'p.products_date_added';		 $sorting_data['products_sorting2'] = 'desc';		break;		case '4': // Aelteste zuerst		 $sorting_data['products_sorting'] = 'p.products_date_added';		 $sorting_data['products_sorting2'] = 'asc';		break;	//Alphabet		case '5': // A-Z		 $sorting_data['products_sorting'] = 'pd.products_name';		 $sorting_data['products_sorting2'] = 'asc';		break;		case '6': // Z-A		 $sorting_data['products_sorting'] = 'pd.products_name';		 $sorting_data['products_sorting2'] = 'desc';		break;	// Standard = Alphabet = A-Z		default:		 $sorting_data['products_sorting'] = 'pd.products_name';		 $sorting_data['products_sorting2'] = 'asc';		endswitch;		}	/*END*/	return $sorting_data;}

    such nach:

    Code
    if (!$sorting_data['products_sorting'])  $sorting_data['products_sorting'] = 'pd.products_name';


    füge darunter folgendes ein:

    Code
    /*Sorting*/
    $sorting_data = cat_sorting($_POST['products_sort'],$sorting_data['products_sorting'],$sorting_data['products_sorting2']);
    /*END*/

    Die Funktion kann man auch in aplication_top.php machen... ist warscheinlich auch besser

    Gruß
    Mathis

  • Servus

    habe mal das Teil von den Bilder nach gebaut von "siekiera"...

    Funktioniert alles auch ohne Probleme, sind hier alle richtig begeistert von :)

    ob ich das Script veröffentlich werde ich mir noch mal durch den Kop gehen lassen, und wenn vorher mit "siekiera" klären :)

    Gruß
    Gunah