Autor Thema: "weitere Seiten" für Varianten  (Gelesen 4481 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
"weitere Seiten" für Varianten
« 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)

  • ein Arikelfeld "MYWSEITEN" anlegen
  • in diesem Feld wird die Artikelzahl eingetragen, die pro Seite angezeigt werden soll.
    Bleibt das Feld leer, gibt es für diesen Artikel keine "weiten Seiten" und die Anzeige im Shop ist so wie bisher.
  • eine "varianz.ipl" Datei anlegen, im WC unter "Dateien hinzufügen" eintragen und mit
    <!--spmacro:include(scripts/varianz.ipl)--> (Pfad gegebenenfalls anpassen)
    in die stdall.ipl einbinden.
    (der Code kann aber auch direkt in die stdall.ipl geschrieben werden)
  • Code für die Auswahlbox -> Kundenwahl, wie er die Anzeige haben möchte
<!--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";};
}
-->
  • die Listbox wird auf der Detailseite an beliebiger Stelle mit
    __check::wseit__
    ausgegeben
  • nun zum komplizierteren Teil (hier muß vermutlich einiges angepasst werden)
  • ich gehe mal dvon aus, daß die Varianten auf der Detailseite so oder so änlich - ausgegeben werden
    <!--spmacro:pagetype(1)-->
    <form method="post" name="detail" id="detail" action="http://__xxpath__?placecart,__xxsession__" onsubmit="return ValidateForm(this);">
          ....
          __vari::ausgeben__
          ....
    </form>
  • der Scriptteil
    <!--spmacro:module(vari)
    sub ausgeben ....
    -->
    muß jetzt um etliche Codesnipsel ergänzt werden -> rot markiert{


<!--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;
}
-->


  • den Ausgabeteil auf der Detailseite nun so ersetzen:
    <!--spmacro:pagetype(1)-->
          __vari::ausgeben__
  • mit diesem Script können bis zu 3 "weitere Seiten" ausgegeben werden.
    Bei Bedarf kann das auch auf mehr Seiten ergänzt werden.

Live Demo 1 (30 Varianten pro Seite)
Live Demo 2 (12 Varianten pro Seite)

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  ;)

Linkback: https://www.shoppilot.net/pf/index.php?topic=1110.0
« Letzte Änderung: August 07, 2008, 20:25:48 von dobra »
mfG
dobra


xx
Link auf "weitere Seite" ?

Begonnen von dobra

3 Antworten
6610 Aufrufe
Letzter Beitrag Dezember 14, 2010, 00:54:47
von dobra
xx
"ab Preis" bei Varianten ausgeben

Begonnen von admin

2 Antworten
7114 Aufrufe
Letzter Beitrag Mai 10, 2015, 09:58:40
von dobra
xx
"I Like it"-Button auf dynamischen Seiten

Begonnen von Robi

2 Antworten
7391 Aufrufe
Letzter Beitrag Juli 11, 2011, 14:00:51
von admin
xx
"Bild" statt "Titel" in __tab__ anzeigen?

Begonnen von dobra

4 Antworten
7286 Aufrufe
Letzter Beitrag Februar 21, 2008, 15:24:34
von dobra