<mediaDESIGN> St. Kraft + lens*flares
  • Joomla-Erweiterungen
  • Knowledgebase
  • Startseite

Sprache auswählen

  • Deutsch
  • English (UK)
Suche - Kategorien
Suche - Inhalt
  • FAQs für meine Kunden
  • Eigene Joomla-Erweiterungen
    • Update-Downloads
    • VM2/3-Category-Menu-Modul
  • Software-Design / Interface-Design
  • Referenzen / Auszeichnungen
  • Knowledgebase
    • Joomla und Erweiterungen (allg.)
    • Gantry 4 und 5 - Tipps, Know How
    • VirtueMart - Know How und Bugfixes
    • MySQL - Tipps
    • BreezingFoms / FacileForms
    • J!-Extensions selbst erstellen
    • JTL-Shop und -WaWi
  • Shop Warenkorb

Know How für VirtueMart 1.1.x

Know How für VirtueMart 1.1.x

VirtueMart: Mehrwertsteuer auf Versandkosten bei B2B

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 2 / 5

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

Dieser Fehler tritt erst auf mit der Version 1.1.4 von VM und war vorher nicht feststellbar.
Grund für den Fehler ist eine falsche IF-Behandlung für $state in der standard_shipping.php. Die Korrektur geht am einfachsten wie folgt: In Zeile ca. 182 f. innerhalb der Funktion get_tax_rate() folgendes ersetzen:
classes/shipping/standard_shipping.php get_tax_rate()
if ($state) {
$q .= " AND tax_state = '" . $state . "'";
}

ersetzen durch:
classes/shipping/standard_shipping.php get_tax_rate()
if( !empty($state)) { 
$q .= " AND (tax_state='$state' OR tax_state=' $state ' OR tax_state='-')";
}
 

Zum einen kommte es mitunter in der DB-Tabelle jos_vm_tax_rate zu unterschiedlichen Einträgen im Feld tax_state. Mal steht dort "-" und mal " - ". Damit funktionierte die ursprüngliche Vergleichsabfrage nicht immer zuverlässig, weshalb beide Varianten in den Query eingebaut wurden.
Zum anderen ist $state im Fall von Dtld. leer, weil es hier keine Staaten wie in Amerika gibt, die unterschiedliche MwSt-Sätzen haben könnten, weshalb dann hier eine Zuordnung notw. wäre. Unsere Bundesländer sind in diesem Fall bedeutungslos, weshalb ein "-" im Feld tax_state stehen sollte. Wenn aber $state leer ist sollte diese  Query-Erweiterung gar nicht erst stattfinden, weil sie dann zu 0.00 als Ergebnis führt. Deshalb wurde also !empty() hinzugefügt.

Fehlerursache 2 - in ps_checkout.php

Auch beim Versenden der Order-Mails wird die MwSt nfür Versand nicht eingerechnet. Die Ursache hierfür ist zu suchen im Script ps_checkout.php in der Funktion email_receipt(), denn hier wird die ermittelt $order_shipping_tax gar nicht erst zur $order_tax hinzuaddiert, und somit schon an die Mailtemplates falsch übergeben. Also folgende Zeile ca. 1830 im Else-Zweig:
classes/ps_checkout.php email_receipt()
else {
 $order_shipping = $db->f("order_shipping");
 $order_shipping_tax = $db->f("order_shipping_tax");
 $order_tax = $db->f("order_tax");
}
 

ersetzen durch:
classes/ps_checkout.php email_receipt()
else {
 $order_shipping = $db->f("order_shipping");
 $order_shipping_tax = $db->f("order_shipping_tax");
 $order_tax = $db->f("order_tax")  + $order_shipping_tax;
}  

VirtueMart: Versandkosten-MwSt.

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 1 / 5

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.
ps_checkout.php
Variablen in der ps_checkout.php:
Als get-Parameter und innerhalb von $vars und $d.
  • shipping_rate_id: Moduldateiname|Versender|Versandart|Versandkosten(=Summe aus Versand- und Verpackungskosten)|X?1

VirtueMart: Bestellabschluss Formular bearbeiten

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 1.5 / 5

Pflichtfelder ergänzen oder aus Liste entfernen

/administrator/components/com_virtuemart/html/checkout_register_form.php
suchen nach $required_fields und im Array auskommentieren
außerdem in
/administrator/components/com_virtuemart/classes/ps_shopper.php
 
in der Funktion validate_add()
in der Lieferadresse account.shipto.php
Angaben löschen wie:
 
in
../classes/ps_user_adress.php siehe: $valid = false;
$d["missing"] darf nur die Felder enthalten, die required sind.

Suche in Virtuemart

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 4.5 / 5

Um in VirtueMart nach Produkten zu suchen gibt es verschiedene Möglichkeiten.
 

1. Die Joomla-Such-Funktion - VM-Such-Plugin

 
Joomla selbst bietet schon eine Suchfunktion an. Diese ist jedoch nicht ohne weiteres in der Lage auch im Shop z.B. nach Produkten oder Kategorien zu suchen. Diese Suchefunktion (com_search / mod_search) benötigt dafür ein Plugin um in seine Suche auch VirtueMart einzubeziehen.
 
Ein solches Plugin ist verfügbar und ist i.d.R. im VM-Installationsbundle enthalten. Sollte nicht die Installation im kompletten Umfang erfolgt sein (alle mitgelieferten VM-Plugins und -Module) kann dieses Plugin per Joomla-Installer nachinstalliert werden.
 
Das Plugin nennt sich "Virtuemart Extended Search Plugin" und als Plugin-Name "vmxsearch.plugin". Das Installations-ZIP-Archiv heißt i.d.R. vmxsearch.plugin_1.1.3.j15.zip und ist Bestandteil des COMPLETE-PACKAGE von VirtueMart.

Weiterlesen: Suche in Virtuemart

VirtueMart: Produkte mit Mengerabatt-Staffel

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 3 / 5

Um in Virtuemart Produkte mit unterschiedlichen Preisen je nach Abnahmemenge anzulegen (Mengenrabatt-Staffel) geht man wie folgt vor.
 
Zunächst muss das Produkt ganz normal angelegt und abschließende gespeichert werden. Dann ruft man das Produkt erneut auf. In der Icon-Zeile oben rechts erscheinen nun ein paar neue Icons, u.a. eines unterschrieben mit "Preise auflisten". Davon nicht beirren lassen, dass das Icon gegraut ist. Es ist trotzdem anklickbar, was man beim Mouse-Over schon vermutet.
 
Hier erhält man jetzt eine Liste der schon verfügbaren Staffelpreise. Immer wird schon der -default-Preis eingetragen sein, der quasi bis jetzt für 1 Stück bis unendlich gilt. Nun kann man diesen auswählen und im erscheinenden Dialog den Anfangswert auf 1 setzen und den Endwert auf 9. So wird's gespeichert.
 
Zurück in der Liste wählt man nun den Button "+Neu" um einen neuen Staffelpreis hinzuzufügen. Hier wird dann als Startpreis z.B. 10 und Endpreis z.B. 50 eingegben und wieder gespeichert.
 
So ließen sich viele weitere Preise einsetzen.

VirtueMart: Design-Templates (Theme) verwenden

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 1 / 5

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.

Um das Layout reversibel ändern zu können wurde das Verzeichnis joomlapfad\components\com_virtuemart\themes\default\ mit allen seinen Unterverzeichnisse kopiert nach joomlapfad\components\com_virtuemart\themes\meinThema\. In diesem Verzeichnis liegen nun alle Layout-relevanten Dateien für VM einschließlich der browse-pages (Auswahl-Seiten) und den flypages (Produkt-Detailansicht-Seiten).
In der VirtueMart-Componenten-Konfiguration unter dem Tab-Reiter: „Seite“ im Bereich: „Layout“ kann dann das entspr. Thema wie in unserem Beispiel „meineThema“ statt „default“ ausgewählt werden.

VirtueMart 1.1: Ajax und No Account Creation

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 2 / 5

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.

Weiterlesen: VirtueMart 1.1: Ajax und No Account Creation

VirtueMart: Design-Anpassungen

Details
Zuletzt aktualisiert: 11. April 2018

Bewertung: 4 / 5

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.

Weiterlesen: VirtueMart: Design-Anpassungen

Seite 2 von 2

  • 1
  • 2
<mediaDESIGN> St. Kraft + lens*flares
© St. Kraft <mediaDESIGN> + lens*flares 1996 - 2025
Verantwortlich für den Inhalt nach § 5 TMG und § 55 Abs. 2 RStV
  • Impressum
  • Datenschutzerklärung
  • Seitenübersicht
Back to top