27.11.2011
2119 x gelesen

xDefaults feat. DatenbankabfrageStandardisierte Bildgrößen in Contao

Die Erweiterung xDefaults ist für jeden Contao Admin zu empfehlen. Man hat die Möglichkeit für Nachrichten und Events vorab standardisierte Bildgrößen und weitere Einstellungen festzulegen. Dadurch wird die Arbeit für Contao-Redakteure erheblich erleichtert. Pro News/Event können mindestens 10 Klicks und viel Tipperei eingespart werden.

Doch was ist mit bereits bestehenden Bildern in den Artikeln und News?

Auf diese Frage kann xDefaults keine Antwort geben. Ich versuchte zunächst in Contao durch "Mehrere bearbeiten" zumindest die Bildgrößen in den News anzugleichen, aber dies scheiterte mit einem PHP-Fehler.
Außerdem hätte ich so in jede Newskatagorie per Hand hinein gehen müssen.

Also habe ich mich entschieden manuelle Datenbankabfragen einzusetzen.

Bitte beachte: Vorher die Datenbank bzw. die Datenbank-Tabelle sichern, falls etwas schief läuft! 

1. News

Angenommen, man möchte folgende Einstellungen:

  • Breite: 210 Pixel
  • Höhe: 120 Pixel
  • Skalierungsmodus: Exaktes Format
  • Groß-Ansicht: Ja
  • Bildausrichtung: linksbündig

Die folgende MySql-Abfrage ersetzt die Bildgrößen (size), Bildausrichtung (float) und Großansicht in allen News in denen Bilder sind:

UPDATE `tl_news`
SET size = 'a:3:{i:0;s:3:"210";i:1;s:3:"120";i:2;s:4:"crop";}',
fullsize = 1,
floating = 'left'
WHERE size != ''

Falls man in den News unterschiedliche Bildausrichtungen (floating) einsetzt oder nicht überall die Großansicht (fullsize) verwendet, muss man den entsprechenden Teil in der Abfrage weglassen.

2. Artikel/Inhaltselemente

Um sicher zu gehen nichts falsches zu überschreiben, frage ich alle Bilder von Texten (type=text) ab in denen Bilder sind:

SELECT ID,TYPE AS Elementtyp, singleSRC AS Einzelbild, size, alt, floating, imagemargin, fullsize, FROM_UNIXTIME( tstamp, '%d.%m %Y %h:%i' ) AS datum, TEXT
FROM `tl_content`
WHERE size != ''
AND TYPE = 'text'
ORDER BY ID DESC
LIMIT 0 , 100

In meinem Fall kann ich leider nicht automatisch alles ersetzen lassen, weil auf einigen Seiten meine Bildgrößen deutlich abweichend sind (Beispiel). Diese Bilder sind 300 x 104 Pixel. Diese möchte ich z.B. nicht ändern.

Es geht nun darum herauszufinden, welche gemeinsamen "falschen" Bildgrößen es gibt. Nach der Datenbankabfrage entdecke ich etliche Texte mit Bildern in den Größen 180 x 115 oder 190 x 130. Bei einigen fehlt die Angabe fullsize.
Ich ersetze jetzt alle diese Bildformate:

UPDATE `tl_content`
SET size = 'a:3:{i:0;s:3:"210";i:1;s:3:"120";i:2;s:4:"crop";}',
fullsize = 1
WHERE type = 'text' AND
(size = 'a:3:{i:0;s:3:"180";i:1;s:3:"115";i:2;s:4:"crop";}' OR
size = 'a:3:{i:0;s:3:"190";i:1;s:3:"130";i:2;s:4:"crop";}')

Das war es auch schon. Je mehr Nachrichten/Events/Artikel existieren, desto mehr Zeit kann durch diese automatisierte Aktion eingespart werden. Bei über 100 Artikeln würde es Stunden dauern alles anzugleichen und dann entstehen trotzdem Flüchtigkeitsfehler... Abgesehen davon, ist diese stupide Arbeit unndlich nervig.

Artikelbewertung

0.0 von 5 Sternen (0 Stimmen)
Sie können diesen Artikel bewerten indem Sie einen Kommentar abgeben.

Schlagwörter

Zurück

Einen Kommentar schreiben

Bewerten Sie diesen Artikel
Datenschutz*