Sammelthread: Funktionen aus Demoshops in bestehende Shops einbauen

Begonnen von dobra, August 17, 2009, 09:53:57

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Beim Einbau von Funktionen aus Demoshops kann man - auch als erfahrener SP-user - leicht mal was übersehen.
Um dann nicht erst lange in den jeweiligen Scripten suchen zu müssen, möchte ich hier kurze step by step Einbauanleitungen geben.

Damit das nicht unübersichtlich wird, Fragen dazu bitte in einem neuen Thread stellen.
(in diesem können nur Moderatoren oder Admins schreiben)

Tipp: bauen Sie die Funktionen zuerst mit den Original-Dateien ein und testen Sie es mit LiveView.
erst wenn alles funktioniert, die Dateien an die eigenen Bedürfnisse anpassen.

Wichtig: bevor Sie irgendwelche Änderungen am Shop-Projekt machen: vorher IMMER eine Sicherungskopie anlegen!
mfG
dobra

dobra

Hallo,

aus gegebenem Anlass (private Frage wie das geht) hier mal eine kurze Anleitung, wie man die "zuletzt gesehene Artikel" Funktion aus dem neuen Styleshop in ein bestehendes Projekt einbaut.

1) benötigt werden die Dateien

  • last_seen_reg.ipl (zu finden im scripts Ordner)
  • last_seen.ipl
  • last_seen.txt (beide im ebedded Ordner)

2) hat man in seinem Projekt die Ordner "scripts" und "embedded", einfach die 3 neuen Dateien in die jeweiligen Ordner kopieren.
ansonsten vorher diese beiden Ordner anlegen.

3) um die Scripte einzubinden, auf allen Detailseiten <!--spmacro:include(scripts/last_seen_reg.ipl)-->
und auf allen Seiten, auf denen die Anzeige der zuletzt gesehenen Artikel ausgegeben werden soll <!--spmacro:include(embedded/last_seen.ipl)-->
in den Headbereich schreiben.
man kann das  <!--spmacro:include(embedded/last_seen.ipl)-->  auch in die stdall.ipl schreiben, dann ist das Script automatisch auf ALLEN Seiten verfügbar und man braucht sich nicht mehr darum kümmern  ;)

4) jetzt kann auf jeder beliebigen Seite mit   __last_seen::show__   die Anzeige ausgegeben werden.

txt-Datei gegebenenfalls anpassen.

Sollten die Bilder zu groß sein, hier noch ein Script, mit dem man die Bilder in beliebige Größe scalieren kann:
<!--spmacro:module(img)
# Größe Artikelbilder verändern
sub show {
  my $index = $_[0];
  my $anzahl = $_[1];
  my $path = $ssp::catalog_abs;
  my $itemid = ssp::get_var_article('itemid',$index);
  if ($index <= $anzahl) {
     my $pic = ssp::get_var_article('iimage',$index);   my $seite = ssp::get_var_article('ipagenr', $index);

     main::mprint('<a href="__img::link__"><img border="1px solid black" width="27px" src="' . $path . '/' . $pic . '"></a>');
  }
}

sub link {
my $index = shift;
my $anzahl = shift;
if ($index <= $anzahl) {
my $seite = ssp::get_var_article('ipagenr', $index);
my $itemid = ssp::get_var_article('itemid', $index);
main::mprint(qq|__xxpath__?showd$seite!0,$ssp::xxsession,$itemid|);
}
return "noinc";
}
-->

hier width=... wird die gewünschte Breite (oder Höhe) eingestellt.

in der txt-Datei   __simage__  mit  __img::show__  ersetzen.
die Bilder sind jetzt exakt so gross wie man sie haben will - MIT Link zur Detailseite wie bei  __simage__
mfG
dobra

dobra

notwendige Schritte:


  • sort.ipl (im Ordner "scripts") in Ihr Projekt kopieren
    sollte der Ordner "scripts" noch nicht vorhanden sein, diesen vorher anlegen
  • aus der stdall.ipl Datei das  
    <!--spmacro:module(Callback)
    sub AddSQLCondition { ...

    Script in Ihre stdall.ipl kopieren
  • in alle Vorlagen wo die Sortierung angezeigt werden soll im head-Bereich
    <!--spmacro:include(scripts/sort.ipl)-->
    hinzufügen
  • die css-Klassen
    /* Element für Spaltensortierung */
    .sorter  {text-align: left; border: none;}
    .sorter #sort_asc {font-weight: bold;
       background:transparent url(../images/other/sort_up.gif) no-repeat scroll right center;
       padding-right:20px;
       }
    .sorter #sort_desc {font-weight: bold;
       background:transparent url(../images/other/sort_down.gif) no-repeat scroll right center;
       padding-right:20px;
       }
    .sorter #sort_inactive {font-weight: bold;
       background:transparent url(../images/other/sort_inactive.gif) no-repeat scroll right center;
       padding-right:20px;
       }

    in Ihre css-Datei eintragen
  • die icons sort_inactive.gif, sort_down.gif und sort_up.gif aus dem Ordner "images" -> "other" in Ihr Projekt kopieren
    Die Bider können auch in einen anderen Ordner abgelegt werden - dann müssen allerdings die Pfade in der css-Datei angepasst werden.
  • sort.ipl und die Icons im WC in die Liste "Dateien hinzufügen" eintragen
  • für die Ausgabe an der Stelle wo die Sortierungslinks angezeigt werden sollen
    __sort::itemid__ für Artikelnummer
    __sort::descr__ für Beschreibung
    __sort::price__ für Preis
    und - wenn gewünscht - __sort::off__ für Sortierung aufheben
    einfügen

Die Formatierungen, Icons, Texte usw. können natürlich angepasst werden.
mfG
dobra

dobra

um die Funktion "Artikel beschriften", "Farbe wählen" und "eigenes Bild uploaden" wie bei den Mouspads im Konfiguratorshop sind folgende Schritte nötig:

1)  falls noch keine stdplacecart.ipl existiert diese anlegen und in die Liste "Dateien hinzufügen" eintragen.
2) diesen Code in die stdplacecart.ipl kopieren
<!--spmacro:module(form)
## POST-Daten auslesen
my $item = ssp::get_var_form('paditemid');
if (length($item) && ($item ne ssp::undefined)) {
my $padline = main::qform(ssp::get_var_form('PADLINE'));
my $red = int(ssp::get_var_form('padcolor_red'));
my $green = int(ssp::get_var_form('padcolor_green'));
my $blue = int(ssp::get_var_form('padcolor_blue'));
       my $image = main::qform(ssp::get_var_form("PADIMAGE"));

## Bereichsprüfung
if ($red > 255) { $red = 255; }
if ($red < 0) { $red = 0; }
if ($green > 255) { $green = 255; }
if ($green < 0) { $green = 0; }
if ($blue > 255) { $blue = 255; }
if ($blue < 0) { $blue = 0; }

## In Form #rrggbb bringen
my $color = sprintf("#%02x%02x%02x", $red, $green, $blue);
if ($item) {
$main::FORM{"PADLINE__$item"} = $padline;
$main::FORM{"PADCOLOR__$item"} = $color;
           $main::FORM{"PADIMAGE__$item"} = $image;
}
}
-->


3) die imageupload.ipl Datei aus dem Konfiguratorshop (im Ordner "scripts") in Ihr Projekt in den selben Ordner kopieren (falls noch nicht vorhanden - vorher anlegen) und in "Dateien hinzufügen" eintragen.

4) im WC 3 benutzerdefinierte Felder bei Auftrag -> Positionen anlegen
   PADLINE, PADCOLOR und PADIMAGES

5) eine HTML-Vorlage (Detail-Seite) für Artikel mit dieser Funktion erstellen.
   Die Seite kann wie jede andere Detailseite aufgebaut sein, aber DIESE Teile müssen enthalten sein:

<!--spmacro:pagetype(1)-->
<form method="post" action="__xformcart__">
<input type="hidden" name="paditemid" value="__artnr__">


--- hier Ihr normaler Inhalt ---

+ zusätzlich

      <script type="text/javascript">
      function showPreview() {
         var red = window.document.getElementById('padcolor_red').value;
         var green = window.document.getElementById('padcolor_green').value;
         var blue = window.document.getElementById('padcolor_blue').value;
         red = parseInt(red);
         green = parseInt(green);
         blue = parseInt(blue);
         if (red > 255) { red = 255; }
         if (red < 0) { red = 0; }
         if (green > 255) { green = 255; }
         if (green < 0) { green = 0; }
         if (blue > 255) { blue = 255; }
         if (blue < 0) { blue = 0; }
         window.document.getElementById('padcolor_preview').style.backgroundColor = "rgb("+red+","+green+","+blue+")";
      }
      </script>
      <table>
      <tr>
         <td>Beschriftung</td>
         <td>
            <input name="PADLINE" id="PADLINE" type="text" size="45" maxlength="250">
         </td>
      </tr>
      <tr>
         <td valign="top">Textfarbe&nbsp;</td>
         <td>
            Rot&nbsp;<input name="padcolor_red" id="padcolor_red"  type="text" size="3" maxlength="3" value="0" onChange="javascript:showPreview();">
            Gr&uuml;n&nbsp;<input name="padcolor_green" id="padcolor_green"  type="text" size="3" maxlength="3" value="0" onChange="javascript:showPreview();">
            Blau&nbsp;<input name="padcolor_blue" id="padcolor_blue" value="0" type="text" size="3" maxlength="3"  onChange="javascript:showPreview();">
            Farb-Vorschau&nbsp;<input type="text" id="padcolor_preview" style="border:1px solid gray; background-color:black;" size="3" readonly>
            <br>
            <i>Hinweis: Tragen Sie jeweils Zahlen zwischen 0 und 255 ein.</i>
         </td>
      </tr>
      </table>

   <!-- *** Bildupload bereitstellen *** -->
   <!--spmacro:include(scripts/imageupload.ipl)-->
   <div class="innercontent">
      <!--    PADIMAGE heisst das benutzerdefinierte Feld für Bestellpositionen,
            in dem die eingetragenen Bilder gespeichert werden -->
      <input type="hidden" name="PADIMAGE" value="__imageupload::printImage__">
      __imageupload::printdetailpage_registeredonly__
   </div>
   <!-- *** Ende: Bildupload bereitstellen *** -->


</form>

unbedingt nötig ist auch entweder __anzkaufen__ oder ein entsprechendes hidden input!

6) ein weitere HTML-Vorlage "p_addimage.html" anlegen.
Hier kommt dieser HTML-Teil hinein:
   <!--spmacro:include(scripts/imageupload.ipl)-->
   __imageupload::printuploadpage__


7) eine Info-Seite anlegen
   Titel: Bildupload
    Vorlage: die zuvor erstellte p_addimage.html

8 )  in der Warenkorbvorlage und allen folgenden Seiten (Bestelldatenvorlage, Mails an Händler und Kunden)
     <!--spmacro:include(scripts/bestellposition.ipl)--> in den head-Bereich eintragen

9) zur Ausgabe im WK
   <!-- *** Ausgabe Zusatzdaten für personalisierbare Artikel *** -->
   __bestellposition::printBenutzerdefinierteFelder_Bearbeitbar__
   <!-- *** Ende: Ausgabe Zusatzdaten für personalisierbare Artikel *** -->

und in den Bestelldatenvorlagen und Mails
__bestellposition::printBenutzerdefinierteFelder__
im Loopitemteil vor <!--spmacro:enditem--> einfügen.

10) DB neu anlegen (lokal und online)

Wenn alles korrekt funktioniert noch die HTML-Teile in den Scrips an Ihre Seite anpassen.

P.S.: Wie man die den Verkauf von Meterware einbaut, ist hier nachzulesen


mfG
dobra