VirtueMart - Know How und Bugfixes
VirtueMart Admin
Infos zum Installieren/Einrichten/Anpassen von VirtueMart für Shop-Administratoren
- Details
Problembeschreibung
Leider gibt es keine direkte und komfortable Möglichkeit PDF-Dokumente direkt zu Kategorienbeschreibungen hinzuzufügen. Die Komponente "Attachements" arbeitet nicht mit Virtuemart zusammen. Über den Registerreiter "Bilder" in der Kategorie-Administration lassen sich nur für VM bekannte Bildformate einbinden. PDFs werden zwar hochgeladen, aber es wird versucht aus ihnen eine Thumbnail zu erzeugen. Die Datei landet dann ohne Erweiterung im VM-Category-Bilderverzeichnis und in der Datenbank. Hier wären Eingriffe notw. Diese Aussage bezieht sich auf alle getesteten VM Versionen bis einschließlich 1.1.9.
Weiterlesen: Einbinden von PDF-Dokumenten in Produkten oder Kategorien
- Details
Problembeschreibung
Wer an sein Joomla-Site-Template bestimmte Ansprüche hegt, kommt mitunter nicht drum herum über z-index die Layerinhalte nach Notwendigkeiten zu schichten. Damit bekommt VM aber Probleme, denn die Meldungsbox, das ein Produkt in den Warenkorb hinzugefügt wurde, kann dann mitunter von anderen Seitenelement teilweise oder gar vollständig überdeckt sein. Dieser Workaround zeigt, wie man das Problem beseitigt.
Grundlagen und prinzipielle Fehlerbehebung
Zunächst sollte man wissen, das die von VM erzeugte Meldung in einem modalen DIV-Bereich eingeblendet wird. Virtuemart verwendet dazu die mootools.js-Bibliothek welche eingebunden wird durch moopromt.js. In Virtuemart muss das overlaying in der Administration eingeschalten sein, damit das moopromt-Script hierfür verwendet wird. Diese Verfahrensweise mit dem modalen Meldungsdialog ist benutzerfreundlicher, weil dann nicht mit jedem hinzugefügten Artikel die Warenkorbseite aufgerufen wird. Statt dessen erfolgt die Befüllung per Ajax, der user erhält die Meldung und bleibt aber auf der Seite, die er vorher aufgerufen hatte.
Weiterlesen: VirtueMart 1.1.x: AddToCart-Meldungsbox verdeckt
- Details
Problembeschreibung / Fehler
Es ist schon eigenartig mit Virtuemart. Auch dieser hier beschriebene Fehler existiert seit mehreren Versionen, einschließlich der Version 1.1.9. Worum geht's:
Auf den Produkt-Detailseiten (Flypages) wird ein Link angeboten zum Versenden einer "Weiterempfehlen-Mail" (recommend-mail). Wird das Formular ausgefüllt, und abgesendet, wird die Mail auch korrekt versendet - nur im Text fehlt der Link zur HomePage - erst recht zum Produkt das ich empfehlen will. Wem nützt eine solche Mail???
Nun ich vermute, der Grund warum dieser Bug seit einigen Versionen von VM noch nicht behoben ist, ist der, dass hierüber noch ein Disput geführt wird, ob es wohl besser wäre dieses Feature über das Joomla-Mainframe zu realisieren, oder durch VM selbst. Ziel sollte schon sein, dass VM möglichst viele J!-Werkzeuge verwendet ... Aber das kann noch dauern und deshalb wollen wir den Fehler wenigstens vorübergehend beheben:
Weiterlesen: VirtueMart: "Produkt weiter empfehlen" fehlt der Produktlink in E-Mail
- Details
Fehlerbeschreibung
Schon in früheren Versionen mind. 1.1.3 und aktuell einschließlich Version 1.1.9 tritt bei VirtueMart nach wie vor ein Fehler auf, sobald man über die Produkt-Page-Navigation (vorheriges / nächstes Produkt) oberhalb der Produktdetailanzeige klickt. Der Fehler äußert sich in drei Symptomen:
- Auffällig ist besonders, dass im Shopmenü die vorher gewählte, nun aktuelle Kategorie plözlich nicht mehr als aktiv angezeigt wird - abhängig von Menütyp (muss also bei reinen JavaScriptMenüs nicht auftreten - ich nutze eine Art Mod-Mainmenü für die Kategorien).
- Wenn man z.B. einer Kategorie eine eigenen oder von der Standard flypage abweichende Flypage zugewiesen hat, wird diese plötzlich nicht mehr verwendet, das Design wechselt unerwartet und unerwünscht zur Standard-Flypage.
- Arbeitet man mit Child-Artikeln wird bei Auswahl eines Childartikels auf der Produktdetailseite plötzlich ebenfalls nicht mehr die korrekte Flypage zu Anzeige verwendet.
Fraglich ist, warum die Entwickler diesen Fehler seit vielen Versionen nicht korrigieren.
Weiterlesen: VirtueMart: Fehlverhalten bei Produkt-Pagenavigation und aktives Menüelement
- Details
Problembeschreibung
Bei einem Kundenprojekt zeigte sich in VirtueMart im Bereich Produktpflege beim Versuch Kategorien zuzuweisen eine abnormes Verhalten dieses Formularelementes. Üblicherweise wird man hier im VM-Backoffice für die Kategoriezuweisung eine einfach Multiselektliste vorfinden. Erst wenn man sehr viele Kategorien hat, was verständlicherweise nur bei weniges Shops überhaupt zutrifft, ändert sich der Typ dieses Formularelementes. Statt o.g. Multiselektliste wird es nun zu einem intelligenten Suchfeld. Der Grund warum diese von den Entwicklern so gehandhabt wird ist klar. Die Suche nach Katerorien soll im Backoffice schneller gehen. Bei vielen Kategorien, wäre die Multiselektliste einfach zu umfangreich und damit langsam.
Weiterlesen: Virtuemart: Admin - Product-Details - Kategorieauswahl Fehlverhalten
- 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.