Unix-Timestamp in MySQL-Tabellen als Datum anzeigen
- Details
Problembeschreibung
Häufig wird in MySQL-Tabellen in Datensätzen auch Datum und Uhrzeit gespeichert, z.B. vom Erstellungs- oder Änderungszeitpunkt. Das erfolgt häufig als Integerzahl im Unix-Timestamp-Format und ist dann bei Tabellenanzeigen für Menschen schwer lesebar. Deshalb möchte man mitunter diesen UNIX-Timestamp gerne in eine normale Schreibweise von Datum und Uhrzeit angezeigt haben.
Hier die Lösung
... am Beispiel einer User-Tabelle, wo wie das Anmeldedatum umgewandelt haben wollen.
SELECT *, FROM_UNIXTIME(time) as realtime FROM `session` ORDER BY `time` DESC LIMIT 30
Mit nachfolgender Lösung werden alle DS in einer MySQL-Tabelle gefunden, bei der das modified_on-Datum darauf verweist, dass der DS zuletzt vor 30 Tagen bearbeitet wurde:
select *, modified_on, timestampdiff(DAY, modified_on, now()) as diffdays from j2ms_virtuemart_categories c left join j2ms_users u on c.modified_by = u.id WHERE timestampdiff(DAY, modified_on, now()) < 30 ORDER BY timestampdiff(DAY, modified_on, now()) ASC limit 0, 100
Man kann die Datum/Zeit-Ausgabe auch gezielt formatieren in dem ein Formatstring übergeben wird:
FROM_UNIXTIME(`timestamp_column`, '%Y-%m-%d %H:%i:%s')
Vorausgewählte Multicheckbox-Felder in der VirtueMart-Benutzerregistrierung
- Details
Problembeschreibung / Zielsetzung
Eigentlich recht flexibel ist die Möglichkeit benutzerdefinierte Felder für die Benutzerregistrierung in VirtueMart 1.x einzurichten. Unter anderem können auch Felder als sogenannte Mutlicheckbox-Gruppen angelegt werden, d.h. Eine Gruppe von Checkboxen, die intern als Information in einem gemeinsamen DB-Tabellenfeld geschrieben und verwaltet werden. Eine kleine Sache, die hierbei allerdings von den Entwicklern nicht vorgesehen wurde, ist die Möglichkeit ggf. einzelne Felder davon schon beim Aufruf des Registrierungsformulars als gesetzt vorauszufüllen.
Mit nachfolgendem Workaround soll dieses umgesetzt werden, wobei hier keine dynamisch/flexible Lösung geboten wird, sondern nur ein schnell intergrierte Lösung an einem ganz konkreten Fall - also hart kodiert.
Weiterlesen: Vorausgewählte Multicheckbox-Felder in der VirtueMart-Benutzerregistrierung
Kategorie-Vorschaubilder in ihren Höhen vereinheitlichen und vertikal zentrieren
- Details
Zielsetzung / Problembeschreibung
Häufig hat man z.B. in Webshops auf Kategorie- oder Produktauswahlseiten diese als Tableau mit Vorschaubildern angezeigt. Hierbei reiht sich Vorschaubild an Vorschaubild jeweils in kleinen Blöcken. Bei einem tabellenfreien und in der Breite flexiblen Layout läßt man diese Vorschaubildblöcke einfach floaten.
Hierbei will man der schönen Optik wg. gerne zwei Dinge erreichen:
- die Container für die Vorschaubilder sollen alle gleich groß sein
- und die Bilder darin auch bei unterschiedlicher physikalischen Größe untereinander vertikal zentriert ausgerichtet sein.
Wer sich schon mal mit einer solchen Aufgabenstellung befasst hat, wird erfahren haben, dass dies per HTML und CSS so nicht möglich ist. Neuerdings findet man in Foren dazu eine Lösung die mit display:table, display:table-cell und vertikal-align:middle als Styleanweisungen arbeitet. Jedoch hat diese Formatierung als Tabellenzellen den Nachteil, dass Bilder die physikalisch größer abgelegt wurden als im Layout vorgesehen mit 100% angezeigt werden und dann einfach über den Tabellenrand hinausragen.
Wer sich jetzt fragt, warum ich dann nicht einfach die Bilder in der Breite korrekt skaliert auf den Server schiebe, der kennt meine Kunden nicht. Die sind dazu nicht in der Lage und erwarten einfach dass es trotzdem schick aussieht.
Weiterlesen: Kategorie-Vorschaubilder in ihren Höhen vereinheitlichen und vertikal zentrieren
Modulposition eines veröffentlichen Moduls im Template-Script ermitteln
- Details
Aufgabenstellung
Mitunter kann es in einem Joomla-Template notwendig sein, ein Modul unterschiedlich darzustellen, je nach dem an welcher Modulposition es ausgegeben wird. Beispiel ein Warenkorb in der Modulposition "left" würde vertikal aufgebaut werden und alle Bestellpositionen enthalten. Würde der Warenkorb z.B. in der Toggelbar am unteren Browserrand angezeigt werden, müßte der Aufbau gänzlich anders erfolgen. Das kann nicht immer nur über Styles erreicht werden, sondern mitunter muss das Modul-Templatescript die Ausgabe komplett anders ansteuern. Hierfür muss man aber Im Templatescript zunächst erfahren können, an welcher Position das Modul nun gerade veröffentlich ist. Nachfolgend die ganz einfache Lösung (zutreffend für Joomla 1.5.x):
Weiterlesen: Modulposition eines veröffentlichen Moduls im Template-Script ermitteln
htaccess unter Win 7 / xampp umbenennen und nutzen
- Details
Problembeschreibung
Wenn Sie unter Windows 7 sich eine xampp-Entwicklungsumgebung eingerichtet haben, wollen Sie ggf. ihre Projektverzeichnisse über die .htaccess konfigurieren. In Joomla Projekten liegt z.B. zum Zweck der Scharfschaltung von SEF eine Muster htaccess.txt dabei. Um diese nutzen zu können, muss diese, so wie unter Apache üblich umbenannt werden in .htaccess. Und hierbei stößt man bei Win 7 auf ein Problem. Wenn Sie die Umbenennung nach .htaccess im Dateimanager vornehmen wollen, dann wird Win 7 dies verweigern, weil es derartige Dateinamen nicht zulassen will, weil Win 7 hier erkennt, dass der Dateiname nicht dem erwarteten Muster entspricht.
Wir müssen also unter Win 7 eine Lösung finden trotzdem die htaccess nutzen zu können. Hierfür gibt es u.a. zwei hier vorgestellte Lösungen.
Weiterlesen: htaccess unter Win 7 / xampp umbenennen und nutzen
Verwendung von reply-to als Lösung für Mail-Relay-Server-Problem in VirtueMart 1.x
- Details
Problembeschreibung
Immer mehr Provider stellen Ihre Mail-Server um, so dass ein Spam-Mißbrauchsloch geschlossen wird. Häufig werden Mail-Server als Relayserver mitbraucht. Hierbei nutzt ein Mailabsender eine Absenderadresse die nicht dem Domainbereich des Mail-Servers entspricht. Das wird nicht immer nur im Bösen getan, manchmal sind das auch ganz reguläre praktische Beweggründe. Bsp. Wenn man mit seinem Webshop Bestellmails an den Shopbetreiber und Kunden automatisch herausschickt, nutzt man einen SMPT-Account auf dem Host. Als Absender regulär würde dann z.B. stehen Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!. Diese Adresse soll aber nur vom Webserver verwendet werden. Gerne wird auf derlei Mails geantwortet. Aber an diese Adresse will man keine Mails empfangen. Man selbst müßte beim Beantworten immer erst die Kundenadresse heraussuchen und statt dessen als Anwortadresse eintragen. Das ist mühselig und geht regelmäßig schief. Deshalb wäre es bequemer wenn als Absender nicht diese Webserver-Adresse stünde, sondern die Adresse des Kunden, der die Bestellung aufgibt. Das entspräche aber genau dem Spam-Missbrauchs-Modell wie oben beschrieben. Fast alle Provider unterdrücken mittlerweile diese Verfahrensweise.
Weiterlesen: Verwendung von reply-to als Lösung für Mail-Relay-Server-Problem in VirtueMart 1.x
XAMPP PHP-Warnmeldungen in Joomla
- Details
XAMPP Fehlerbeschreibung Warnmeldungen (z.B. Deprecated und Notice)
Wer sich eine Entwicklungs- und Testumgebung für seine Joomla-Projekte auf seiner lokalen Workstation per XAMPP aufgebaut hat, erhält beim Start seiner Projekt mitunter Fehlermeldungen, die entweder erst ab einer bestimmten Version von XAMPP auftreten oder aber auf dem Live-Webserver nicht vorhanden sind.
Ursache für diese Fehler- oder Warnmeldungen ist nicht das Joomla selbst sondern diese werden von PHP erzeugt in Abhänigigkeit davon welche PHP-Version installiert ist. Denn so kann es durchaus passieren, dass in Joomla verwendete PHP-Befehle mit einer neuen PHP-Version ihre Gültigkeit verlieren. Soll heißen, diese sind in veraltet und PHP möchte den Entwickler auf diesen Sachverhalt hinweisen.
Nun möchte man natürlich nicht selbst an Joomla Hand anlegen und alle als veraltet (deprecated) geltende Befehle austauschen. Hier hofft man dann doch lieber darauf, dass das Joomla-Entwicklerteam diese sugzessive eleminiert. Um dann aber trotzdem diese Fehlermeldungen zu vermeiden gibt es die Möglichkeit PHP diese abzugewöhnen.
Dateianhänge an VirtueMart-Bestellmails
- Details
Zielstellung
Wenn man einen Dateianhang (z.B. PDF oder XML) an eine Virtuemart-Bestellmail anhängen will, wird das mit den VM-Boardmitteln zunächst nicht gleich gehen. Man muss Vm-Scripte erweitern damit das gelingt. Nachfolgend sind die notw. Modifikationen beschrieben.
Umsetzung im Detail
Verantwortlich für den Mailversandt ist das Classes-Script ps_checkout.php. Hier suchen wir die Zeile die mit $shopper_mail = vmMail( ... beginnt.
Die Verfahrensweise ist quasie ähnlich wie mit den $EmbeddedImages. Es muss ein Array aufgebaut werden, welches die Datei-Daten handhabt. Also geben wir vor dieser genannten Zeile folgende Sequenz ein:
Ändern der Anzeigedaten in SobiPro
- Details
Hier eine kleine Anleitung wie man z.B. die Listendarstellungen, konkret die anzuzeigenden Felder in SobiPro konfiguriert.
Über den Felder-Manager
Voraussetzung, es wurde ein Sektion und dazugehörige Kategorien angelegt. Für die Sektion wurde ein Template über den Menüeintrag "Sektions-Template" Button [Neu+] erzeugt. Z.B. "Partner Sponsoring".
Nun wechselt man in den Menüpunkt "Sektionskonfiguration" und findet dort den Unterpunkt "Felder-Manager". Wird dieser aufgerufen erscheint im Listenbereich eine Liste der Felder die für diese Kategorie angelegt wurden, oder es werden neue Felder hinzugefügt.
Floating-Problem bei jQuery.SyncHeight
- Details
Problembeschreibung
In einem VirtueMart-Shop-Projekt (VM 2.x) werden die Kategorien auf den Kategorieauswahlseiten floatend angezeigt - also nicht in fixen Spalten, sondern immer hintereinander weg Zeile für Zeile, eben wie Fließtext. Damit dabei nicht alles durcheinander purzelt, sondern eine saubere Anordnung in Spalten- und Zeilenoptik, wird die Beite der Vorschaubildblöcke fest definiert und die Höhe für alle Blöcke per jQuery.SyncHeight in ihren Höhen syncronisiert.
Prinziell funktioniert das mit diesem jQuery-AddOn auch ganz hervorragend. Allerdings tritt beim Floaten folgender Fehler auf:
Der höchste Block mit der höchsten Vorschaugrafik bestimmt ja die Höhe auf die alle anderen kleineren Blöcke syncronisiert werden. Bis zu diesem höchsten Block ist das Floaten korrekt. Der nächste Block bei dem eine Zeilenumbruch erfolgt, floatet jedoch nicht mehr korrekt. Er stößt quasi an den höchsten der darüberliegenden Zeile an, bleibt dort hängen anstatt nach vorne an den linken Zeilenanfangsrand zu rutschen.
Wie erstellt man eigene VM-Layouts
- Details
Die VM-2 Layouts
In VirtueMart 2 spricht man nicht mehr von Themen, sondern von Layouts und dieses Layoutkonzept hält sich eng an die Strukturkonventionen für Komponenten unter Joomla 2.5.x. In der Pfadstruktur der Komponente spiegelt sich das zunächst wieder in dem es im Komponentenverzeichnis ~/components/com_virtuemart/ so wie üblich ein Unterverzeichnis /views/ gibt. Für jeden Seitenbereich von VirtueMart zur Darstellung bestimmter Inhalte im Joomla-Contentbereich gibt es ein separates Unterverzeichnis z.B. /categories/ (für die Kategoriestartseite, also die 0. Ebene, das ist nicht die Shop-Startseite!) oder /category/ (für die früher so genannte Kategorie-Browsepages) usw.
Das Templatescript, welches verwendet wird ist üblich die default.php mit Ihrer Konfigurationsdatei default.xml. In der VirtueMart-Backend-Konfigurarion gibt es z.B. für die Kategorien das Layout in einer DropDown-Liste ausgewählt werden. Standardmäßig eben default.
Vorschaubildgröße in VirtueMart 2 nachträglich anpassen
- Details
Problembeschreibung:
Wer mit VirtueMart 2.x arbeitet und begonnen hat ein Projekt aufzusetzen, wird i.d.R. schon recht zeitig die ersten Bilder für Kategorien oder Produkte hochladen um diese auf den Seiten anzuzeigen. Erst später stellt man evtl. fest, dass die Vorschaubild zu klein oder zu groß angezeigt werden und möchte dies nun ändern. Die Thumbnailgröße lässt sich in der VM-Konfiguration unter dem Registerreiter "Stilvorlagen" in der Gruppe "Media-Datei Einstellungen" unter den Optionen "Minibild-Breite" / "Minibild-Höhe" recht schnell einstellen. Allerdings, und hier genau liegt das Problem, wirkt sich diese Einstellung nicht auf die Bilder aus, die man schon mal hochgeladen hatte, sondern zunächst nur für die die man ab da neu hochlädt. Was tun? Wenn man schon eine Menge Bilder hochgeladen hatte, kann man diese unmöglich alle noch mal neu auf den Server laden um die automatische Thumbnailerzeugung zu erreichen. Eine Lösungsbeschreibung werden Sie im VM nicht finden.
Weiterlesen: Vorschaubildgröße in VirtueMart 2 nachträglich anpassen
Leere Produkt-Detailseiten in VirtueMart 2.x
- Details
Ein weiteres Problem in VirtueMart 2.x - leere Produkt-Detailseiten
Dieses Problem trifft zu für mind. alle Versionen von VirtueMart bis 2.0.6, bei der ich das zuletzt getestet hatte.
Der eine oder andere wird, sobald er das Joomla-Core-SEF eingeschaltet hat feststellen, dass zwar der Aufruf der Kategorieseiten hervorragend funktioniert, aber sobald man eine Produkt-Detailseite aufrufen möchte heftig knirscht. Man erhält eine Projektseite, bei der zwar alles da ist aber der Virtuemart-Content-Bereich einfach leer bleibt.
Auch hier leistet sich VirtueMart wieder eine kleine, von der Sinnhaftigkeit schwer begründbare, Gehässigkeit.
In der SEO-Konfiguration von VirtueMart gibt es ein Optionsfeld "SEO Suffix". Das Feld ist üblich leer. Warum sollte man es auch füllen, wenn man bei Adressen in dieser Form /shop/kategorieA/kategorieA/produkt.html landen will?