Link auf "weitere Seite" ?

Begonnen von dobra, Dezember 11, 2010, 19:43:40

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

ich verlinke die Artikel (Varianten) im WK so
<a href="http://__xxpath__?show__SEITE__,__xxsession__"> __ARTIKELNAME__ </a>

im ben.def. Feld SEITE steht entweder der Pfad zur Detailseite
z.B. "d1540!0,,Decora"
oder der Pfad zur Verzeichnisseite wenn es keine Detailseite gibt
z.B. "2070"

der 2. Fall ist das Problem...
Wenn es hier "weitere Seiten" gibt, wird im WK bei Klick auf den Artikelnamen immer die ERSTE Seite aufgerufen, auch wenn dieser Artikel z.B. auf der 5. Seite liegt.

ach ja - ich verwende auch die freie Auswahl des Kunden, wie viele Artikel pro Seite er sehen will
(soll heißen Kunde kann angezeigte Zeilen wählen -> 3, 4, 5 oder 6 Artikel pro Zeile - wird mit ssp gesteuert)
also kann ich die Seite auch nicht fix mit .B. "2070,,18" eintragen
was ja auch viel zu aufwendig wäre - wenn z.B. Artikel gelöscht, verschoben oder neu dazu kommen, müsste der Eintrag ja jedes Mal manuell geändert werden

Habe also versucht, die SID auszulesen (das funktioniert) und dann den Link so zu schreiben
<a href="http://__xxpath__?show__SEITE__,__xxsession__,__show::sid__"> __ARTIKELNAME__ </a>
aber das nutzt nichts, da SID ja (meistens) nicht mit 1 anfängt -> also der 23. Artikel dann SID 55, der 24. Artikel SID 56 usw. hat

sub sid {
my $pre = ssp::db_get_prefix();
my $ITEM = $pre . "ITEM";
my $SITM = $pre . "SITM";
my $sid;
my $index = shift;
my $id = ssp::get_var_cart('id',$index);
ssp::readSQLData(qq|SELECT SID FROM $ITEM WHERE ITEMID = '$id'|, "SID");
$sid =  ssp::get_var_db('SID',0);
if ($sid eq "undefined") {
ssp::readSQLData(qq|SELECT MITEMID FROM $SITM WHERE ITEMID = '$id'|, "ITEMID");
my $id2 =  ssp::get_var_db('ITEMID',0);
ssp::readSQLData(qq|SELECT SID FROM $ITEM WHERE ITEMID = '$id2'|, "SID");
$sid =  ssp::get_var_db('SID',0);
}
main::mprint ($sid);
}

(Hallo ahe - das geht sicher auch viel eleganter mit "left join" oder so, aber damit komme ich immer noch nicht wirklich klar  :-\)

Wie kann ich es anstellen, dass die "weiter Seite" aufgerufen wird, auf der der angeklickte Artikel angezeigt wird?
also mit __show::sid__ nicht SID sondern die wirkliche Artikelpositon auf der Seite rauskriegen?

mfG
dobra

admin

Hallo Dobra,

Zitatoder der Pfad zur Verzeichnisseite wenn es keine Detailseite gibt

Das ist dann kein Pfad zu einer Verzeichnisseite sondern zu einer Artikleseite.
Eine Verzeichnisseite enthält Links zu untergeordneten Seiten und __weitereseiten__
geht nicht auf Verzeichnisseiten, also nehme ich an, dass Artikelseiten gemeint
sind, die nur Artikel enthalten und auch __weitereseiten__ benutzen
können.

Zitatim ben.def. Feld SEITE steht entweder der Pfad zur Detailseite
z.B. "d1540!0,,Decora"

Das mag funktionieren, ist  aber nicht ganz korrekt.
Weil der Link der rauskommt, hatt die Sessionid nicht an der richtigen Stelle.
Bzw. sie geht hier verloren. Wird aber in den meisten Fällen über das
Sessioncookie wieder hergestellt.


<a href="http://__xxpath__?show__SEITE__,__xxsession__,__artid__"> __ARTIKELNAME__ </a>
mit
artid=Decora
SEITE=d1540!0


Bei placecart wird die Artikelnummer mit gegeben. Und zwar steht sie mit einem ! abgetrennt hinter der Seitennummer.
Diese Zahl kann dann genutzt werden, um die richtige Artikelseite aufzurufen.
Leider steht diese Zahl noch nicht per SSP zur Verfügung oder nur indirekt indem sie au der URL bei Placecart holt.
Ausserdem muss sie dann im Warenkorb abgespeichert werden (Bnutzdef. Variable für Autragsposition).

Meiner Meinung nach wäre es einfacher ein Detailseite für jeden Artikel anzulegen, auch wenn die nur dazu dient, den Artikel aus dem Warenkorb aufrufbar zu machen.

Gruß hop






dobra

#2
Hallo hop,

Zitatalso nehme ich an, dass Artikelseiten gemeint sind, die nur Artikel enthalten
ja - das habe ich gemeint  

Zitat<a href="http://__xxpath__?show__SEITE__,__xxsession__,__id__"> __ARTIKELNAME__ </a>
das funktioniert aber leider nicht bei Varianten, da dann __id__ die Variantennr. ausgibt und so die Detailseite nicht gefunden wird.
Ergebnis
ZitatMit dem Ausbau des Shops wird diese Seite bald zu Verfügung stehen

ZitatMeiner Meinung nach wäre es einfacher ein Detailseite für jeden Artikel anzulegen, auch wenn die nur dazu dient, den Artikel aus dem Warenkorb aufrufbar zu machen.
hmmm...  ich arbeite z.Z. an einem neuen Lieferanten-Sortiment mit > 5.000 Artikeln
= viele (die meisten) dieser Artikel muss ich aber auf Varianten zusammenfassen, aber es werden trotzdem ca 1.500 Artikel (mit ca 4.500 Varianten da z.T. auch Arikel mit nur 1 Variante nötig sind) übrig bleiben.
knapp die Hälfte habe ich schon geschafft....
Also nochmal von vorne anfangen und für ALLE Artikel (auch bei vielen bereits vorhandenen Artikelseiten) Detailseiten anlegen möchte ich nicht wirklich gerne machen  ;)
Ausserdem wird bei Klick auf das Bild die Lightbox-Zoomfunktion verwendet und wenn es Detailseiten gibt würde doch dann die D-Seite aufgerufen?

Nachtrag:
Zitatund wenn es Detailseiten gibt würde doch dann die D-Seite aufgerufen?
nee - das funktionier auch bei eingetragener D-Seite da ich das Bild ja mit ssp ausgeben

aber viiiiiel lieber hätte ich halt die Lösung mit dem Link auf die "weitere Seite"..........
mfG
dobra

dobra

#3
Hallo nochmal,

hat mir doch keine Ruhe gelassen  ;)
ich hab's mal so versucht

1) ein bendef. Auftragfeld/Positionen WSEITEN angelegt

2) die Position der Artikel ausgeben
<!--spmacro:module(check)
sub posnr {
my $index = shift;
my $id = ssp::get_var_article("itemid", $index);
main::mprint qq|<input type="hidden" name="wseitennr_$id" value="__check::xposnr__">|;
}
-->

und in <!--spmacro:loopitem.6--> bei jedem Artikel mit __check::posnr__  ausgeben
damit haben alle Artikel mal die "richtige" Positionsnr.

3) Alle Artikelnummern in <input type="hidden" name="positemid" value="$xartid"> ausgeben
$xpositem = ssp::get_var_form('positemid');
if (length($xpositem) && ($xpositem ne ssp::undefined)) {
foreach my $itemid (split(';', $xpositem)) {
my $wseitennr = "wseitennr_" . $itemid;
my $showpos = main::qform(ssp::get_var_form($wseitennr));
if (showpos) {
ssp::set_var_form("WSEITEN__$itemid", $showpos);
}
}
}


schaut im Quelltext dann so aus
<input type="hidden" name="positemid" value="KreuzP_908;KreuzP_909;KreuzP_910;KreuzP_911;KreuzP_912;KreuzP_914;KreuzP_238;KreuzP_252;KreuzP_468;KreuzP_606;KreuzP_629;KreuzP_645;KreuzP_754;KreuzP_690;KreuzP_707;KreuzP_713;KreuzP_714;KreuzP_716;KreuzP_717;KreuzP_725;KreuzP_726;KreuzP_728;KreuzP_731;KreuzP_732;KreuzP_749;KreuzP_757;KreuzP_761;KreuzP_775;KreuzP_777;KreuzP_790;KreuzP_791;KreuzP_792;KreuzP_793;KreuzP_915;KreuzP_916;KreuzP_921;KreuzP_922;KreuzP_923;KreuzP_924;KreuzP_935;KreuzP_936;KreuzP_940;KreuzP_937;KreuzP_939;KreuzP_938;">


4) in stdplacecart zu
<!--spmacro:module(form)
   ## POST-Daten auslesen
das einfügen
$xpositem = ssp::get_var_form('positemid');
if (length($xpositem) && ($xpositem ne ssp::undefined)) {
foreach my $itemid (split(';', $xpositem)) {
my $showpos = main::qform(ssp::get_var_form('wseitennr'));
if (showpos) {
ssp::set_var_form("WSEITEN__$itemid", $showpos);
}
}
}


5) Bestellpositionen
sub showpos {
   my $index = shift;    
   my $pos = ssp::get_var_cart("WSEITEN",$index);
   
   if ($pos) {
       main::mprint $txt;
   }    
}


6) im Warenkorb
<a href="__xxpath__?show__SEITE__,__xxsession__,__bestellposition::showpos__">__ARTIKELNAME__</a>
der Artikel wird dann so verlinkt
http://127.0.0.1:8189/iboshop.cgi?show1090,482159423874317,35
(lokaler Test - gekürzt -> in Original frage ich hier noch ab, ob der Link zu einer Detail- oder Artikelseite geht - bei D-Seiten wird was anderes ausgegeben  ;))

cartdatei
ord0!_!KreuzP_252!_!1!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!11!_!
ord0!_!KreuzP_775!_!1!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!35!_!
ord0!_!KreuzP_717!_!1!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!!_!23!_!


es funktioniert ;D = wenn man auf den Artikelnahmen im WK klickt, wird DIE weitere Seite angezeigt auf der dieser Artikel liegt (Artikel an erster Stelle)

einziger kleiner Schönheitsfehler:
wenn auf einer Seite mehrere Artikel gleichzeitig in den WK gelegt werden, bekommen die alle die selbe Positionsnr.
Ist aber nicht weiter tragisch, da ja diese Artikel eh dann auf der gleichen "weiteren Seite liegen
(zumindest solange der Kunde nicht die Anzahl der angezeigten Artikel pro Seite ändert)

Nachtrag:
Code nochmal überarbeitet (funktioniert jetzt auch, wenn mehrere Artikel gleichzeitig in den WK gelegt werden) und jetzt auch online
z.B. hier http://www.wolle-online.eu/wip-cgi-bin/woll-insel-Partnershop/iboshop.cgi?show1090
mfG
dobra