VirtueMart - Know How und Bugfixes
VirtueMart Admin
Infos zum Installieren/Einrichten/Anpassen von VirtueMart für Shop-Administratoren
- Details
Know-How-Sammlung für die Anpassung des Layoutes und der inhaltlichen Ausgaben von Rechnungen nach eigenen Bedürfnissen in Virtuemart 3.x.
Die Templates
Sämtliche Templates/Vorlagen für die Erstellung der Rechnungen liegen im Ordner components/com_virtuemart/views/invoice/tmpl/. Von hieraus können Scripte hergenommen und als Overrides in das eigene Template-Verzeichnis abgelegt werden, um nicht die Virtuemart-Core-Scripte modifizieren zu müssen, denn hier bestünde bekanntlich immer die Gefahr, dass dort vorgenommene Anpassungen bei nächsten Updates überschrieben werden würden.
Im o.g. Ordner befinden sich 3 Datei-Hauptgruppen von Vorlagen, die jeweils einen unterschiedlichen Präfix haben:
- ohne Präfix sind die Templates die für die PDF-Erzeugungen relevant sind
- der Präfix mail_html erzeugt die html-Mails
- der Präfix raw_html erzeugt die RAW-Texte-Inhalte in der Mail, die man in der Regel kaum zu Gesicht bekommt und deshalb bei Anpassungen gern vergessen werden.
Dann gibt es jeweils diverse Sub-Template wie z.B. order, items, vendor etc. Diese Sub-Templates können jeweils durch Unteraufrufen eingebunden werden. Wenn man sich z.B. im PDF-invoice-Template befindet (invoice.php) kann mit $this->loadTemplate('items') das Templatescript invoice_items.php eingebunden werden. Auf gleiche Weise kann man sich seine eigenen Schnippsel erstellen und inkludieren.
Ab und zu muss man bei der Templatebezeichnung aufpassen, denn diese sind zwischen den o.g. Templategruppen nicht immer identisch. Während z.B. die Produktzeilen beim PDF invoice_items.php heißt, wird bei den HTML-Mails der Dateiname mail_html_pricelist.php verwendet. Nicht ganz konsequent.
Weiterlesen: Virtuemart Anpassung Rechnungsinhalte und Layout
- Details
Problembeschreibung
Virtuemart bietet in der Produkt-Detail-Seite einen Button mit einem Link zu einem Formular, über welches der Seitennutzer eine Frage zum Produkt stellen kann. Vielen Shopbetreibern ist dieses Formular mit seinen angebotenen Feldern zu dürftig. Es fehlen ggf. wichtige Felder um mit dem Kunden in Kontakt treten zu können. Nur die E-Mail-Adresse ist einfach zu wenig. Deshalb trat ein Kunde mit der Bitte an mich heran, diese Formular um die Felder Straße-und-Hausnummer, PLZ-Ort, Telefon und Betreff zu erweitern. Zunächst hatte ich befürchtet, dass man dazu Core-Scripte modifizieren müsste. Jedoch stellte sich heraus, dass die Lösung zum einen recht einfach ist, und zum anderen keine Core-Scripte betreffen muss. Alles gelingt durch Erzeugen von Template-Override-Scripten im einen Joomla-Template. Diese Beitrag beschreibt den Weg zur Lösung.
Lösung in drei Schritten
Natürlich wäre es vom sauberen Stil her notwendig, speziell das Abholen der gesendeten Formularinhalte über das Control-Script components/com_virtuemart/views/askquestion/view.html.php zu realisieren. Dort gehört die Request-Abfrage der Feldinhalte und das Bereitstellen der Inhalte für die Mail-Sende-Aktion eigentlich hin. Nur, das ist eben ein Core-Script und nicht über das Overriding eingebunden. Deshalb sollte man eine Modifikation dort vermeiden. Betroffen sind sind schließlich drei PHP-Template-Scripte und und eine paar CSS-Styles, die man in die custom.css einfügen kann.
Weiterlesen: Das Formular "Fragen zum Produkt" in Virtuemart um Felder erweitern
- Details
Aufgabenstellung / Zielsetzung / Problembeschreibung
Wie benenne ich Bilddatein im VirtueMart um, damit diese SEO-friendly und "sauber" also mit Keywords, ohne Umlaute und Unterschtriche, Sonderzeichen oder Ähnliches sind.
Am sinnvollsten ist es, beim erstmaligen Hochladen von Bilddatein bereits auf solche Dinge zu achten.
Folgende Probleme treten womöglich auf: Wenn man ein Bild per FTP auf dem Server umbennen oder löschen ist dieses noch nicht in VirtueMart umbenannt bzw. gelöscht. Problematisch: andersrum allerdings auch nicht! (Auch wenn eine Datei in VirtueMart umbennt oder löscht, ist diese trotzdem noch auf dem Server)
Weiterlesen: Vorgehensweise beim Umbenennen von Bildern in Virtuemart
- Details
Zielstellung / Aufgabe
Lt. einer Aufgabenstellung eines Kunden sollten für Virtuemart in Bezug auf die Verfügbarkeitsanzeige von Produkte drei Aufgabenstellungen erreicht werden:
- Die Anzeige der Verfügbarkeiten in VM erfolgt standardmäßig per vordefinierte Grafiken. Diese liegen alle in einem Verzeichnis und daraus wird im Backend-Produkt-Editor eine Pulldown-Auswahlliste erzeugt. Nun kann man eine dieser Grafiken auswählen und diese wird mit ihrem Dateinamen in das Verfügbarkeitsfeld eingetragen und gespeichert. Alternativ kann man auch in das Verfügbarkeitsfeld einen beliebigen Text schreiben. Nachteil, egal ob Text oder Grafik, es findet keine Übersetzung in die jeweilige Sprache statt. Die Grafiken sind von VM alle in engl. erstellt. 1. Aufgabenstellung war, dass die Anzeige sprachkonform erfolgt.
- Neben den vorhandenen Verfügbarkeitsangaben sollten weitere mgl. sein, so z.B. eine, die die Aussage zulässt, dass ein Produkt vom Hersteller nicht mehr länger angeboten/produziert wird.
- Abhängig vom Inhalt der Verfügbarkeitsangabe soll ein mehr oder weniger auffälliger Style zur Anzeige genutzt werden. Um z.B. sicher zu verhindern, dass ein Kunde ein Produkt bestellt, welches aktuell oder gar nicht mehr verfügbar ist, soll die Nicht-Verfügbarkeit mit weißem Text auf einem roten Block angezeigt werden während andere Verfügbarkeiten anders z.B. grün ausgezeichnet werden.
Weiterlesen: Virtuemart: Sprachabhängige Verfügbarkeitsanzeige, fallabhängiges Stylen und weitere...
- Details
Zielstellung / Problembeschreibung
Virtuemart 3 arbeitet zwar mit dem Konzept der Joomla-Template-Overrides, speziell was die Shop-Scripte angebetrifft, jedoch tut es das nicht konsequent. Eben z.B. nicht für die Verfügbarkeitsgrafiken (availability-images). Wenn man sich das verantwortliche Script components/com_virtuemart/sublayouts/stockhandle.php dazu mal anschaut, wird klar, dass hierin beim Suchen der Grafiken fest auf das Verzeichnis components/com_virtuemart/assets/images/availability/ zugegriffen wird. Gleiches trifft hier am Rand bemerkt auch zu für die Rating-Grafiken. D.h. Wenn einem die Standardgrafiken nicht gefallen (diese sind ja auch wirklich uralt-unschick), dann ist es nicht sehr sinnvoll, diese im o.g.Originalverzeichnis zu überschreiben. Beim nächsten VM-Update sind dann nämlich die Orgiginaldateien wieder da. Wir müssen diese Grafiken also unbebingt an einen Ort ablegen, wo diese nicht überschrieben werden. Damit VM aber in diesem Verzeichnis sucht, müssen wir dem verantwortlichen Script diesen Ort mitteilen.
Lösung im Detail
Nachfolgend beschreibe ich, wie das zu lösen ist:
- Details
Versandkostenanzeige in Produktdatailseiten per Datenbankabfrage unterdrücken:
UPDATE 'dbName'.'prefix_virtuemart_shipmentmethods'
SET 'shipment_params' = replace('shipment_params','|show_on_pdetails="1"|','|show_on_pdetails="0"|')
WHERE 'mlj3_virtuemart_shipmentmethods'.'shipment_params' like '%|show_on_pdetails="1"|%'
- Details
Etwas Grundwissen zur convertECB - Währungsumrechnung in VirtueMart
Für die Währungsumrechnung nutzt VirtueMart 2 und 3 die tagesaktuellen Wechselkurse der ECB und holt sich diese von dieser Adresse: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml. Achtung! Wer noch alte Shop-Scripte nutzt, die Downloadadresse für die ECB-XML-Datei hat sich seit Oktober 2018 endgültig geändert auf das SSL-Protokoll, muss also mit https:// beginnen!
Hierfür verwendet VirtueMart üblicherweise das ein Admin-Plugin-Script administrator/components/com_virtuemart/plugins/currency_converter/convertECB.php, wenn nicht in der VM-Configuration ein anderes Währungsumrechnungs-Script (currency-converter) bestimmt ist. Dieses Script erzeugt eine Klasse: convertECB.
In diesem Convert-Script gibt es immer auch ein Prüfung, wann zuletzt die o.g. Wechselkurzdatei geladen wurde. Spätestens nach 365 Tage erfolge eine Warnung.
Die XML-Datei wird i.d.R. 4x täglich geladen, also alle 6 Stunden. Das wird durch diese Zeile in der convertECB.php erreicht: $cache->setLifeTime(360);. Ein anderer Wert könnt hier gesetzt werden. Die geladene XML-Datei wird in den Cache gelegt (liegt dann also überlicherweise, wenn die Schreirechte vorhanden sind im Pfad /cache/ bzw. im Verzeichnis /media/ und steht damit für die Währungsumrechnung zur Verfügung. Im cache-Verzeichnis gibt es dann jeweils ein Unterordner, der genauso heißt wie das contver-Script also z.B. /convertECB/. In diesem liegen dann die gecachten Daten im JSON-Format. Wenn alles korrekt geladen wurde, dann sollte so eine Cache-Datei ca. 850kb haben.
Weiterlesen: VirtueMart 3 - Währungsumrechnung Hintergrundinfos
- Details
Problembeschreibung
In VirtueMart gibt es unter den Browse-Pages die Möglichkeit über Pull-Down-Listen die Anzahl der zu zeigenden Produkte pro Seite einzustellen. Das ist die Konfigurationsmöglichkeit, die dem Seitenbesucher angebot wird. Wenn man diese Pulldownliste und das Standardverhalten verändern möchte, kann das kompliziert werden. Dafür gibt es verschiedene Gründe:
- Die Einstellungen sind nicht durchweg konfigurierbar, sondern teilweise hart in Scripten kodiert.
- Die Werte kommen nicht nur aus der Komponente VirtueMart, sondern VM bezieht diese teilweise aus globalen Joomla-Parametern.
Weiterlesen: Limit Standard und Schrittweite für VM 1.1.x ändern
- Details
Wenn nach einem Update oder einer Installation von VirtueMart das VirtueMart-Menü im Backend nicht vorhanden ist, liegt das häufig daran, dass in der Datentabelle für die Menü-Einträge (Verwaltet in der Tabelle #_menu) die Componenten-Id component_id bei der Erzeugung der Einträge nicht korrekt gesetzt wurde. Dann sollte man in der Tabelle #_extensions schauen, welche ID die Komponente VirtueMart erhalten hat - i.d.R. wird dass eine ID > 10000 sein. Mit dieser ID führt man dann folgende SQL-Anweisung z.B. in phpMyAdmin aus:
UPDATE `#_menu` SET `component_id` = '10000' WHERE `component_id` = 10036;
Der Grund warum es vermutlich bei der Installation von VM zu diesem Fehler kommt, ist dass vor der Installation schon ein Virtuemart-Plugin für die Erweiterung xMap gibt. Beim Versuch die Komponenten-ID für VM zu ermitteln, findet der VM-Installer irrtümlich die ID dieses Plugins und verwendet dann diese fälschlich.
Weiterlesen: VirtueMart-Menü oder VirtueMart-Menüelement im Joomla-Backendmenü nicht vorhanden
- Details
Problembeschreibung
Hin und wieder hat man die Situation, dass man ein Joomla-Projekt komplett offline entwickeln möchte, was ich eigentlich prinzipiell mache. Wenn man dann gerade keine Online-Verbindung hat, weil z.B. das LTE-Netz mal keine Daten liefert, hat man ein Problem in Joomla zu administrieren. Komponenten von Joomla, wie z.B. VirtueMart 2 benötigen im Backend jQuery und laden diese JavaScript-Bibliothek bei google. Wenn diese nun also nicht geladen werden kann, dann läßt sich VirtueMart nicht administrieren.
Problemlösung
Das Problem kann also nur gelöst werden, wenn man die jQuery-Bibliotheken lokal lädt. Während man für das Frontend dies ganz einfach konfigurieren kann, gibt es dies fürs Backend nicht - das will sich immer, hart kodiert bei google bedienen.
- Details
Grunddaten zu den enthaltenen Plugins
Für ein Kundenprojekt suchte ich eine Möglichkeit das Kunden zum Produkt eigene Dateien uploaden können. Wichtig war mir, dass dieser Upload nicht erst im Checkout erfolgt, sondern schon beim Produkt und bevor dieses in den Warenkorb gelegt wird. Ich denke, dass die Checkout-Variante viele Kunden verwirrt, wenn dieser Vorgang erst hier erfolgt, also erst viel später. Ohne Zweifel hat auch die Checkout-Variante ihre Vorteile und Berechtigung. Ebenfalls war für mein Projekt von Bedeutung, dass es mit RuposTel's One-Page-Checkout-Komponente zusammen funktioniert.
Diese hier beschriebene Erweiterung von www.cmsmart.net ist ein Archiv mit zwei Plugins, die jeweils einzeln installiert werden müssen.
In diesem Beitrag möchte ich kurz einige Erkenntnisse zusammenstellen.
- Details
Bis zur Version 2.0.24 von VirtueMart gibt es immer mal wieder Fehlverhalten bei den Limit-Boxen (Auswahl wie viele Produkte pro Seite angezeigt werden sollen). VirtueMart stellt eine recht umfangreiche Konfigurationsmöglichkeit diesbezüglich zur Verfügung. Deshalb muss man mit etwas Mühe zunächst das Zusammenspiel dieser Parameter verstehen lernen. Aber auch wenn man das geschafft hat, muss man feststellen, dass mache Konstellationen knirschen.
Wichtig zum Verständnis:
- In der Shop-Konfiguration > im Registerreiter Stilvorlagen gibt es mehrere Optionen über die man das Verhalten der Listen global einstellen kann.
- Dann gibt es ähnliche Optionen in jeder Kategorie, welche die globalen Einstellungen außer Kraft setzen und statt dessen diese verwendet werden.
Hier mal eine "fast" funktionierendes Konstellation, die darauf abzielt zu bewirken, dass die schlichtweg die globalen Einstellungen auch tatsächlich in allen Kategorien verwendet wird (diese Einstellungen sind natürlich etwas abhängig von den Einstellungen für in der Kategorie beim Auflisten der Produkte):
Weiterlesen: Limit-Select-List in VM funktionierend konfigurieren
- Details
Problembeschreibung / Zielsetzung
In diesem Beitrag geht es um die Einstellungen in VirtueMart 2.x wie viele Produkt pro Kategorieseite angezeigt werden sollen.
Eigentlich denkt man, das sollte kein Problem sein. Praktisch ist es jedoch etwas verwirrend, denn das was konfigurierbar scheint, wirkt sich nicht wie erhofft aus. Ich konnte mit diesem Wert machen was ich wollte, die Anzeig ließ sich nicht ändern. In meinem Template hatte ich auch die Auswahl "LimitBox" abgeschalten, so dass auch hierüber keine Modifikation möglich war, der Shop also zwangsläufig immer mit dem Standardwert arbeiten sollte.
Beschreibung des Verhaltens und einer einfachen Problemlösung
Das nachfolgend beschriebene Verhalten bezieht sich auf die VirtueMart-Versionen bis 2.0.22. Es kann gut sein, dass es in Folgeversionen korrigiert oder geändert sein könnte.
Weiterlesen: VirtueMart 2: Pagination Limit-Select-Box korrekte Funktion und Konfiguration
- Wenn Erfolgsmeldungen in VirtueMart verschwinden
- Erstellung von Produkten für den VisualProductConfigurator für VM2
- Virtuemart 2: Verfügbarkeit von Produkten anzeigen/verwalten
- Pathway / Breadcrumbs in VirtueMart 1.1.x
- Mehrsprachigkeit von VM 2 Custom-Fields
- Internas zu Rabatt-Rechenregeln in VirtueMart 2 - Erweiterung herstellerabhängiger Rabatt
- Die Views-Scripte von VirtueMart 2
- VirtueMart 2: Kleine Modifikation in der FancyBox-AddToCart-Meldung
- Die Konfigurationsparameter in der VirtueMart-Configs-Tabelle
- Rücksprung zur Ausgangsseite nach Warenkorb-Löschen in VirtueMart 1.1.x
- Virtuemart 2: Nutzerfelder mit Bestandskontrolle
- Virtuemart 2: Nutzerfelder mit Warenkorb-Attribut / Child-Produkte
- Virtuemart 2: Nutzerfelder ohne Warenkorb-Attribut / Produktvarianten / mit Warenkorb-Attribut / Child-Produkte
- Selbsterstellte Felder in VM 2.x - Produkte mit Verpackungseinheiten
- Selbsterstellte Felder in VM 2.x - Textfelder mit Zeichenberechnung
- Vorausgewählte Multicheckbox-Felder in der VirtueMart-Benutzerregistrierung
- Verwendung von reply-to als Lösung für Mail-Relay-Server-Problem in VirtueMart 1.x
- Dateianhänge an VirtueMart-Bestellmails
- Vorschaubildgröße in VirtueMart 2 nachträglich anpassen
- Wie erstellt man eigene VM-Layouts