Jump to content
xt:Commerce Community Forum

Sortierung Nach...


YesIT

Recommended Posts

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!

hi varsikin, ja, die suchmaschinenfreundlichen URLs sind das Problem.

Ansonsten funktioniert das auch unter xt:Commerce 3.0.4 SP2.1

hast du da schon eine Lösung gefunden?

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...
  • 1 month later...
  • 1 month later...

Ich habe das Script von Varsikin auch bei mir installiert.

Suchmaschinenfreundliche URLs sind aus, dennoch geht es nicht..

Der Sort-Parameter wird einwandfrei angehängt, wenn ich was aus dem Dropdown auswähle, dennoch erfolgt nur ein reload der Produktliste.

Wer kann helfen ??

Gruß,

Marco

Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...

ist ja ein super script, danke hierfür.

Nur: wenn ich auf eine kategorie klicke, erstauf preis sortier und dan auf hersteller filter kann ich die artikel nicht mehr auf preis sortieren.Alle artikel werden dann wieder angezeigt.

Wenn ich aber sofort auf hersteller filter und dann auf preis sortiere

funktioniert es wohl gut.

Weiss jemand hier eine losung für?

Link to comment
Share on other sites

  • 4 months later...

Hallo,

es funktioniert ja bei der advanced_search_result und damit beim Hersteller nicht...

um das suchergebnis zu sortieren musst du es in der advanced_search_result.php einbauen!

etwa nach ?

$where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int) $_SESSION['languages_id']."'".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check;

folgendes eingeben ?

// sorting query
$sorting_query = xtDBquery("SELECT products_sorting,
products_sorting2 FROM ".TABLE_CATEGORIES."
where categories_id='".(int) $_GET['filter_id']."'");
$sorting_data = xtc_db_fetch_array($sorting_query,true);
if (!$sorting_data['products_sorting'])
$sorting_data['products_sorting'] = 'pd.products_name';
// sajako start
//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';
}
}[/php]

[b]wie weit liege ich daneben ?[/b]

Danke.

Link to comment
Share on other sites

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

hallo,

habe das ganze mal für die suchmaschienen freundlichen urls angepasst, eindfach den eigentlichen code für die includes/modules/default.php datei durch den hier ersetzen:


$sort = preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI']);

if($sort != '') {
$sortingArray = explode('-', $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';
}
}
[/PHP]

und für die product_listning_v1.html template

[PHP]
<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 (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])=="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 (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])=="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 (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])== "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 (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])== "products_date_added") ? "selected" : ""; {/php}>Älteste zuerst</option>
<option value="{php} echo preg_replace("/&sort=products(.*)$/Uims", '', $_SERVER['REQUEST_URI']); {/php}&sort=products_name-asc"
{php} echo (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])=="products_name") ? "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 (preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI'])=="products_name-desc") ? "selected" : ""; {/php}>Alphabet Z-A</option>
</select>
</form>
[/PHP]

mfg td

Link to comment
Share on other sites

also wer shopstat nutzt muss das nicht gross ändern was in der urfassung erstellt wurde

der brauch in der htaccess nur folgendes anpasssen

für produktlisten mit einer anderen seite die auch geblättert wurde

(also zb. seite 2 von damen unterwäsche


RewriteCond %{REQUEST_URI} (.*)/([_0-9]+)[_0-9]+)\.html(.*)$

RewriteRule (.*)/([_0-9]+)[_0-9]+)\.html(.*)$ /index.php?cPath=$2$4&page=$3 [qsappend,L][/code]


(.*) nach dem html geschrieben

und als zielurl cpath=$2[b]$4[/b]&page



bei produktlisten mit einer seite (oder ohne aufruf von folgeseiten)

[code] RewriteCond %{REQUEST_URI} (.*)/([_0-9]+)\.html(.*)$ RewriteRule (.*)/([_0-9]+)\.html(.*)$ /index.php?cPath=$2$3 [qsappend,L]

(.*) nach dem html geschrieben

als zielurl cpath=$2$3

dürfte eigentlich leicht zu verstehen sein

beide codes müssen in die htaccess (natürlichzusätzlich zu varskins modul )

wichtige info

bitte nicht beide codes kopieren sondern den bereich in eurer htacceess jeweils kopieren und entsprechend anpassen , da ich nicht mehr die original einstellung von shopstat benutze

Zu kopieren wäöre der bereich

##-- Kategorien

vier zeilen

kopieren und davor oder danach wieder einfügen

und die änderung mit (.*) und $3 / $4 durchführen.

bei problemen einfach hier posten ich schaue ab und zu mal rein

Link to comment
Share on other sites

Hallo zusammen, vielen Dank erstmal an alle meine Vorschreiber besonder an varsikin und Oceanmedia. Es ist wirklich schön zu sehen wie ein Modul immer weiter wächst und dann kostenlos eingesetzt werden kann. Klasse und vielen Dank.

Ich habe versucht das ganze auch bei mir einzubauen, bin allerdings auf ein Hindernis gestossen. Ich benutzte die Version 3.0.4SP2.1 ).

Die Sortierung funktioniert zwar allerdings nur solange ich keinen Hersteller ausgewählt habe. Sobald ich einen Hersteller ausgewählt habe wird der Link um den Parameter "&filter_id...." verlängert. Danach greift glaube ich der Ausdruck:

$sort = preg_replace('/(.*)(&sort=)([a-z-_]+)$/', '$3', $_SERVER['REQUEST_URI']);[/PHP]

nicht mehr, heisst innerhalb der $listingsql ist der Ausdruck "&filter_id..." immernoch vorhanden. Leider reichen meine Kenntnisse der regulären Ausdrücke nicht aus um die Funktion preg_replace anzupassen. es wäre schön wenn das jemand übernehmen könnte.

Ausserdem wäre es hilfreich wenn innerhalb der "product_listing_v1.html" der Parameter "Filter_id" mit an die Value Werte angehangen würde, dann funktioniert die Sortierung der Produkte nämlich auch wenn ein hersteller ausgewählt wird. Ich habe das ganze für mich schonmal angepasst, habe allerdings aufgrund dessen das ich von regulären Ausdrücken keinen Plan habe, habe ich das wohl eher Anfängermässig umgesetzt. Ich werde es bei bedarf aber gerne posten. Ich möchte hier nicht das Niveau senken :-)

Link to comment
Share on other sites

  • 1 month later...

hallo zusammen,

eine klasse funktion! funktioniert super!

ich bin derzeit dran das ganze ein wenig aufzubohren, damit man damit nicht sortieren, sondern selektieren kann. irgendwie komme ich aber überhaupt gar nicht zu potte damit. hat jemand zufällig interesse daran mitzuwirken? ich würde das ganze natürlich hier auch allen zur verfügung stellen wollen, keine frage.

LG

jens

Link to comment
Share on other sites

  • 2 weeks later...

da wir es hier geschaft haben den SQL-String zu verfremden, sprich eine INJECTION zu starten habe ich das Script mal angepasst. so können keine SQL-Injections mehr statt finden ;-)

Es ist uns zwar nicht wirklich gelungen PWs oder ähnliches zu klauen, aus einer Testumgebung aber Trotzdem sollte man diese Variante hier nehmen

NEIN ich schreibe hier nicht rein wie man es machen kann!

einfach den alten:

    //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';
}
}[/php]

mit folgendem Austauschen:

[php] // added by mk.sc
//Sortierungs-Extension
if (isset($_GET["sort"])) {
$sortingArray = explode('-', $_GET['sort'], '2');
switch ($sortingArray[0]):
case 'products_price':
$sorting_data['products_sorting'] = 'p.products_price';
break;
case 'products_name':
$sorting_data['products_sorting'] = 'pd.products_name';
break;
case 'products_date_added':
$sorting_data['products_sorting'] = 'p.products_date_added';
break;
default:
$sorting_data['products_sorting'] = 'pd.products_name';
endswitch;

switch ($sortingArray[1]):
case 'asc':
$sorting_data['products_sorting2'] = 'asc';
break;
case 'desc':
$sorting_data['products_sorting2'] = 'desc';
break;
default:
$sorting_data['products_sorting2'] = 'asc';
endswitch;
}
// added by mk.sc end

Wir übernehmen keinerlei Haftung für die Funktionalität - Benutzen auf eigene Gefahr

Getestet mit:

PHP5.2.6

MySQL 5.0.51a-15

Apache 2.2.6

xt:commerce 3.0.4 SP2.1 und commerce:SEO 1.0.6 Base

Gruß

Mathis Klooß

Link to comment
Share on other sites

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

Wen es noch interessiert, die Lösung des ursprünglichen Problems:

Das Problem ist in dem HTML Part und zwar im onclick Handler des Input Buttons:

FALSCH

onClick="location.href='index.php?cPath={php} echo $_GET['cPath']; {/php}&sort='+this.form.sort.value+'&sort2='+this.form.sort2.value;"

RICHTIG

onClick="location.href='index.php?cat={php} echo $_GET['cat']; {/php}&sort='+this.form.sort.value+'&sort2='+this.form.sort2.value;"

Also aus cPath cat machen!

Link to comment
Share on other sites

  • 1 month later...

Das ist die Lösung mit einer zusätzlichen Sortierbox - ich suche nach der Lösung um die Spalten zu sortieren - also so wie es wohl irgendwann mal standard war.

Saltenüberschrift und wenn man drauf klickt => wird nach dieser Spalte sortiert - nochmal drauf andersrum.

Scheint so als wäre man bei der entwicklung der Meinung, daß man sowas nicht braucht....:(

Link to comment
Share on other sites

  • 1 year later...

Hi Leute,

habe auch die Sortierfunktion hier eingebaut.

Leider geht es in der "advanced_search_result.php" nicht, obschon das Dropdownmenü gezeigt wird. Ja sogar die Url wird erweitert. Nur lädt es die Seite nur neu - ohne Sortierung der gewünschten Anwahl.

Seo ist aber aus und sonst funktioniert es auch, wie gesagt nur in der Suche nicht.

Bin dankbar für jeden Tipp!

Gruß

Link to comment
Share on other sites

Archived

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

×
  • Create New...