VirtueMart - Know How und Bugfixes

Die Views-Scripte von VirtueMart 2

Bewertung:  / 6
SchwachSuper 

Korrekte Initialisierung von VM im Shop-Frontend

Es ist ganz wichtig, dass VirtueMart 2 korrekt initialisiert und somit in das Joomla-Framework eingebunden wird. Leider ist das mit einer einfachen Installation von VirtueMart nicht gleich gegeben. VirtueMart ansich funktioniert dann zwar grundsäztlich, aber es gibt diverse Feature, speziell von anderen Joomla-Erweiterungen (z.B. Sitemaps, div. Module, Suchfunktionen usw.), die erst dann korrekt funktionieren. Bei der Initialisierung geht es im Kern darum, dass Joomla-Erweiterungen in der Lage sind VirtueMart zu finden, so dass deren Produkte und Kategorien gelesen werden können. Das geht zum einen nur dadurch, dass Virtuemart im Hauptmenü eingebunden ist und zum anderen dieser Menüeintrag vom richtigen Typ ist.

Konkret sieht es so aus, dass wir im Mainmenu eine Virtuemart-Komponenten-Eintrag einbinden der auf den Type Kategorie-Layout verweist. Ich möchte nicht beschwören, dass der Menüeintrag auch in ein anderes Menü erfolgen kann, aber ich bin mir sicher, dass es exakt dieser Menütyp sein muss. In der Typ-Auswahlliste steht er bezeichnet als Kategorie Layout. In der Liste der Menüeinträge eines Menü steht in der Spalte Menütyp dann VirtueMart » Kategorie Layout. Es sollte die unterste Shop-Kategorieebenen gewählt werden.

 

Bedeutung diverser VirtueMart 2 Template-Scripte

Nachfolgend eine Aufstellung der Views-Scripte von VirtueMart 2. Diese Scripte befinden sind alle in Unterverzeichnissen von components/com_virtuemart/views/. In den dortigen Unterverzeichnissen gibt es dann immer ein Verzeichnis /tmpl/ und den darin befindlichen üblicherweise default.php und/oder default_teiltemplate.php heißenden Scripten. Jedes dieser Scripte ist verantwortlich für die Darstellung eines Shopbereiches oder einer einzelnen Shopfunktion. Gegliedert sind diese zusätzlich für die Shopbereiche in Unterverzeichnisse.

Entspr. des MVC-Models, welches in Joomla! und VM 2 umgesetzt ist, sind das die Viewbestandteile der Komponente und unterstützen damit auch konsequent das Template-Overriding von J!. D.h., jedes hier vorhandenen Scripte kann zusammen mit seinem Unterpfad in das Verzeichnis templates/Ihr-Template/html/com_virtuemarte/ kopiert werden. Dort kann es nach eigenen Wünschen und Bedürfnissen modifiziert werden, ohne Angst haben zu müssen, dass ein späteres VM-Update diese Templatescritpe überschreibt. Nebenbei: Man könnte das Oberriding von Joomla auch ignorieren und statt dessen kann man für einige default.php-Scripte auch anders benannte Scripte im gleichen Verzeichnis ablegen. In der Shop-Konfiguration könnte man dann statt der default-Style diese anderes benannten Style-Scripte zuweisen. Das ist jedoch nicht ganz konsequent und die Struktur des Template-Overridings ist transparenter.



 

Leider erschließt sich bei der Menge an Templates die VM 2 benötigt nicht immer allein aus der Dateibezeichnung, wofür welches Templatescript verantwortlich ist. Eine Dokumentation dazu habe ich nicht gefunden, weshalb ich mir für meine tägl. Arbeit mit VM 2 diese Übersicht aufbaue. Diese Aufstellung ist folglich nicht vollständig, sondern wächst mit meinem Erkenntnisstand als Protokoll.

Pfad
Bereich
(entspr. view-Parameter)
Bedeutung
Bereich
Script
Datei
relevante URi-Parameter Bedeutung
Script
askquestion Produktanfragen      
cart Warenkorb  default_pricelist.php  

Ein typischer Fall von unglücklich gewähltem Dateinamen, denn dass Script macht mehr als nur und überhaupt Preise aufzulisten. Neben der Tatsache dass es Liste der Warenkorbeinträge einbettet, befinden sich in diesem Script auch:

  • Die Ausgaben bzw. Edit-Buttons für die Rechnungs- und Lieferadresse
  • Die Preise für Versandkosten und Zahlungsarten, aber auch im Fall, dessen, dass diese noch nicht ermittelt werden können, z.B. weil noch keine Adresse eingegeben wurde, dann auch die entspr. Hinweise und Links zu Adresseingabe.
categories Kategorien      
category Kategorien und Produkte der Kategorie default.php   Das ist das Haupttemplate zu Anzeige einer Kategorieseite. Es stellt sowohl die Unterkategorien der gewählte Startkategorie da als auch die Produkte in der Kategorie.
  Nur Unterkategorien einer Kategorie categories.php   Alternativ zum default.php kann dieses Template ausgewählt werden (entweder im Menü-Punkt des Menüs vom Typ Kategorie Layout, oder in der Kategorie-Konfiguration). Bei diesem Template werden nur die Unterkategorien ohne Produkte der angezeigt.
invoice Rechnung      
manufacturer Hersteller/Lieferant      
orders Bestellungen      
pdf PDF-Ausgaben      
pluginresponse Plugin-Rückmeldungen      
productdetails Produkt-Dateilseite      
recommend Weiterempfehlen      
state        
user Nutzer/Kunden
Verwaltung der Kontodaten sowie Rechnungs- und Lieferadressen
login.php

view=user
task=editaddresscart
addrtype=BT

Blendet über dem Warenkorb ein Loginformular ein, welches dem bereits registrierten User die Möglichkeit gibt sich schnell anzumelden. Es enthält die Eingabefelder für Bentuzername und Passwort, die Links für vergessene Benutzernamen und Kennwörter und eine an-mich-erinnern-Checkbox sowie den Submitbutton.

Wenn über die J!Menü-Funktion Einträge hinzugefügt werden, dann findet man als Typ unter der Komponente VirtueMart auch den Menüeintragstyp "VirtueMart Kontenpflege". Der so erzeugte Link ruft ebenfalls diese View auf wenn der User noch nicht eingeloggt ist, jedoch solo - ohne die zusätzlichen Anzeige des Warenkorbes.

 

user   edit.php

view=user
layout=edit
virtuemart_user_id[0]=xxx

Seite "Ihre Kontodaten", wird aufgerufen, wenn ein eingeloggter User seine Kontodaten bearbeiten will.

Beginnt mit einer Anrede und einem Logout-Button aus dem Login-Formular (s. login.php).
Dann folgen Registerreiter-Tabs, die dann den dazu entspr. Block anzeigen. Tabs die angezeigt werden könnten (je nach Situation) sind Kundeninformation, Shopinhaberinfos (vendor), Versandadressen und Liste der Bestellungen. Die Inhaltsblöcke der Registerkarten werden durch die Methode shopFunctionsF::buildTabs( $this, $tabarray) in die View geholt.

Der Block für die Kundeninformation enthält die Berechtigungsebene (normalerweise "shopper") und die Kundennummer, die leider diese exorbitant lange 32stellige Nummer sein kann. Dieser Block wird erzeugt durch das subview edit_vmshopper.php.

Dann wird das Formular mit der Nutzerfeldern eingefügt (s. edit_address_userfields.php).

Zukünftig sollen hier auch noch die diesem User zur Verfügung stehenden Zahlarten angezeigt werden.

Abschließend wird ein schlecht gestylter Block mit dem Link für die Eingabe der Lieferadressen angezeigt.

user   edit_address.php

view=user
task=editaddressST
new=1&addrtype=ST
virtuemart_user_id[0]=xxx

Dieses Script dient zur Editieren einer konkreten Adresse - kann eine Lieferadresse oder oder Rechnungsadresse sein.
user   edit_address_userfields.php

 

 
user   edit_address_addshipto.php

view=user
task=editaddressST
new=1
addrtype=ST
virtuemart_user_id[0]=xxx

Ist nur ein winziges Script welches den Link zum Aufruf der Seite zur Einpflege einer neuen Versandardressen ausgibt (leeres Formular von s. edit_address.php), eingeschlossen von einem Fieldset.

Dieses wird sowohl unter dem Formular für die Userdaten als auch unter dem Formular für die Eingabe/Pflege der einer Versandadresse eingeblendet.

user   edit_vmshopper.php

 

Erzeugt den Block mit den Shopper-Informationen (Benutzerstatus und Kundennummer) als Fieldset. Eigentlich ist diese Ausgabe entbehrlich.
vendor Shopbetreiber  

 
virtuemart Shop-Startseite      

 

Wenn Ihnen dieser Beitrag geholfen und viel Zeit gespart hat, zeigen Sie sich erkenntlich: Über eine Klick auf Google+1 oder Rückmeldungen freue ich mich, zeigt es mir doch, dass sich die Mühe für die Beitragerstellung gelohnt hat. Schenken Sie auch den Produktwerbungen Ihre Beachtung. 

  • Gast - Eric

    Hi,<br /><br />ich finde deine Übersicht super und nutze diese seitdem ich diese gefunden habe auch regelmäßig. <br />Leider weiß man bei VM2 nicht immer wo die richtigen Dateien liegen.<br /><br />Zu dem viertletzten Punkt deiner Liste hätte ich eine Frage. <br /><br />Wenn ich mit PHP diesen "Zustand" in der edit.php definiere:<br /><br /> <br /><br />werden die Änderungen (z.B. CSS) nicht wirksam. <br /><br />In der edit_adress.php funktioniert der Code wenn man ihn analog anpasst sehr gut. <br />Ich vermute es liegt an der sich immer ändernden virtuemart_user_id[0]=xxx so, dass keine Übereinstimmung vorliegt.<br /><br />Hättest du da bitte noch weitere Infos wie du das gelöst hast?<br /><br />Dank<br /><br />Eric

Einen Kommentar verfassen

Als Gast kommentieren

0
Deine Kommentare erfordern die Moderation durch den Administrator
Nutzungsbedingungen.

Verwandte Beiträge

Suche - Kategorien
Suche - Inhalt
plg_search_attachments
VM - Search, Virtuemart Product

Ihr Warenkorb

 x 
Ihr Warenkorb ist noch leer.