Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Mai 22, 2012, 21:45:30

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5257 Beiträge in 1422 Themen von 333 Mitglieder
Neuestes Mitglied: pje
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  "weitere Seiten" für Varianten
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: "weitere Seiten" für Varianten  (Gelesen 983 mal)
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1182


WWW
« am: August 07, 2008, 15:19:04 »

Hallo,

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

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
Code:
<!--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  Cheesy  - war mir aber dann doch zu aufwendig das fertig zu programmieren  Wink
« Letzte Änderung: August 07, 2008, 20:25:48 von dobra » Gespeichert

Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS