Know How für VirtueMart 1.1.x
Know How für VirtueMart 1.1.x
- Details
Hierfür relevante Scripte und Funktionen:
basket_b2b_html.php | basket/ | Templatescript, welches die Ausgabe des änderbaren Warenkorbes layoutet. |
ro_basket_b2b_html.php | basket/ | Adäquates Templatescript, welches die Ausgabe des Read-Only-Warenkorbes layoutet. |
basket.php | html/ | Steuerscript, welches die Daten für die Warenkorb-Templates organisiert und dem Template bereitstellt. |
ps_checkout.php | classes/ | Klassen- und Funktionsbibliothek für den Warenkorb |
standard_shipping.php |
classes/
shipping/
|
Eine der Shipping-Module, welches als Standard-Versand-Variante geladen wird. Das Objekt _SHIPPING in ps_checkout.php basiert auf diese hier definierte Objektklasse ($this->_SHIPPING = new $filename()) und seiner wichtigen Funktionen wie z.B. die get_tax_rate()
|
jos_vm_shipping_rate | MySQL | Enthält die Kosten und den MwSt.-Satz für die Versandarten sowie Gebietsangaben und Gewichtsbereiche. |
jos_vm_tax_rate | MySQL | Enthält die konkreten Prozentangaben für die MwSt.-Sätze. |
Fehlerursache 1 - in standard_shipping.php
if ($state) {
$q .= " AND tax_state = '" . $state . "'";
}
if( !empty($state)) {
$q .= " AND (tax_state='$state' OR tax_state=' $state ' OR tax_state='-')";
}
Fehlerursache 2 - in ps_checkout.php
else { $order_shipping = $db->f("order_shipping"); $order_shipping_tax = $db->f("order_shipping_tax"); $order_tax = $db->f("order_tax"); }
else { $order_shipping = $db->f("order_shipping"); $order_shipping_tax = $db->f("order_shipping_tax"); $order_tax = $db->f("order_tax") + $order_shipping_tax;
}
- Details
Relevante Scripte und Ihre Bedeutung:
ps_checkout.php | class/ |
Hier werden die Daten für den Checkout-Vorgang den checkout-Templates bereitgestellt. Nutzt dabei die Shipping-Classenbibliotheken abhängig vom Versandmodul, also z.B. die standard_shipping.php zum Erstellen eines Standard-Shipping-Objektes - instanziiert als Objekt $_SHIPPING gleichlautend wie der relevante Shipping-Modul-Dateiname (z.B. standard_shipping.php).
calc_order_tax() - Ermitteln der Gesamtsteuern für die Bestellung
calc_order_shipping(&$d) - Kleine Funktion, die nur unterscheidet, ob Preise inkl. MwSt angezeigt werden sollen oder nicht und währungsabhängig konvertiert sonst aber die Versandkosten und Versandsteuern nur über die Objektfunktionen $_SHIPPING->get_rate() und $_SHIPPING->get_tax_rate() ermittelt.
calc_order_shipping_tax() - Gibt nur den Tax-Wert zurück der in calc_order_shipping() ermittelt und im Array-Eintrag $d['shipping_tax'] abgelegt wird.
|
ps_shipping.php
|
class/ | Grundsätzliche Klasse zum Steuern der Verkostenermittlung |
standard_shipping.php
standard_shipping.ini |
class/
shipping/
|
Spezial-Klasse, die für das Standard-Shipping-Modul verwendet wird. Sie erzeugt u.a. die Ausgabe der Versandartenliste zur Auswahl durch den Nutzer.
Neben dieser gibt es im gleichen Verzeichnis viele weitere. In ihr werden diverse Funktion bereitgestellt, z.B. die get_rate() und get_tax_rate() u.w.
|
ps_shipping_method.php | classes/ | Funktionsbibliothek, die die Versandmethode ermittelt und dabei auch das Versandgewicht und die Umrechnung des Gewichtes in andere landesspezifische Gewichtseinheiten. |
- shipping_rate_id: Moduldateiname|Versender|Versandart|Versandkosten(=Summe aus Versand- und Verpackungskosten)|X?1
- Details
Pflichtfelder ergänzen oder aus Liste entfernen
- Details
1. Die Joomla-Such-Funktion - VM-Such-Plugin
- Details
- Details
Das Theme-Konzept von VirtueMart
VM bietet die Möglichkeit an, mehrere Themen für das Layout/Design zu verwalten. Für Eigenentwicklungen und Eingriffe in das Layout halte ich es für klug, das Standard-Theme zunächst zu dublizieren und dann im dublizierten Thema die Modifikationen vorzunehmen. So ist es leichter möglich bei auftretenden Fehlern/Störungen oder auch "Fehlentwicklungen" zum Standard-Thema zurückzuschalten und Fehlerquellen leichter aufzuspüren.
Das Default-Template (Theme) von VM dublizieren.
- Details
No Account Creation - Bestellung ohne Benuzteranmeldung
Für den Webshop marks-normalien.de sollte VirtueMart im Modus laufen, bei dem es nicht notwendig ist, sich als Benutzer anmelden zu müssen um eine Bestellung ausführen zu können. Dazu muss in der Komponente VirtueMart > Administration > Konfiguration > Reiter "Global" > Gruppe "Einstellungen zur Nutzerregistrierung" > User Registration Type > "No Account Creation" ausgewählt werden.
Fehlerhaftes Ajax-Verhalten
Allerdings tritt bei diesem Modus dann im Frontend ein kleines Problem auf. Wenn ein Produkt aufgerufen wird, welches sehr viele Artikel enthält, dann dauert das Laden der Seite entspr. lange. Sobald die Pulldownlist für die Artikel angezeigt wird, kann der User dort auswählen. Wurde der Artikel ausgewählt werden (durch Ajax) Inhalte auf dieser Produktseite akualisiert. Das dauert jedoch bei größeren Datenmengen etwas. Ist der User in dieser Zeit aber schneller und klickt schnell nach der Auswahl des Artikels auf den "Bestellen"-Button kommt es regelmäßig dazu dass das Einfügen dieses Artikels in den Warenkorb nicht sauber funktioniert.
- Details
Grundsätzliches
In der Datei /components/com_virtuemart/themes/default/theme.config.php stehen die Design-Vorgaben für das VM. Eingestellt werden diese über => Komponenten => VirtueMart => Konfiguration => Reiter _| Seite |_ im VM-Backend.
Üblicherweise gibt es eine Trennung in drei notwendige Scripte
- Die sogenanten Controllscripte (controll). Das sind die Hauptsteuerungsscripte die die Ausführungslogik für eine anzuzeigende Seite enthalten. Diese inkludieren die Datenabfrage, i.d.R. abhängig von den Nutzerinteraktionen und erzeugen anhand der aus der DB gelieferten Daten die Anzeigedaten die an die Template-Scripte gefetcht werden.
- Die Datenbankabfragescripte (model). Diese liefern dem Controlscripten die Daten aus der Datenbank. Hier werden die Queries für die Datenbankabfragen montiert.
- Die Anzeigescripte (views). Das sind unserse eigentlichen Templatescripte. Üblicherweise sollte Designanpassungen ausschließlich hier vorgenommen werden.
- Eine vierte wichtige Gruppe von Scripten, stellt in Bibliotheken diverse häufig und von verschiedenen Scripten benötigte Methoden zur Verfügung und entlasten somit den Programmieraufwand für die Controllerscripte.