tslib_cObj->IMAGE im Backend
Für die Website eines Kunden, auf der FE-Nutzer teils recht große Bilder hochladen können, suchte ich nach einer Möglichkeit, die Bilder im Backend anzuzeigen. Dazu fügte ich dem TCA ein USER-Feld hinzu, welche das Foto ausgibt. In dieser Funktion habe ich zunächst auf die Backend-Funktion t3lib_befunc::getThumbnail() zurückgegriffen, was sich allerdings als ungünstig herausstellte, da 1. die Qualität sehr schlecht war 2. größere Bilder auf dem Webspace von der Stange häufig nur zur Hälfte erzeugt wurden.
Daraufhin war die Überlegung, die “Thumbnails” nicht über die BE- sondern die FE-Funktion (also IMAGE) zu erzeugen. Zum einen ist es damit möglich, zu erfassen, ob das Bild erfolgreich verkleinert wurde und zum anderen kann man sich so den File-Cache vom Frontend zu Nutze machen Das erste und auch einzig brauchbare Ergebnis, auf das ich bei der Suche nach “cObject im Backend” stiess, war dieser Post. Es hat zwar nicht funktioniert aber immerhin konnte ich mir hier die nötigen Includes zusammenklauben.
Ich hatte ursprünglich vor, die Lösung dort als Kommentar zu hinterlegen. Da ich aber zu Recht als Spam abgewiesen wurde, poste ich sie jetzt hier. Vorweg: Der Titel ist irreführend – ich habe es nicht geschafft bzw. nicht die Geduld gehabt, das IMAGE-Objekt im Backend zu nutzen. ABER: Um ein Bildchen mit den FE-Methoden zu verkleinern und auszugeben, braucht es nicht unbedingt das IMAGE-Objekt. Die Methode tslib_cObj->getImgResource() genügt.
Hier also kurz und knackig die Lösung (sorry für die wüste Form):
<?php
require_once (PATH_site.’typo3/sysext/cms/tslib/class.tslib_fe.php’);
require_once (PATH_site.’typo3/sysext/cms/tslib/class.tslib_content.php’) ;
class tx_name_tca
{
/**
* Eine User-Funktion für ein TCA-USER-Feld
*
* @param array $PA
* @param t3lib_TCEforms $fobj
* @return string
*/
public function user_source($PA, t3lib_TCEforms $fobj)
{
$tsfe = t3lib_div::makeInstance(‘tslib_fe’, $GLOBALS['TYPO3_CONF_VARS'], 0, 0);
$tsfe->initTemplate();
$GLOBALS['TSFE']->tmpl = $tsfe->tmpl;
$cwd = getcwd();
chdir(PATH_site);
$cObj = new tslib_cObj();
$conf = array(
//z.B. uploads/tx_name/name.jpg:
‘file’ => $PA['row']['myFile'],
‘file.’ => array(
‘maxW’ => ’550′,
‘maxH’ => ’350′
)
);
$imgResource = $cObj->getImgResource($conf['file'], $conf['file.']);
chdir($cwd);
return ‘<img src=”../’.$imgResource[3].’” />’;
}
}




July 19th, 2010 at 19:41
Nette Idee mit dem chdir() aufruf. Das klaue ich für den Fluid Image ViewHelper
May 19th, 2011 at 14:11
Bei mir wird aber das bild bei jedem Aufruf der Funktion neu erzeugt und auch mit neuem Namen gespeichert!.
Obwohl die Daten ordnungsgemäß in der Tabelle “cache_imagesizes” abgelegt werden!
Ich wollte doch diese Funktion zum automatischen Erstellen der wichtigsten Thumbs bei einem Import verwenden um dem FE user unnötige lange Wartezeiten zu ersparen.
Deshalb müssen die cacheing Funktionen arbeiten!
May 19th, 2011 at 15:32
ups – zu früh geposted! alles richtig hier.
Habe nur immer noch einen neuen Timestamp auf meinen Dateien gehabt und das ergibt dann natürlich auch einen neuen Hash