Da diese Frage sehr häufig auftaucht und noch nie hinreichend beantwortet wurde:
Q: Ich habe per Skript eine Seite erstellt und mit Inhalten gefüllt. Ich kann sie lesen, die Bilder werden im Backend erwähnt, aber weder das Preview im BE funktioniert, noch sehe ich das Bild im FE. Wenn ich das Bild einmal neu anwähle, funktioniert es. Ich will dies nicht auf 150 importierten Seiten machen. Was kann ich tun?
Q: Wie kann ich ein Bild auf eine Seite (in ein Produkt, etc.) bringen, ohne diese Seite per Backend händisch zu erstellen?
A: Das Bild muß nicht nur in /pics/upload gespeichert werden und in der Images-Spalte referenziert werden, sondern auch indiziert. Das geschieht über t3lib_refIndex.
Code-Beispiel
refindex laden, neue Instanz erstellen.
require_once(PATH_t3lib.'class.t3lib_refindex.php');
$refindex = t3lib_div::makeInstance('t3lib_refIndex');
Bilddatei an die richtige Stelle speichern - hier kann natürlich auch ein "copy" stehen, oder die Dateien könnten schon da sein.
file_put_contents("/var/www/t3v4/uploads/pics/titelkl$num$jahr.jpg",$data);
Uid beschaffen - hier Anhand des Produkttitels.
$res2=mysql_query("SELECT uid FROM typotypo.tt_products WHERE title='$row[bezeichnung]'");
$row=mysql_fetch_array($res2);
$uid=$row['uid'];
Über das Refindex-Objekt Indizieren - Das ist der eigentliche Clou dieses Posts. Hier muß natürlich die richtige Tabelle angegeben werden. Da bei mir Produkte importiert werden, ist das tt_products.
$test=$refindex->updateRefIndexTable('tt_products',$uid);
Mag das irgendein Dev in irgendeine Doku schreiben?
Offene Fragen:
Q: Wie kann ich jetzt Bilder anderswo als in .../uploads/pics speichern? Das wird leicht unpraktisch.
C: man kann das upload-Verzeichnis ggf. für die Laufzeit des Skripts ändern - ob das gesund ist, oder dauerhafte Freude bereitet, bleibe dahingestellt.
Q: Das refindex-Objekt speichert offensichtlich irgendwelche Daten zwischen. Wäre es in einer Schlife angebracht, es nach jedem Durchlauf zu löschen und ein neues zu erstellen?
C: Ich habe bislang keine nachteiligen Effekte bemerkt, wenn man eben dies nicht tut.
Irgendwelche Kommentare?