Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Thema gestartet von: dobra am August 07, 2008, 15:19:04

Titel: "weitere Seiten" für Varianten
Beitrag von: dobra am August 07, 2008, 15:19:04
Hallo,

mal wieder ein kleines Beispiel, daß man mit ShopPilot wirklich jede Idee realisieren kann  ;D

Aufgabe:
wenn man sehr viele Varianten (mit vielen Bildern) verwendet, kann es schon mal vorkommen, daß die Seite sehr lang wird, bzw. bei langsamer Internetwebindung die Ladezeit ziemlich lang ist.
Abhilfe -> "weitere Seiten" auch für Varianten!
Der Kunde soll aber damit nicht "zwangsbeglückt" werden, sondern sich das - wie es ja jetzt auch bei Artikeln möglich ist - selber wählen können, ob er alle Arikel oder nur einen Teil pro Seite sehen will.
Die "weiteren Seiten" sollen auch nur bei denjenigen Artikeln angezeigt werden, bei denen es Sinn macht.
Außerden kann man für jeden Artikel - je nach Platzbedarf - anderen Artikelanzahl einstellen ab welcher die nächste Seite angezeigt wird.

Lösung:
(leider ist das aber keine "universelle" Lösung - funktioniert so nur, wenn man die Varianten mit
...
my $anzahl = $_[3];
...
for (my $i=0;$i<=$anzahl;$i++){ ...
- wie in Demo-Carshop - ausgibt)

<!--spmacro:module(check)
 sub wseit {
my $mywsfeld = ssp::get_var_article('MYWSEITEN');
if (length($mywsfeld)) {
my $itemid = ssp::get_var_article("itemid");
my $out = qq|
<form method="post" action="$ssp::xxpath?showd$ssp::pgid,__xxsession__,$itemid">
<select name="ausform" size="1" onchange="this.form.submit()">
<option value="1" >$mywsfeld </option>
<option value="alle" __check::selected__>alle</option>
</select>
</form> Farben pro Seite anzeigen |;
main::mprint $out;
my $wert = ssp::qform(ssp::get_var_form('ausform'));
if ($wert ne "undefined") {
ssp::cart_write_var('wseit', $wert);
}
}
}

sub selected {
  my $sel = ssp::cart_read_var('wseit');
  if ($sel eq "alle") {main::mprint "selected";};
}
-->


<!--spmacro:module(vari)
sub ausgeben {
   my $anzahl = $_[3];
      my $anzges = $anzahl + 1;
      my $anzshow = $anzahl;
      my $start;
      my $start2;
      my $mywsfeld = ssp::get_var_article('MYWSEITEN');
      my $auswahl = ssp::cart_read_var('wseit');
      if (length($auswahl)) {$mywsfeld = $auswahl;}
      if ((!length($mywsfeld)) || $auswahl eq "alle") {$mywsfeld = $anzahl;}   
.....         
   my $ausgabe= "";
   my $itemid = ssp::get_var_article("itemid");
...
...
   $ausgabe .= qq|<table width="650" border="0" cellspacing="0" cellpadding="0" class="farbtabelle">|;

      my $seite1 = qq|
         <form method="post" name="mywseiten" action="$ssp::xxpath?showd$ssp::pgid,__xxsession__,$itemid">
         <input type="hidden" name="vseite" value="1">
         <input type="submit" value="Seite 1">
         </form>
      |;   
      my $seite2 = qq|
         <form method="post" name="mywseiten" action="$ssp::xxpath?showd$ssp::pgid,__xxsession__,$itemid">
         <input type="hidden" name="vseite" value="2">
         <input type="submit" value="Seite 2">
         </form>
      |;   
      my $seite3 = qq|
         <form method="post" name="mywseiten" action="$ssp::xxpath?showd$ssp::pgid,__xxsession__,$itemid">
         <input type="hidden" name="vseite" value="3">
         <input type="submit" value="Seite 3">
         </form>   
      |;
      
   my $falle =  ssp::cart_read_var('wseit');
   my $mywsfeld3 = ssp::get_var_article('MYWSEITEN');
   my $zeigeanz = $mywsfeld3;
   if (length($mywsfeld3) && $anzahl > "$mywsfeld3" && $falle ne "alle") {
   my $wobinich = ssp::qform(ssp::get_var_form('vseite'));
   if ($wobinich eq "undefined" && $anzahl > $mywsfeld3) {$start = 0; $anzshow = $mywsfeld3 - 3;  $seite1 = qq| <b><font color="red">&nbsp;Seite 1</font></b>|;}
   if ($wobinich eq "1") {$start = 0; $anzshow = $mywsfeld3 - 3; $seite1 = qq| <b><font color="red">&nbsp;Seite 1</font></b>|;}
   if ($wobinich eq "1" && $anzahl < $mywsfeld3) {$start = 0; $anzshow = $anzahl; $seite1 = qq| <b><font color="red">&nbsp;2</font></b>|;}
   if ($wobinich eq "2" && $anzahl > (2*$mywsfeld3)-1) {$start = $mywsfeld3; $anzshow = 2*$mywsfeld3; $seite2 = qq| <b><font color="red">&nbsp;Seite 2</font></b>|; $zeigeanz = $anzshow +1;}
   if ($wobinich eq "2" && $anzahl < (2*$mywsfeld3)+1) {$start = $mywsfeld3; $anzshow = $anzahl; $seite2 = qq| <b><font color="red">&nbsp;Seite 2</font></b>|; $zeigeanz = $anzshow +1;}
   if ($wobinich eq "3" && $anzahl > (3*$mywsfeld3)-1) {$start = 2*$mywsfeld3; $anzshow = 3*$mywsfeld3; $seite3 = qq| <b><font color="red">&nbsp;Seite 3</font></b>|; $zeigeanz = $anzshow +1;}
   if ($wobinich eq "3" && $anzahl < (3*$mywsfeld3)+1) {$start = 2*$mywsfeld3; $anzshow = $anzahl; $seite3 = qq| <b><font color="red">&nbsp;Seite 3</font></b>|; $zeigeanz = $anzshow +1;}

         $start2 = $start + 1;
   }
      if ((length($mywsfeld3)) && $anzahl > (2*$mywsfeld3)-1 && $falle ne "alle") {
   $ausgabe .= qq|
   <tr><td colspan="12" nowrap align="center"><b>Farbe $start2 - $zeigeanz</b> <i>von insgesamt $anzges Farben</i>  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
      $seite1 $seite2 $seite3<br><br></td>
   |;
   }
   if ((length($mywsfeld3)) && $anzahl > $mywsfeld3 && $anzahl <= (2*$mywsfeld3)-1 && $falle ne "alle") {
   $ausgabe .= qq|
   <tr><td colspan="12" nowrap align="center"><b>Farbe $start2 - $zeigeanz</b> <i>von insgesamt $anzges Farben</i>  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
   $seite1  $seite2<br><br></td>
   |;
   }      
   
   $ausgabe .= qq|
   <form method="post" name="detail" id="detail" action="http://__xxpath__?placecart,__xxsession__" onsubmit="return ValidateForm(this);">|;
   for ($i=$start;$i<=$anzshow;$i=$i+3)  {   
....
hier steht die bisherige Variantenausgabe      
....
   $ausgabe .= qq|</table>
        <center>
      <table width="570" border="0" cellspacing="0" cellpadding="2">
      <tr>
         <td align="right"> <font size="-2" valign="top"> ausgewählte Farben in Warenkorb legen &nbsp;</td>
         <td><input style="border:none" type=image src="../images/other/warenkorb.gif"></font></td>
      </tr>
      </table>
   </form><br>|;
   
   main::mprint $ausgabe;
}
-->



Live Demo 1 (30 Varianten pro Seite) (http://www.wolle-online.eu/wip-cgi-bin/woll-insel-Partnershop/iboshop.cgi?showd110!,453098487522128,MERINO_150)
Live Demo 2 (12 Varianten pro Seite) (http://www.wolle-online.eu/wip-cgi-bin/woll-insel-Partnershop/iboshop.cgi?showd480!0,453098487522128,JAWOLL_COTTON_c)

Wenn der Kunde "alle" auswählt = alle Varianten auf einer Seite anzeigen
bleibt diese Einstellung für ihn gespeichert bis er wieder eine Teilansicht wählt.

Ich habe auch ein wenig damit herumgespiel, dem Kunden auch andere als die vorgegebene Variantenanzahl auswählen zu lassen wie bei der fertigen Shoplösung für Artikel.
Also z.B. vorgegeben "30"
mögliche Auswahl: "alle", "15", "30", "45"

Auch das ist machbar  :D  - war mir aber dann doch zu aufwendig das fertig zu programmieren  ;)