ShopNix

Tagebuch eines Shops auf Basis von osCommerce

Posts Tagged ‘osCommerce

Artikel Import aus xtCommerce und CAO nach OpenERP

with 3 comments


Ein Kunde will von seinem alten Warenwirtschaftssystem CAO auf OpenERP umsteigen. Natürlich will er seine Artikel nicht noch einmal von Hand eintupfen.

Dabei stellt sich das Problem, daß er nur die aktiven Artikel aus dem Shop übernehmen will, wesentliche Daten jedoch nur in CAO vorhanden sind.

Deshalb werde ich die Artikel aus dem Shop holen und nach OpenERP importieren. Anschließend schiebe ich einzelne Attribute aus CAO nach.

Die Kunden sollen komplett aus CAO WaWi übernommen werden.

Direkt in die Datenbank von OpenERP zu schreiben ist zwar möglich, aber es bietet sich an, die XML-RPC-Schnittstelle des ERP-Systems zu nutzen. Damit soll sichergestellt werden, daß alle notwendigen Referenzen und Abhängigkeiten erfüllt werden.

Grundlage ist das Beispiel aus der Dokumentation.

Die Methode funktioniert an sich sehr gut. Die Ermittlung der erforderlichen Attribute kann über den Debug-Modus des OpenERP-Clients erfolgen. Dazu wird der Client im Terminal mit dem entsprechenden Parameter gestartet und die Ausgabe auf eine Datei umgeleitet.
./openerp-client.py -l debug_rpc &> ~/debug_rpc.txt

Ein Problem, das ich nicht lösen konnte: Der Primärschlüssel wird ignoriert. Im Allgemeinen ist das nicht kritisch, lediglich für den Kategoriebaum kann ich die Daten nicht übernehmen.

Sollte irgendjemand in der großen weiten Welt eine Lösung haben, möge er die Kommentarfunktion nutzen!

Advertisements

Written by spessart

27. August 2011 at 09:09

Zeichensätze im Shop

leave a comment »


Inzwischen ist der internationale Zeichensatz utf8 schon fast Standard. Wer Shops in verschiedenen Sprachen betreut, wird daher über kurz oder lang darauf umstellen um Konvertierungen zwischen den verschiedenen Zeichensätzen künftig zu vermeiden.

MySQL bietet dazu eine Vielzahl von Parametern, deren Auswirkungen bedacht sein wollen. Die Parametern sind in Systemvariablen abgelegt und können vom Client abgefragt werden.

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

Diese Parameter können teilweise auch vom Client per SQL geändert werden und ihr Zusammenspiel ist nicht nur für die Ausgabe wesentlich, sondern auch für die Sortierfolge oder die Suche nach Strings mit dem Schlüsselwort LIKE. In Abhängigkeit von den Einstellungen konvertiert MySQL ggfls. die Ausgabe. Hat man alles richtig gemacht, sieht nicht nur die Ausgabe sauber aus, sondern eine Suche nach einem Suchbegriff mit Umlaut bringt, unabhängig von der Groß- / Kleinschreibung, alle Ergebnisse.

Für meinen VARIO-Helicopter Shop zog ich zunächst einen Dump und kodierte ihn mit dem Linux-Tool recode von iso-8859-15 nach utf8 um. Anschließend fügte ich folgende Zeilen ein:

ALTER DATABASE `3_vario-es` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
set names 'utf8';
set character set 'utf8';

und las den Dump in die Datenbank ein. Um auch die Clientverbindung zum Shop richtig einzustellen, fügte ich anschließend in shop/includes/functions/database.php ab Zeile 22 zwei zusätzliche Zeilen ein:

    if ($$link) {
    	mysql_select_db($database);
// ShopNix.b 
    	mysql_query("set names 'utf8'");
    	mysql_query("set character set 'utf8'");
// ShopNix.e
    }

Aufpassen: Die Funktion muß natürlich auch im Admin-Bereich angepasst werden!

Die sprachabhängigen Dateien habe ich ebenfalls mit recode umkodiert und in der jeweiligen Führungsdatei (z.B. german.php) die Konstanten für die Kodierung angepasst. Aufpassen: Der W3C-Standard will die Schreibweise „utf-8“ für die HTML-Header, MySQL braucht „utf8“!

Zum Umkodieren mit PHP5 muss (unter Debian) das Paket php5-recode installiert sein. Hier ein Beispiel des Funktionsaufrufs: mysql_real_escape_string(recode_string('ISO-8859-1..UTF-8', $row['categories_name'])) im Zusammenhang mit einem Transfer von der alten Datenbank mit ISO-8859-1 Kodierung zur aktuellen Datenbank mit UTF-8.

Written by spessart

11. November 2009 at 09:31

xt:Commerce vs osCommerce

leave a comment »


Das Shopsystem xt:Commerce ist ein Abkömmling oder Branch von osCommerce. Zwar widerspricht das System meiner Philosophie eines möglichst schlanken Systems, dafür sind einige nette Gimmicks enthalten, die sich meine Kunden wünschen.

Erste Erfahrungen zeigen, daß der Umstieg (für den Programmierer) nicht ganz einfach ist, und mit einiger Wahrscheinlichkeit für keinen Beteiligten allzu großen Vorteile bringt.

Das beginnt mit der in xt integrierten Template-Engine, die Applikation und Layout (oder Design) voneinander trennen soll. Das ist mit einigem Aufwand verbunden, aber nicht vollständig gelungen.

Weiteres in Kürze.

Written by spessart

16. September 2008 at 11:58

Veröffentlicht in osCommerce, xtCommerce

Tagged with , ,

Pseudo-Shops in osCommerce

leave a comment »


Ein Kunde wünscht verschiedene Bereiche für die unterschiedlichen Warengruppen seines Shops. Eine funktionale Änderung ist nicht erwünscht, die Warengruppen sollen nur optisch abgesetzt und die Kategorien sollen dadurch übersichtlicher werden. Als mögliche Lösung bietet sich an, die erste Kategorie-Ebene für diesen Zweck zu verwenden.

Prinzipiell gibt es dazu einige Contributions, z. B.:

http://www.oscommerce.com/community/contributions,1730
oder
http://www.oscommerce.com/community/contributions,2802

Wer sich schlau machen möchte, kann nach Multi-Shop, Multi-Store und Great Categories Ausschau halten. Unter diesen Suchbegriffen sollte sowohl im Forum als auch in den Contributions etwas zu finden sein.

Die Contributions sind mir nicht ganz geheuer, unter anderem deshalb, weil sie scheinbar seit länger Zeit nicht mehr bearbeitet wurden. Daher versuche ich eine eigene Lösung. Eine erste Suche über die Sourcen nach dem Begriff „categories_name“ ergibt, daß die SQL-Abfragen dazu nur an wenigen Stellen vorkommen.

includes/boxes/categories.php
includes/application_top.php
includes/functions/general.php
index.php

Das sollte zu schaffen sein, zumal index.php ohnehin noch zur Überarbeitung ansteht.

Nach längerer Sucherei ist das Problem mit sehr geringen Eingriffen zu lösen. Zuerst gibt es wieder einen Parameter in der Konfiguration, SNX_OPTION_PSEUDO_SHOPS kann die Werte ‚True‘ oder ‚False‘ annehmen.

Dann füge ich in includes/header.php eine zusätzliche Tabelle ein. Hier soll die erste Kategorieebene in Form von Karteireitern dargestellt werden. In includes/boxes/categories.php blende ich nun erste Kategorieebene aus, indem ich die Ausgabe der entsprechenden Zeilen unterdrücke.

Auf der Administrationsebene ändert sich nichts, da die Kategorien lediglich optisch anders angeordnet sind.

So ist mit einem Bruchteil des Codes der oben angeführten Contributions die Anforderung umgesetzt.

Written by spessart

3. September 2008 at 23:46

Infoboxen ein- und ausschalten

with 4 comments


Der osCommerce-Shop hat ein 3-spaltiges Layout. Die beiden äußeren Spalten sind von Infoboxen bevölkert.

  • Kategorien
  • Hersteller
  • Neue Produkte
  • Schnellsuche
  • Informationen
  • Warenkorb
  • Bestellübersicht
  • Herstellerinfo
  • Benachrichtigungen
  • Weiterempfehlungen
  • Angebote
  • Bewertungen
  • Sprachen
  • Währungen

Nicht alle diese Boxen sind gleichzeitig sichtbar. Das ist abhängig vom aktiven Programm, oder davon, ob der Kunde angemeldet ist oder nicht. Einige davon halte ich für überflüssig, andere werde ich noch einfügen. Deshalb möchte ich diese Boxen vom Backend aus ein- bzw. ausschalten können. Eigentlich nicht besonders schwierig, ich habe eine neue Gruppe zur Konfiguration hinzugefügt und für jede der Boxen (ausgenommen die Kategorien) einen Schalter eingefügt.

Produktbeschreibung in der Liste

leave a comment »


Der Standard des osCommerce Shops zeigt in der Produktliste nur den Namen des Produkts, die Beschreibung fehlt. Da die Inhalte der Produktliste dynamisch zusammengesetzt wird, ist der richtige Punkt für eine Änderung nicht leicht zu finden.

Meine Lösung besteht in einer kleinen Ergänzung in index.php und einer weiteren im Anzeigemodul modules/products_listing.php. Bei dieser Gelegenheit ändere ich auch die Formatierung. Suchmaschinen bewerten Überschriften höher als normalen Text. Deshalb setze ich den Produktnamen als Überschrift mit eigener Klasse im Stylesheet.

Written by spessart

26. Juli 2008 at 14:11

xSell: Cross Selling mit osCommerce

leave a comment »


Mit dem xSell-Modul können Zubehöre oder Verkaufsstücklisten zu beliebigen Artikeln angelegt werden. Im Shop werden diese Artikel dann unterhalb der Artikelbeschreibung und der Bestellbuttons in der Detailansicht des Artikels angezeigt.

Im Standard wird an dieser Stelle auch das Modul „Andere Kunden haben gekauft:“ (also_purchased.php) eingeblendet. Ich habe für diese Zwecke im Verwaltungsbereich eine neue Konfigurationsgruppe angelegt, in der solche Module ein- und ausgeschaltet werden können.

Die Contribution xSell enthält auch Componenten für das Backend, die ich vorläufig zurückstelle. Außerdem ist eventuell noch eine kleine Überarbeitung fällig, weil mir die Tabellenstruktur nicht behagt. Ich würde gern über die Indizes sicherstellen, daß keine Duplikate vorkommen können.

Beim Test im Shop je einen Artikel mit und ohne Produktoptionen kurz antesten. Für Artikel mit Optionen muß eine Weiterleitung auf den xSell-Artikel erfolgen. Nur so kann der Kunde seine Option wählen.

Written by spessart

24. Juli 2008 at 22:35