Zum Inhalt springen

Bilder im Mitarbeiter-Plugin werden nicht angezeigt

Erstellt am 26. Oktober 2005 · 5 Antworten · letzte Antwort am 6. November 2005

Tags: Bilder, PHP, Frage

johanna ·

Hallo alle zusammen,
ich arbeite das Buch von Typo3 Praxiswissen von Robert Meyer durch und habe gerade meine erste Extension - das Mitarbeiter-Plugin - fertiggestellt. Es läuft alles, bis auf das das Bild nicht aus der DB gelesen wird. Im Quellcode bleibt die Stelle leer, also erscheint auch kein HTML-img-Tag. Ich kann lt. Buch keinen Fehler finden. Bin für jeden Tipp dankbar! Hier mein TS dazu:

# Parameter für das eigene Mitarbeiter-Plugin
plugin.user_mitarbeiter_pi1 {
   testObjekt = IMAGE
   testObjekt.file = GIFBUILDER
   testObjekt.file {
      XY = 100,100
      backColor = red
   }
    # Pfad zur Designvorlage als Parameter angeben
   templateFile = fileadmin/mitarbeiter.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.fontFile = fileadmin/fonts/verdana.ttf
      10.fontSize = 20
      10.fontColor = black
      10.niceText = 1
      10.offset = 30,25
   }
}

und hier nun der PHP-Teil in class.user_mitarbeiter_pi1.php:

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 setzen
   $content = "";
   $marker = array();
   $img_pfad = "uploads/tx_usermitarbeiter/";
      
// Die Designvorlage laden
$tmpl = $this->cObj->fileResource($conf["templateFile"]);
// Einen Teilbereich der Designvorlage auslesen
$tmpl = $this->cObj->getSubpart($tmpl, "###MITARBEITER###");
 // Einen weiteren Teilbereich aus dem Teilbereich auslesen
   $tmpl_eintrag = $this->cObj->getSubpart($tmpl, "###EINTRAG###");
   
 // Ggf. einen Parameter auslesen, ansonsten die aktuelle Seite verwenden
   $mitarbeiterPageId = $conf["mitarbeiterPageId"];
   if (!intval($mitarbeiterPageId)) $mitarbeiterPageId=$GLOBALS["TSFE"]->id;
   
   // Die Datenbankabfrage inkl. Unterstützung von Datenbankabstraktion
   $res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*", "user_mitarbeiter_main", "deleted = 0 AND hidden = 0 AND pid = '".$mitarbeiterPageId."'");
while ($row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res)) 
{
      // Ein Array mit Platzhaltern als Schlüssel mit den Werten füllen
      $marker["###NAME###"] = $row["vorname"]." ".$row["nachname"];
     // 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($tmpl_eintrag, $marker);
   }
   // Letztmalig den umhüllenden Teilbereich ersetzen und Ergebnis ausgeben
   $content =$this->cObj->substituteSubpart($tmpl, "###EINTRAG###", $content);
   return $content;
  }

Danke

meisenkaiser ·

Hallo,

Auf Seite 327 (Bsp 11-14) muss es heißen:

bild = IMAGE
bild.file = GIFBUILDER
bild.file {
XY = [10.w]+2, [10.h]+2
backColor = black
10 = IMAGE
10.file = unbekannt
10.file.width = 150
10.offset = 1,1
}

Gruß

meisenkaiser

johanna ·

Danke für die schnelle Hilfe, nun läuft alles wie gewünscht.

Wo wir gerade schon beim Mitarbeiter-Plugin sind, habe ich noch eine Frage dazu.

Im Backend gebe ich den Inhalt immer mit einem neuen Datensatz ein. Wo kann ich nun auf diesen Datensatz anschließen zugreifen, um Ihn zu bearbeiten, ändern etc.? Irgendwie bin ich blind und kann nur immer neue hinzufügen oder muß über die DB gehen.
Weiß da jemand weiter?

Johanna

tju79 ·
johanna schrieb

Danke für die schnelle Hilfe, nun läuft alles wie gewünscht.

Wo wir gerade schon beim Mitarbeiter-Plugin sind, habe ich noch eine Frage dazu.

Im Backend gebe ich den Inhalt immer mit einem neuen Datensatz ein. Wo kann ich nun auf diesen Datensatz anschließen zugreifen, um Ihn zu bearbeiten, ändern etc.? Irgendwie bin ich blind und kann nur immer neue hinzufügen oder muß über die DB gehen.
Weiß da jemand weiter?

Johanna

Welches Skript ist das? Gibts dafür einen Link? Bin neugierig geworden.

johanna ·

Hallo,

das Script steht oben und für mehr muß man sich dann evtl das Buch (steht auch oben) kaufen. Einen Link dazu habe ich leider nicht, da ich alles offline mache und ausprobiere. 8-)

Tut mir leid, daß ich im Augenblick dazu nicht mehr sagen kann.

Aber die Frage mit dem Bearbeiten der Datensätze im Backend habe ich immer noch. Dasselbe Problem habe ich bei der Extension mininews.

Johanna

johanna ·

Hallo,

dann gebe ich mir nun mal selbst die Antwort. Ich habe es nun herausgefunden.

Klicke unter Web auf List - hier sieht man dann rechts, dass man z.B. 3 Mitarbeiter angelegt hat. Klicke auf das Icon und dann auf Bearbeiten - alles klar?

Johanna