27.11.2011 01:32
120 x gelesen

xDefaults feat. DatenbankabfrageStandardisierte Bildgrößen in Contao

Die Erweiterung xDefaults ist für jeden Contao-Redakteur zu empfehlen. Man hat die Möglichkeit Standardwerte für Bilder und CSS-klassen festzulegen.
So spart man pro News mindestens 10 Klicks und Tipperei.

Doch was ist mit den 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

Die folgende 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 != ''

Auf gut Deutsch... Ich möchte folgende Einstellungen:

  • Breite 210 Pixel (size)
  • Höhe 120 Pixel (size)
  • Skalierungsmodus Exaktes Format  (size / crop)
  • Groß-Ansicht (fullsize)
  • Bildausrichtung linksbündig (floating)

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. Ich habe so einiges an Arbeit gespart. Die natürlich durch diesen Blogpost wieder drauf gegangen ist :P

Nein Quatsch, es hätte bei über 100 Artikeln ewig gedauert alles anzugleichen und dann entstehen ja trotzdem Flüchtigkeitsfehler... Außerdem ist diese stupide Arbeit unndlich nervig.

Ich freue mich über jeden Kommentar.

*Werbung - Empfehlungslink für Amazon. Mehr Informationen Siehe Impressum