VirtueMart Admin

Infos zum Installieren/Einrichten/Anpassen von VirtueMart für Shop-Administratoren

Bewertung: 0 / 5

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

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.

 

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

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.

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

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)

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

Zielstellung / Aufgabe

Lt. einer Aufgabenstellung eines Kunden sollten für Virtuemart in Bezug auf die Verfügbarkeitsanzeige von Produkte drei Aufgabenstellungen erreicht werden:

  1. 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.
  2. 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.
  3. 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.

Bewertung: 4 / 5

Stern aktivStern aktivStern aktivStern aktivStern inaktiv

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.

Bewertung: 4 / 5

Stern aktivStern aktivStern aktivStern aktivStern inaktiv

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:

Bewertung: 3 / 5

Stern aktivStern aktivStern aktivStern inaktivStern inaktiv

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.

Bewertung: 2 / 5

Stern aktivStern aktivStern inaktivStern inaktivStern inaktiv

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"|%'

 

Bewertung: 3 / 5

Stern aktivStern aktivStern aktivStern inaktivStern inaktiv

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.

Bewertung: 1 / 5

Stern aktivStern inaktivStern inaktivStern inaktivStern inaktiv

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.

Bewertung: 1 / 5

Stern aktivStern inaktivStern inaktivStern inaktivStern inaktiv

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:

  1. In der Shop-Konfiguration > im Registerreiter Stilvorlagen gibt es mehrere Optionen über die man das Verhalten der Listen global einstellen kann.
  2. 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):

Bewertung: 3 / 5

Stern aktivStern aktivStern aktivStern inaktivStern inaktiv

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.

Bewertung: 1 / 5

Stern aktivStern inaktivStern inaktivStern inaktivStern inaktiv

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.

Unterkategorien