Vereinheitlichen der Kollation in Datenbanken
- Details
Problembeschreibung
Wer komplexe CMS nutzt, wie Joomla oder Wordpress, wird, wenn er sich mal seine Datenbanken genauer anschaut, mitunter festellen, dass durchaus nicht alle Tabelle die gleiche Kollation verwenden. Selten stellt das ein Problem da, aber unter bestimmten Bedingungen z.B. "gejointe" SQL-Abfragen kann das dann doch mal zu einer Fehlermeldung führen und eine Seite lahmlegen. Solche Fehlermeldungen könnten folgenden Wortlaut haben:
1267 Illegal mix of collations (utf8mb4_general_ci,COERCIBLE) and (utf8_general_ci,IMPLICIT) for operation 'like'
Was die Kollation bedeutet und welche man wan verwendet, will ich hier nicht ausführen, weil es dazu reichlich Erklärseiten im Internet gibt. Nur kurz: Die Kollation spielt eine Rolle bei der Sortierung von Treffern. Speziell für Sprachen mit Sonderzeichen wird damit eine Regelwerk und eine zugehöriger interner Allgorithmus festgelegt, über den Treffer sortiert werden - z.B. wie ein "ä" zu berücksichtigen ist. Üblicherweise sollte man für CMS die COLLATION utf8_unicode_ci verwenden.
Hier mal ein Link, wo es schön erklärt wird: https://www.pixelfriese.de/unterschied-zwischen-utf8_general_ci-und-utf8_unicode_ci/
Sollten Sie z.B. oben aufgeführte Fehlermeldung erhalten, dann müssen Sie natürlich handeln und z.B. über phpMyAdmin die Kollation von Tabellen ändern und vereinheitlichen. Betrifft es nur wenige Tabellen, ist das mit einzelnen SQL-Befehlen in der Form ALTER TABLE `praefix_action_logs` COLLATE utf8_unicode_ci; schnell erledigt. Sind aber viele Erweiterungen in Ihrem CMS installiert worden oder das Projekt ggf. schon mehrfach migriert worden, werden Sie evtl. sehr viele unterschiedliche Kollationen finden. Das wird dann mühseelig, diese einzeln Tabelle für Tabelle zu ändern.
In GRAV Kontaktformular-Erfolgsseite einen Sprunganker mit smoothScroll nutzen
- Details
Problembeschreibung
Wer im CMS GRAV (Gravity) Formulare nutzt, wird feststellen, dass diese die Feedbackmeldung i.d.R. an gleicher Stelle ausgeben, wo vorher das auszufüllende Formular war. Hierbei passiert aber ein Seiten-Reload. Infolge dessen beginnt die Seitenanzeige ganz oben. Wenn aber das Formular, bzw. dessen Success-Meldung sehr weit unten ist, dann sieht der Seitennutzer diese Meldung erst wenn er auf Verdacht mal nach unten scrollt. Natürlich machen das viele Nutzer nicht, sondern fragen sich etwas hilflos, ob das Formular korrekt gesendet hat. Es wäre also notwendig, dass nach dem Absenden und dem Seitenreload gleich automatisch zur Erfolgsmeldung gesprungen wird.
Umsetzung im Datail
Für oben beschriebene Aktion ist das Script user/plugins/gantry5/engines/nucleus/templates/formdata.html.twig verantwortlich. Damit wir dieses GRAV-Core-Script nicht modifizieren müssen, erstellen wir davon eine Override-Kopie im Pfad: user/themes/g5_helium/templates/.
Read more: In GRAV Kontaktformular-Erfolgsseite einen Sprunganker mit smoothScroll nutzen
yaml Formular Framework - Default mit Zeilenumbruch (newline, break)
- Details
Ein paar YAML Form Framework Lösungen
In diesem nachfolgenden Text habe ich ein paar Problemlösungen zusammengetragen, die mir bei der Arbeit mit YAML-Formularen und der damit erzeugten Feldinhalte untergekommen sind.
Problembeschreibung:
Z.B. in einigen PHP-basierten CMS wie Joomla, Wordpress, Gravity, Drupal, Magnolia wo z.B. durch das Templateframework Gantry 5 u.a. YAML als Formular Framework verwendet wird, ist das Erstellen von Formularen dank dieser Konfigurationssprache recht einfach. Allerdings kann man manchmal auf Probleme stoßen, bei denen eine Lösungsfindung nicht recht einfach ist. Grund dafür ist, dass die Dokumentation der Markup-Language YAML mit ca 80 Seiten ein Schwergewicht ist und sperrig zu lesen. Ein weiterer Grund ist, dass die Google-Suche nicht immer brauchbar zu Lösungen führt.
Hier sollen deshalb ein paar kleine Tipps folgen, die das eine oder andere Problem lösen.
Lösung für das Problem Zeilenumbrüche
Wenn man in YAML z.B. eine Feldtyp textarea.textarea erstellt und diesem Textfeld eine Default-Wert übergeben möchte der mehrzeilig ist, z.B. weil man zeigen will, dass pro Zeile ein Keyword einzutragen ist, dann kann man nicht einfach in den Default-Text mit Enter arbeiten. Enter erzeugt eine neue Zeile und damit beginn in YAML ein neuer Knoten. Das führt zwangsläufig zu einem Fehler. Lösungen gibt es dazu gleich einige in YMAL. Die einfachste ist den Zeilenumbruch mit \n zu codieren. Das alleine wird aber ignoriert. Damit der YMAL-Interpreter das korrekt auswertet, muss der gesamte String in doppelte Gänsefüsschen gesetzt werden! Keine Hochkommas verwenden!
Read more: yaml Formular Framework - Default mit Zeilenumbruch (newline, break)
BreezingForms Meldungen in den sichtbaren Bereich bringen
- Details
Problembeschreibung
Die Formularkomponente BreezingForms für Joomla meldet an den Seitenbenutzer diverse Informationen, so z.B. wenn Pflichtfelder nicht ausgefüllt wurden, oder das Formular erfolgreich gesendet wurde. Da Webseiten heutzutage wg. der mobilen Geräte häufig sehr lang sind, oder Formulare sehr viele Felder haben können, kann es passieren, dass diese Meldungen, die bei BreezingForms oberhalb des Formulars eingeblendet werden, oder auf einer Feedbackseite ausgegeben werden, nicht im sichtbaren Bereich liegen. Der Seitenbesucher sieht diese Meldungen nicht, und ist verwundert, oder gar genervt darüber, nicht zu erfahren, was jetzt nach dem Klick auf dem Absendebutton genau passiert ist.
Beide oben genannten Grundprobleme - also die Feedbackmeldung nach dem erfolgreichen Senden und die Fehlermeldungen bei Fehleingaben oder nicht gefüllten Feldern, sind jedoch vom Verhalten etwas unterschiedlich.
Read more: BreezingForms Meldungen in den sichtbaren Bereich bringen
Virtuemart Anpassung Rechnungsinhalte und Layout
- 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.
Page 3 of 4