Virtuemart 2: Verfügbarkeit von Produkten anzeigen/verwalten
- Details
Zu diesem Sachverhalt hier ein paar gesammelte Erkenntnisse
Hierbei geht es darum den Kunden anzuzeigen, wie schnell ein Produkt gelieferte werden kann. Das hängt üblicherweise vom Bestand ab und wird prinzipiell unterschieden in Produkte die lagerhaltig sind, also sofort verfügbar, und solchen die wenn der Bestand null ist, erst geordert und dann geliefert werden können. Die Lieferzeit im zweiten Fall ist dann i.d.R. abhängig vom liefernden Hersteller. Detailierte Informationen dazu weiter unten.
Weiterlesen: Virtuemart 2: Verfügbarkeit von Produkten anzeigen/verwalten
Akeeba Backup per Cronjob starten
- Details
Problembeschreibung
Wer mit Akeebe-Backup für Joomla arbeitet, wird sicher auch seine Backuperstellung automatisiert nach Zeitplan starten wollen. Hierzu muss das Backup durch ein Ereignis getriggert werden.
Der übliche Weg das Backup zu starten ist es ein Cronjob zu konfigurieren. Leider ist das nicht auf jedem virtuellem Server möglich, abhängig vom Hostingpaket welches man bei seinem Hostingprovider gebucht hat. In früheren Versionen von Akeeba-Backup und JoomlaPack gab es deshalb als Alternative ein Plugin Akeeba Backup Lazy Scheduling. Dieses Plugin war ein Quasi-Ersatz für die besseren Cronjobs und funktioniert in der Form, dass das Plugin immer auch aufgerufen wird, wenn ein User irgendeine Seite des Projektes aufrief und prüfte dann ein konfiguriertes Zeitfenster und die eingestellte Häufigkeit ab, um dann ggf. das Backup zu start. Man kann sich vorstellen, dass man durch diesen Test permanent eine kleine Grundlast mitschleift.
In den neueren Versionen ist das Plugin nicht mehr verfügbar, oder nur noch als Dummi-Plugin um anzuzeigen, dass es nicht mehr genutzt werden kann.
Aber das Einrichten eines Cronjobs ist trotzdem etwas schwierig, vorausgesetzt der Hostingprovider lässt es überhaupt zu. Denn hier müssen die Rechte berücksichtigt werden und auch die Art- und Weise wie Php auf dem Server ausgeführt wird.
Tipps im Zus.hg. mit LESS im Gantry-Template für Joomla
- Details
Wichtig Links zur Gantry-Dokumentation
LESS CSS | Auf dieser Seite steht beschrieben, wie LESS prinzipiell funktioniert, das Compilen, diverse konzeptionelle und syntaktische Prinzipien, wie die Einbindung im Gantry-Template erfolgt usw. |
Adding a Custom Stylesheet | Auch dieser Text beschreibt wie mit Custom-Style die Gantry-Styles überschrieben werden können. Interessant ist hier die Verwendung von Browser-Weichen |
Einbinden einer eigenen CSS-Datei ins Template - ohne LESS
Um eine eigene CSS-Datei im Gantry-Template einzubinden, muss lediglich im Gantry-Template-Verzeichnis und hier im Unterverzeichnis ~/css/ eine Scriptdatei mit dem Name gantry-custom.css abgelegt werden. Der Dateiname ergibt sich aus dem Namen für das Template also gantry plus dem Zusatz custom. Diese Variante erzeugt eine CSS-Datei, die dann so unkomprimiert zusätzlich ins Template geladen wird.
Weiterlesen: Tipps im Zus.hg. mit LESS im Gantry-Template für Joomla
LESS-CSS ohne Compilierung nutzen, während der Entwicklung
- Details
LESS-CSS ohne Compilierung nutzen
Less wurde entwickelt um das Konstrukt von CSS-Scripten schlank und übersichtlich zu halten und durch die Verwendung komprimierter CSS-Dateien die Performance von Projekten zu steigern. Zu diesem Ziel werden die LESS-Dateien kompiliert und gecacht. Während der Entwicklung ist das allerdings mitunter etwas schwierig. Wer im Browser dann seine CSS-Eigenschaften versucht zu analysieren (z.B. per Chrome-Webdeveloper oder FireBug) erhält rückwärts wenig verwertbare Informationen. Die Fehlersuche gestaltet sich dann mitunter etwas schwierig. Für diesen Fall ist es sinnvoll die LESS-Dateien wie bisher wie CSS-Scripte verwenden zu können, unkomprimiert.
Das wiederum ist nicht so einfach, weil die Browser LESS nicht verstehen, so als waren es CSS-Dateien, denn LESS wird erst durch das Kompilieren zu CSS. Mit den Funktionen, Variablen, Verschachtelungen und spezifischen Syntax können Browser nichts anfangen. Deshalb sind zwei Dinge notwendig
- Wir müssen die LESS-Datei direkt laden, so als wäre Sie CSS-Dateien
- Wir müssen daraus im Browser verständliches CSS machen.
Von den LESS-Entwicklern wurde dazu eine Client-seitige Nutzung implementiert und in diesem Text dokumentiert.
Nachfolgend soll kurz beschrieben werden wie die Umsetzung für diesen Fall erfolgen kann
Weiterlesen: LESS-CSS ohne Compilierung nutzen, während der Entwicklung
Submit per Enter vor Formularvalidierung verhindern
- Details
Problembeschreibung
Formular verhalten sich in Browsern i.d.R. so, dass beim Drücken von Enter das Formular abgesendet wird. Das kann mitunter aber nachteilig sein, z.B. dann wenn der Nutzer notwendige Eingaben noch nicht vollständig ausgefüllt hat.
Oder ein anderer denkbarer Fall: In einem Warenkorb-Shop, soll wird mit Verpackungseinheite gearbeitet. Ein Script soll dabei prüfen, ob bei der Eingabe von Wunschstückzahlen diese Verpackungseinheiten eingehalten sind, also dafür sorgen, dass die Menge immer ein Vielfaches der Verpackungseinheit ist. Dazu gibt der Nutzer also die Menge in eine input-Feld ein. Beim Verlassen des Feldes, oder eben auch beim Klicken auf den Warenkorb-Button, erfolgt die Prüfung und ggf. Korrektur der Wunschmenge. Jedoch wird diese an den Warenkorb gebundene Prüfung umgangen wenn nach Eingabe im Feld durch den Nutzer einfach Enter gedrückt wird. Das Formular wird dann üblicherweise abgesendet.
Aufgabenstellung
Unser Ziel besteht nun also darin, das Absenden zu verhindern, wenn Enter gedrückt wird und die Werte nicht unsere Validierungskriterien entspricht. Ein onBlur-Ereignis führt die Wertprüfung im Eingabefeld durch, im Bsp. ist das die Funktion showSelAmountBox(), welche mit einem kleinen Dialog dem Nutzer mgl. Wunschmenge vorschlägt und dann korrekt ins Input-Feld überträgt. Das Absenden erfolgt wie üblich über ein Warenkorb-Icon als input-Tag vom Typ submit (<input type="submit" />).
Weiterlesen: Submit per Enter vor Formularvalidierung verhindern
Joomla 2.5/3.0: Modulinhalte innerhalb eines Beitrages einblenden
- Details
Problembeschreibung / Aufgabenstellung
An einem konkreten Beispiel soll verdeutlicht werden, wie man spezielle Inhaltsschnippsel innerhalb von Joomla-Beiträgen platzieren kann. Ein in der Praxis denkbarer Fall wäre mitten in Joomla Beiträgen einfach Google-Adsense-Anzeigen einzublenden, ohne dieses jedes mal komplett als Scriptschnippsel einfügen zu müssen. Wir wollen also diesen Adsense-JavaScript-Schnippsel einmal ablegen und dann beliebig oft und einfach einbinden können. Das alles soll möglich sein, ausschließlich mit Joomla Board-Mitteln.
Lösung
Im Prinzip ist es ganz einfach, wenn man um die Möglichkeiten weiss, die Joomla uns für solche Zwecken schon liefert. Es ist nicht notwendig nach Komponenten zu suchen mit denen man Adsense-Anzeigen plazieren kann oder dafür gar Geld auszugeben.
Was wir brauchen und Joomla uns auch bereitstellt:
- Ein Plugin, welches uns Module in den Content einbindet. Genau das haben wir und nennt sich unter Joomla Inhalt - Modulpositionen laden, wie immer zu finden in der Liste der Plugins. Dahinter arbeitet das Plugin plugins/content/loadmodule.
- Weiterhin brauchen wir ein Module mit dem wir einfache Inhalte veröffentlichen können. Auch das gibt es. Wir finden das Modul in der Modulliste unter dem Namen Eigene Inhalte (Leeres Modul). D.h. wir haben hier ein Modul welches zunächst einmal nichts macht, es ist leer, eben solange bis wir dort einen Inhalt einpflegen.
Diese beiden Bausteine lösen unser Problem.
Weiterlesen: Joomla 2.5/3.0: Modulinhalte innerhalb eines Beitrages einblenden
Breezing Form: Validierungsscript valuenotempty() auf Leerzeicheneingaben prüfen
- Details
In Breezing Forms kann man auf Formular-Eingabefelder eine Prüfung anwenden, ob diese beim Absendeversuch leer sind. In diesem Fall erfolgt ein Fehlerhinweis und das Absenden des Fomulars wird verhindert.
Leider ist diese Validierung nicht sonderlich vollständig, denn die Einfach Eingabe eines Leerzeichens genügt schon um das Formular trotzdem zu senden. Sicher finden sich immer Wege für den Nutzer eine Validierung zwangsweise zu umgehen, diesen Fall wollen wir aber dennoch ausschließen und das Script nur ein wenig vollständiger machen.
In der Liste der Scripte (Scripte Verwalten) wird das Script valuenotempty gesucht und zum Editieren angeklickt.
Das vohandene Script wird wie folgt ergänzt/ersetzt:
function ff_valuenotempty(element, message) { if (trim(element.value) != '') return ''; if (message=='') message = "Please enter "+element.name+".\n"; ff_validationFocus(element.name); return message; } // ff_valuenotempty function trim(input) { return input .replace(/^\s\s*/, '') // entfernt führende Leerzeichen .replace(/\s\s*$/, '') // entfernt abschließende Leerzeichen // .replace(/([\s]+)/g, '-'); // ersetzt Leerzeichen durch - }
Wir haben uns schnell eine Trim-Funktion gebaut, die alle führenden und abschließenden Leerzeichen vom Eingabestring entfernt und uns zurückgibt was übrig bleibt. Wenn der Rest leer ist, dann ist zuverlässiger leer. Laternativ könnte man auf gleiche Weiser die Prüfung erweitern, wie hier z.B. angedeutet durch Ersetzen von Leerzeichen und '-'.
JCE Profiländerungen lassen sich nicht speichern
- Details
Problem-Beschreibung
Wer in seinem Joomla-Projekten mit dem Joomla Content-Editor arbeitet, statt des voreingestellten Standard-Editors, und diesen auch regelmäßig, wird evtl. auf ein Problem beim Speichern der JCE-Profileinstellungen stoßen. Diese Text beschreibt die Lösung.
Ich persönlich arbeite in fast allen meinen Projekte mit diesem hervorragenden J!-Editor, wg. seines großen Funktionsumfanges und seinen vielfältigen Konfigurationsmöglichkeiten, speziell der Fähigkeit für verschieden Zwecke rechte-/rollenabhängig Editorprofile verwalten zu können. Grob gesagt kann man z.B. dem Frontend-Nutzer einen anderen Funktionsumfang zuweisen als einem Publisher, Author oder dem Admin im Backend.
Zurück zum Problem welches auftreten kann: Mitunter lief der Editor in früheren Version schon im Projekt ganz hervorragend. Plötzlich nach einem Upgrade des Editors stellt man fest, dass die dann vorgenommen Profileinstellungen nicht mehr gespeichert/übernommen werden. Schlimmer noch, vorher mal getroffene Einstellungen werden komplett geleert oder auf Default-Werte zurückgesetzt.
Spontan hatte ich vermutet, dass irgendwelche Schreibrechte geändert wurden, was aber ein Holzweg ist.
Weiterlesen: JCE Profiländerungen lassen sich nicht speichern
Aktualisierung von Modul-Inhalten per Ajax in Joomla 2.5
- Details
Problembeschreibung
Wer selbst Joomla-Extensions programmiert, wird bei der eleganten Verwendung von Ajax immer mal wieder auf das Problem stoßen, wie man Inhalte per Ajax-Request innerhalb von Joomla aufrufen soll. In Komponenten noch relativ einfach, stellt sich das bei Modulen etwas komplizierter da. Beispiele hierfür sind z.B. Instant-Search, Instand-Menüs/Navigationen oder Konfiguratoren an Modulpositionen.
Es herrscht die allgemeine Auffassung, dass man Module eigentlich nicht alleine aufrufen kann, sondern immer über eine Komponente gehen muss. Wie kann ich Modulbestandteile, wie z.B. Formularelemente aktualisieren ohne das komplette Joomla-Template in den Zielbereich zu laden.
Vorwegschicken muss man, dass es nicht nur eine Möglichkeit gibt. Jedoch teilen sich die Varianten wesentlich in "schlechte" und "joomla-konforme" Lösungen. Auch sind bei der Entscheidung für die eine oder andere Variante weitere Kriterien relevant, auf die eingegangen werden soll.
Weiterlesen: Aktualisierung von Modul-Inhalten per Ajax in Joomla 2.5
Pathway / Breadcrumbs in VirtueMart 1.1.x
- Details
Wissenswertes zum Thema
Virtuemart nutzt zwei unterschiedliche Wege für die Anzeige des Pathways.
- für die Browsepages nutzt es den regulären Weg, so wie er vom Joomla-Framework vorgesehen ist. Über das Objekt $mainframe mit seiner Methode appendPathWay() lassen sich dem Mainframe Pfad-Element übergeben/anhängen. Alle diese Elemente werden in einem Array gesammelt. Das Modul mod_breadcrumbs verwendet dieses Pfad-Array um daraus dann den Pathway zu erzeugen und an Modulposition auszugeben. Die Konfiguration der Anzeige dieses Pathway erfolgt folglich auch über das Modul / J!-Main-Template-Modulposition und dann projektweit. Will man also die Anzeige für diesen pathway ändern, muss man ins Modultemplate-Script modules/mod_breadcrumbs/tmpl/default.php.
- Aus unerklärlichen, vermutl. rudimentären Gründen, wird das auf den Produktdetailseiten (flypages) nicht so gehandhabt. Zusätzlich zum Modul-Breadcrumbs kann man hier eine weitere Pfadanzeige veranlassen. Für die Flypage-Templates unter /product_details/ gibt es im Templateverzeichnis /common/ eine pathway.tpl.php, welche auf diesen Seiten die Pathway-Ausgabe formatiert. Die Konfiguration der Anzeige erfolgt hier über die VM-Backend-Konfiguration auf den Flypage-Einstellungen. Hier ist das An- und Abschalten möglich. Das Aussehen wird über das Template pathway.tpl.php gesteuert. Sinn macht das allerdings nicht, weil man dann mitunter die Pfadanzeige doppelt hat, einma über das Modul an Modulposition und zusätzlich innerhalb des Flypage-Inhaltes für das Produkt.
Mehrsprachigkeit von VM 2 Custom-Fields
- Details
Problembeschreibung
Leider ist es in der Version bis zur 2.0.18 so, dass nicht alle Elemente von VirtueMart konsequent multilanguage-fähig sind. So z.B. die Custom-Fields (selbsterstelle Felder). Während für die Bezeichnung der Felder die Übersetzungen noch funktionieren, sind die Benennung der Selektions-Options nicht über das Joomla-Language-Overriding beschreibbar. Statt dessen wird hier ausschließlich mit den eingegebenen Values der Felder gearbeitet. Ganz sicher wird das in einer der nächsten Versione von VM erfolgen, doch derweil muss man sich im Notfall selbst behelfen.
Dieser Workaround soll beschreiben mit welchen Maßnahmen das zu erreichen ist. Es ist aber zu beachten, dass dieser Workaround Eingriffe in den Core von VM bedeuten. Man soll sich also zum einen mit php einwenig auskennen und sich bewusst sein, was Core-Eingriffe für Nachteile mit sich bringen können. Wer sich unsicher ist, Finger davon lassen, Profi machen lassen oder warten bis es mal Core-Bestandteil ist.
FireFox-Formulare - Fehlverhalten durch automatisches Vorausfüllen
- Details
Problembeschreibung
Evtl. ist Ihnen als Programmierer einer Webseite schon der Effekt bei der Arbeit mit FireFox aufgefallen, dass sich Formulare nicht so verhalten wie Sie es beabsichtigen. Formularfelder werden mit obskuren Werten belegt oder voneinander abhängige Formularelemente liefern unstimmige Kombinationen. Nicht selten kommt es z.B. beim Absenden von Konfigurationsdialogformular in den Serverscripts zu Fehlern weil unsinnige Werte verarbeitet werden sollen. Die Fehlersuche gestaltet sich schwer, da es durchaus auch versteckt Felder betreffen kann. Alles ist scheinbar ein großes Rätsel.
Provozierbar treten diese Vorausfüllfehler z.B. dann auf, wenn man ein Ajax-Formular hat bei dem Änderungen im Formular immer auch zur Aktualisierung des Formulars, um z.B. voneinander abhängige Elemente neu zu befüllen. Wenn man nun über die Historie-Buttons mal eine Seite zurückblättern und wieder hin zur Formularseite, dann passiert oben geschriebener Effekt sehr gerne.
Weiterlesen: FireFox-Formulare - Fehlverhalten durch automatisches Vorausfüllen
Internas zu Rabatt-Rechenregeln in VirtueMart 2 - Erweiterung herstellerabhängiger Rabatt
- Details
Einiges Grundwissen zum Thema Rechenregeln
Virtuemart nutzt für seine eingebundenen Plugins auch die Schnittstelle von Joomla, folglich sind Plugins auch im Joomla-Pluginverzeichnis zu finden.
Für die Kalkulation von MwSt., andere Rechenregeln und die Währungsumrechnungen wurde u.a. das Avalara-SDK/API eingebunden, welches eine PHP-Script-Class/Bibliothek ist.
Die Rechenart für Discount/Rabatte ist Preismodifikator vor Steuern (intern DBTax).
Wann eine Rechenregel überhaupt angewendet werden soll, lässt sich standardmäßig durch vier Kriterien definieren welche sind:
- Produktkategorien (category)
- Shoppergruppen (shoppergroup)
- Land (country)
- Bundesland/Staat (state)
Diese vier werden nachfolgend nur noch als Kriterien bezeichnet. Für diese ist immer eine Mehrfachauswahl mgl.
Leider gibt es kein Kriterium um Produktpreise herstellerabhängig zu machen. Das ist schade, denn eigentlich nicht gerade unüblich in der kaufmännischen Praxis, denn gibt z.B. ein Hersteller zeitweilig Rabatte, möchte man diese Verkaufsförderung evtl. an Kunden weitergeben. Das Thema kann auch interessant sein, wenn man von herstellerbezogenen Listenpreisen abweichen will.
- Die Views-Scripte von VirtueMart 2
- Joomla 1.5.x CSS Dateien nach Modifikationen zwingend aktuell laden
- Mit MySQL einen nächst kleineren Wert finden
- jos_session-Tabelle wird extrem groß
- Rücksprung zur Ausgangsseite nach Warenkorb-Löschen in VirtueMart 1.1.x
- Virtuemart 2: Nutzerfelder ohne Warenkorb-Attribut / Produktvarianten / mit Warenkorb-Attribut / Child-Produkte
- Virtuemart 2: Nutzerfelder mit Bestandskontrolle
- Anpassungen von sh404SEF für PHP5.3
- Unix-Timestamp in MySQL-Tabellen als Datum anzeigen
- Vorausgewählte Multicheckbox-Felder in der VirtueMart-Benutzerregistrierung
- Kategorie-Vorschaubilder in ihren Höhen vereinheitlichen und vertikal zentrieren
- Modulposition eines veröffentlichen Moduls im Template-Script ermitteln
- Verwendung von reply-to als Lösung für Mail-Relay-Server-Problem in VirtueMart 1.x
- Dateianhänge an VirtueMart-Bestellmails
- Floating-Problem bei jQuery.SyncHeight
- Vorschaubildgröße in VirtueMart 2 nachträglich anpassen
- htaccess unter Win 7 / xampp umbenennen und nutzen
- XAMPP PHP-Warnmeldungen in Joomla
- Ändern der Anzeigedaten in SobiPro
- Wie erstellt man eigene VM-Layouts
Seite 7 von 14