Zum Inhalt springen

Bilder werden nicht angezeigt..

Erstellt am 11. Oktober 2006 · 3 Antworten · letzte Antwort am 28. Oktober 2006

Tags: Bilder, Frage

Arnie2001 ·

Hallo Leute, ich habe mal gem. typo3 - Praxiswissen folgenden Beispiel nachgebaut:

<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2006  <email@quadronet.de>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

require_once(PATH_tslib.'class.tslib_pibase.php');


/**
 * Plugin 'Einrichtungen Liste' for the 'user_einrichtungen_liste' extension.
 *
 * @author	 <email@quadronet.de>
 * @package	TYPO3
 * @subpackage	user_einrichtungenliste
 */
class user_einrichtungenliste_pi1 extends tslib_pibase {
	var $prefixId = 'user_einrichtungenliste_pi1';		// Same as class name
	var $scriptRelPath = 'pi1/class.user_einrichtungenliste_pi1.php';	// Path to this script relative to the extension dir.
	var $extKey = 'user_einrichtungen_liste';	// The extension key.
	
	/**
	 * The main method of the PlugIn
	 *
	 * @param	string		$content: The PlugIn content
	 * @param	array		$conf: The PlugIn configuration
	 * @return	The content that is displayed on the website
	 */
	function main($content,$conf)	{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_USER_INT_obj=1;	// Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!
		
		
		
	//variablen setzten
	$content= "";
	$marker = array();
	$img_pfad = "uploads/tx_user_einrichtungenliste/";
	
	//Ggf. einen Parameter auslesen, ansonsten die aktuelle Seite verwenden
	$einrichtungenPageId = $conf["einrichtungenPageId"];
	if (!intval($einrichtungenPageId)) $einrichtungenPageId= $GLOBALS["TSFE"]->id;
	

	//die Designvorlage laden
	$temp = $this->cObj->fileResource($conf["templateFile"]);
	// Teilbereiche ansprechen
	$temp = $this->cObj->getSubpart($temp, "###EINRICHTUNGEN###");
	//einen weiteren Teilbereich ansprechen
	$temp_eintrag = $this->cObj->getSubpart($temp, "###EINTRAG###");
	// inhalte von $temp ausgeben, mit return erfolgt abbruch
	//return $temp; //später wieder entfernen
	
	
	//die Datenbank ansprechen und in einer Schleife ausgeben mit Datenbankabstraktion
	$res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*", "user_einrichtungenliste_main"," deleted = 0 AND hidden = 0 AND pid= '".$einrichtungenPageId."'");
	while($row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res)) {
	
	//ein Array mit Platzhalter als Schlüssen mit den Werten füllen
	$marker["###NAME###"] = $row["name"];
	
	
	// Das Bild auslesen und verarbeiten
	$conf["bild."]["file."]["10."]["file"] = $img_pfad.$row["bild"];
	if ($this->cObj->fileResource($img_pfad.$row["bild"])) {
	$marker ["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild"], $conf["bild."]);
	} else {
		$marker ["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild_default"], $conf["bild_default."]);
		
		}
	
	//den Teilbereich ###EINTRAG### und das Array miteinander "vereinen"
	$content.= $this->cObj->substituteMarkerArrayCached($temp_eintrag, $marker);
	}
	//letztmalig den umhüllenden Teilbereich ersetzen und das Ergebnis ausgeben
	$content = $this->cObj->substituteSubpart($temp, "###EINTRAG###", $content);
	return $content;
	}
}



if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/user_einrichtungen_liste/pi1/class.user_einrichtungenliste_pi1.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/user_einrichtungen_liste/pi1/class.user_einrichtungenliste_pi1.php']);
}

?>

Folgendes TypoScript:

plugin.user_einrichtungenliste_pi1.einrichtungenPageId = 38


# Parameter für das eigene Mitarbeiter-Plugin
plugin.user_einrichtungenliste_pi1 {
   testObjekt = IMAGE
   testObjekt.file = GIFBUILDER
   testObjekt.file {
      XY = 100,100
      backColor = red
   }
   # Pfad zur Designvorlage als Parameter angeben
   templateFile = fileadmin/templates/einrichtungen.html
   
   # So soll ein Foto eines Mitarbeiters formatiert werden.
   bild = IMAGE
   bild {
      XY = [10.w]+2, [10.h]+2
      backColor = black
      10 = IMAGE
      # Der Pfad zum Bild wird später dynamisch ersetzt.
      10.file = unbekannt
      10.file.width = 150
      10.offset = 1,1
   }
   # Dieses Bild soll angezeigt werden, wenn kein Foto vorhanden ist.
   bild_default = IMAGE
   bild_default.file = GIFBUILDER
   bild_default.file {
      XY = 152, 50
      backColor = white
      10 = TEXT
      10.text = N/A
      10.fontSize = 20
      10.fontColor = black
      10.niceText = 1
      10.offset = 30,25
   }
}

Leider werden immer nur die default_bilder angezeigt, obwohl die Bilder definitiv in dem angegebenen Ordner sind.

Ist das Beispiel nicht mit Typo3 Version 4 kompatibel?

Was mache ich falsch?

Vielen Dank für Eure Mühe!!!

CU

steffenk ·

hier ist der Fehler:

$conf["bild."]["file."]["10."]["file"] = $img_pfad.$row["bild"];

muss heissen

$conf["bild."]["10."]["file"] = $img_pfad.$row["bild"];

Einfach im TS genau das Objekt und seine Verschachtelung anschauen, dann ist es leicht das Array zu bilden.

Arnie2001 ·

Hallo Steffenk, vielen Dank für deine Hilfe!

Leider ist es das auch nicht, es werden immer noch die default_Bilder angezeigt.

Es ist zum verrückt werden!

Arnie

primomotore ·

Hallo Arnie,

da ist ein Fehler im Buch...

Ich hab es wie folgt geändert, und es funktioniert:

TypoScript

plugin.user_products_pi1 {

   #ProductPageId = 36
   templateFile = fileadmin/template/Html/produkte.htm
   
      bild_klein = IMAGE
      bild_klein {
      
      # Der Pfad zum Bild wird später dynamisch ersetzt.
      file = unbekannt
      file.width = 170
   } 
   
      bild_gross = IMAGE
      bild_gross {
      
      # Der Pfad zum Bild wird später dynamisch ersetzt.
      file = unbekannt
      file.width = 400
   } 
  
   
   
   # Dieses Bild soll angezeigt werden, wenn kein Foto vorhanden ist.
   bild_default = IMAGE
   bild_default.file = GIFBUILDER
   bild_default.file {
      XY = 155, 50
      backColor = white
      10 = TEXT
      10.text = N/A
      10.fontFile = fileadmin/fonts/verdana.ttf
      10.fontSize = 14
      10.fontColor = black
      #10.niceText = 1
      10.offset = 30,25
   } 
 }

Und in der class_user_products_pi1.php

$conf["bild_klein."]["file"]= $img_pfad.$row["bilder"];