Zum Inhalt springen

*.php Datei als Produkt Bild

Erstellt am 18. September 2006 · 1 Antwort · letzte Antwort am 21. September 2006

Tags: Frage

M.​Schmidt ·

Servus in die Runde.

Tja nun musste ich mich nach langer Zeit und arbeit mit Typo3 doch hier anmelden. Alles weitere konnte ich bisher durch Forumeinträge und die Doku lösen doch hier steh ich nun an einem Punkt an dem ich nicht weiter komme.

So ...

Ich habe derzeit einen Shop laufen den ich selbst ohne Typo3 verwiklicht habe. Jetzt wollte ich das ganze in Typo3 umsetzen.

Ich benutze ImageMagick um Userabhängig Bilder zu erstellen. Direktes Beispiel:
Ich lade ein Foto vom User hoch und nun erstelle verschiedenste Produkte mit diesem Foto. So wollte ich das auch bei den Produkten der Extension tt_products machen. Nur Wie ???

Ich wollte als Bildaufruf diese Struktur verwenden: imagemagick.php?type=tasse

Den Namen des Bildes bekomme ich durch den Login des Kunden.

In der PHP Datei wird dann mit dem Typen ein Bild erstellt. und zurückgegeben.

z.B: Tasse mit Sepia Bild des Kunden

$noimage = "fileadmin/images/noimage.gif";
$input="fileadmin/images/".$GLOBALS['TSFE']->fe_user->getKey('ses', 'path'); $output="fileadmin/images/".$GLOBALS['TSFE']->fe_user->getKey('ses', 'path')."_".$_GET['type'];

if(!file_exists($output)) {
 switch ($_GET['type']) {
  case "tasse":
   exec('convert '.$input.' -sepia-tone 87% -colorize 13% '.$output);
  break;
 }
}

if(file_exists($output))   {
    $image = imagecreatefromjpeg($output);
    header("Content-Type: image/gif");
    imagegif($image);
                        }
else {
    $image = imagecreatefromjpeg($noimage);
    header("Content-Type: image/gif");
    imagegif($image);
}

Ich hab die Datei mal auf ein Produkt eingekürtzt.
Die Dateien werden mittels eines Cron Jobs täglich gelöscht, wenn die Datei älter als 3 Tage ist. Damit der Server sich nicht unnötig füllt.

Wie könnte ich das am besten machen ??? Evtl. mittels eines eigenen Markers in der Extension.
Oder kann ich das evtl. sogar mittels TS lösen ?
Gibt es schon eine passende Extension ?

Vllt. hatte das Problem auch schon jemand und hat es gelöst ...

M.​Schmidt ·

*hm*

Ok scheint ja hier niemand weiter zu wissen wie man sowas macht.
Aaaaaaaalso werde ich meine Lösung mal posten. Da dynamische Bilder (abhängig vom Login) doch schon öfters vorkommen !! Oder ? Naja egal :

Ich binde zunächst vergebe ich eigene Session Variablen in der class.t3lib_userauth.php im abschnitt der Funktion compareUident().

$GLOBALS['TSFE']->fe_user->setKey('ses','var','value');
$GLOBALS['TSFE']->fe_user->sesData_change = 1;
$GLOBALS['TSFE']->fe_user->storeSessionData();

So zum Beispiel. Dort lege ich dann den angemeldeten benutzer ab. (der kommt bei mir aus einer Typo3 fremden DB) da ich diesen dann zur Erstellung und Zuordnung der jeweiligen Bilder brauche.

Weiterhin um dann den Shop anzupassen habe ich in der class.tx_ttproducts_image.php folgendes geändert :

	while(list($c,$val)=each($imgs))	{
	$confMarkerArray = array();
	$imageConf = $this->conf[$imageRenderObj.'.'];
	if ($c==$imageNum)	break;
	$bUseImage = false;
	$meta = false;
	if ($val)	{
	// SCHMIDT					
	 include('fileadmin/php/imagemagick.php'); // um meine Bilder zu erstellen
	$val=$GLOBALS['TSFE']->fe_user->sesData['name']; // Name des Bildes 1. Teil
	$val.="_".substr($val,0,strrpos($val,".")).".jpg"; // Name des Bildes 2.Teil
	$imageConf['file'] = $dirname.'/temp/'.$val; // Vollständiger Pfad
	// in diesen Zeilen wurde nun der Pfad zum Bild geändert
        // der Pfad in meinem Fall schaut nun so aus :
        // ***DOMAINNAME****/uploads/pics/temp/ms1000-1000_30x45.jpg
        // Tempo habe ich erstellt und dort werden die Bilder abgelegt.
	$bUseImage = true;
  } // hier gehts dann mit dem Else zweig weiter. interessiert aber nicht

Vllt. hilfts ja jemandem.