Zum Inhalt springen

ERSTER VERSUCH

Erstellt am 24. August 2004 · 11 Antworten · letzte Antwort am 25. Februar 2005

Tags: Frage

grisub ·

hallo forum

bin dabei meine erste extension zu schreiben, aber es will nicht so recht.

kann mir jemand sagen was in diesem code falsch ist ?

function main($content,$conf){
// Besorge die lokale Konfiguration
$this->conf = $conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
// Lade das Template-File.
$this->templateCode = $this->cObj->fileResource($this->conf["templateFile"]);

if ($this->templateCode=="") {
return "<h3>Mitglieder: Kein HTML-Template gefunden:</h3>".$this->conf["templateFile"];
}
// Rufe die Funktion displayAll() auf und schreibe das Ergebnis nach $content
$content .= $this->displayAll();
// Gebe den erstellten Content zurück
return $this->pi_wrapInBaseClass($content);

im setup meiner extension steht das noch drinnen

// HTML-Template inkl. Pfad
templateFile = fileadmin/mitglieder.html

wenn ich nun alles im FE anschaue schreibt er mir hin, "Mitglieder: Kein HTML-Template"

kann mir jemand weiterhelfen ??

TW ·

hi
wenn du dich genau an das tutorial hälst, was du da offensichtlich hast, dann sollte es doch klappen...

btw:
such hier mal nach code feld oder code field...

das fehlt noch bei dir!

cu
thorsten

grisub ·

ich bin jetzt das ganze tutorial nochmals durchgegangen aber konnte im code leider nirgends "feld oder field" finden !?!

bin leider in php nicht ganz fit :-(

kann mir jemand sagen was das bewirkt bzw. was ich da hineinschreiben muss

danke

grisub ·

hab jetzt alles erdenkliche ausprobiert, komme aber nicht drauf, wies funktioniert. :o

kann sich einer erweichen, und den code mal anschauen ?? o.O

<?php
/***************************************************************
*  Copyright notice
*  
*  (c) 2004 EC White-Sharks (webmaster@white-sharks.at)
*  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!
***************************************************************/
/** 
 * Plugin 'memberkist' for the 'mitglieder' extension.
 *
 * @author	EC White-Sharks <webmaster@white-sharks.at>
 */


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

class tx_mitglieder_pi1 extends tslib_pibase {
	var $prefixId = "tx_mitglieder_pi1";		// Same as class name
	var $scriptRelPath = "pi1/class.tx_mitglieder_pi1.php";	// Path to this script relative to the extension dir.
	var $extKey = "mitglieder";	// The extension key.
	
	/**
	 * [Put your description here]
	 */
	function main($content,$conf){
                                                            // Besorge die lokale Konfiguration
                                                            $this->conf = $conf;
                                                            $this->pi_setPiVarDefaults();
                                                            $this->pi_loadLL();
                                                            // Lade das Template-File.
                                                            $this->templateCode = $this->cObj->fileResource($this->conf["templateFile"]);
                                                            if ($this->templateCode=="") {
                                                                                                        return "<h3>Mitglieder: Kein HTML-Template gefunden:</h3>".$this->conf["templateFile"];
                                                                                                        }
                                                            // Rufe die Funktion displayAll() auf und schreibe das Ergebnis nach $content
                                                            $content .= $this->displayAll();
                                                            // Gebe den erstellten Content zurück
                                                            return $this->pi_wrapInBaseClass($content);
                                               }
}

#######################################################################

function displayAll(){
// Lösche $content und lade die lokale Konfiguration für displayAll
$content = "";
$lconf = $this->conf["displayAll."];
// Definiere den Bereich des Templates in dem gearbeitet wird.
// Im Template sieht das dann so aus:
// <!-- ###TEMPLATE_DISPLAY_ALL### begin -->
// ...Der HTML-Code...
// <!-- ###TEMPLATE_DISPLAY_ALL### end -->
$template = $this->cObj->getSubpart($this->templateCode,"###TEMPLATE_DISPLAY_ALL###");
// Definiere ein Array für die Marker
$markerArray=array();
// Definiere ein Array für die wrappedSubparts (benutzen wir hier nicht, muss aber übergeben werden.
$wrappedSubpartArray=array();
//Lese alle Daten aus der Datenbank aus und speicher diese in $rows
//Dafür benutzen wir die Funktion getItems() die später noch definiert wird.
$rows = $this->getItems();
//Gehe alle ausgelesenen Daten durch und schreibe ins Template
while( list($c,$row)=each($rows) ){
// Definiere das Foto. Wenn nicht vorhanden setze Dummybild ein.
if ($row["photo"] == false) {$lconf["image."]["file"] = "fileadmin/images/nicht_vorhanden.gif";}
else {
$lconf["image."]["file"] = "uploads/tx_mitglieder/".($row["photo"]);
}
$theImgCode = $this->cObj->IMAGE($lconf["image."]);
// Ersetze Wrap-Marker mit Inhalt aus der Datenbank
// Diese Funktion habe ich noch nicht ausprobiert. Aber im Template sieht das dann wohl so aus:
// <!--###LINK_ITEM###--> ###FIRST_NAME### <--###LINK_ITEM###-->
// ###FIRST_NAME### wird dann vom array umschlossen.
//
//$wrappedSubpartArray=array();
//$wrappedSubpartArray["###LINK_ITEM###"]= array('<A href="'.$this->einefunktion

// Ersetze die einzelne Marker mit Inhalt aus der DB
$markerArray["###FIRST_NAME###"] = $row['first_name'];
$markerArray["###LAST_NAME###"] = $row['last_name'];
$markerArray["###POSITION###"] = $row['position'];
$markerArray["###BIRTHDAY###"] = $row['birthday'];
$markerArray["###DESCRIPTION###"] = $row['description'];

// Ersetze die einzelne Marker mit Inhalt aus der DB
// Die Zeilenumbrüche aus dem Textfeld in <br> Tags umwandeln
$markerArray["###FUNCTION###"] = nl2br($row['function']);
// Hier binden wir das Foto des Mitglieds ein. Die nötigen Daten dazu kommen aus $theImgCode
$markerArray["###PHOTO###"] = $theImgCode;
// Die HTML-Vorlage inkl. ersetzte Marker in die $content Variable schreiben
$content.=$this->cObj->substituteMarkerArrayCached($template,$markerArray,array(),
$wrappedSubpartArray);
}
// Ein paar Debugbefehle
#t3lib_div::debug($conf);
#t3lib_div::debug($this->getItems());
// Wir geben die gerade erzeugten Daten an die main() Funktion zurück
return $content;
}

function getItems(){
// pid_list ist die PID/PID-Liste des Sysordners mit den Daten
// Ist im Setup keine Liste mit ID angegeben werden die Werte des "Ausgangspunktes" benutzt.
$this->config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf
["pid_list."]));
$this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $this->cObj->data["pages"];
list($pid) = explode(",",$this->config["pid_list"]);
$this->pid = $pid;
// Führe die Abfrage durch und lasse versteckte Elemente aus
$query = "SELECT * FROM tx_mitglieder_liste WHERE pid IN (".$pid.")" . $this->cObj->enableFields
("tx_mitglieder_liste") . " ORDER BY sorting";
$res = mysql(TYPO3_db,$query);
// Schreibe in das Array $out
$out = array();
while( $row = mysql_fetch_assoc($res) ){
$out[]=$row;
}
return $out;
}


if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/mitglieder/pi1/class.tx_mitglieder_pi1.php"])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/mitglieder/pi1/class.tx_mitglieder_pi1.php"]);
}

?>

danke

TW ·

hi
du hast dich ans tutorial gehalten, ja?
hast du auch an die setup und die constants gedacht?

cu
thorsten

grisub ·

ja habe ich

constants

// Die maximale Breite des Thumbnails usw. wird hier definiert
plugin.tx_mitglieder{
// Die maximale Breite des Bildes im Template
maxImageWidth = 150
// Ein Klick vergrößert das Bild?
clickEnlarge = 1
}

setup

// ID des SysOrdners mit den Daten
pid_list = 274
// HTML-Template inkl. Pfad
templateFile = fileadmin/mitglieder.html
// Konfiguration exklusiv für die displayAll Funktion
displayAll{
              image {
                         file.maxW = {$plugin.tx_mitglieder.maxImageWidth}
                         alttext = Fachschaft
                         imageLinkWrap = {$plugin.tx_mitglieder.clickEnlarge}
                         imageLinkWrap {
                                                 enable = 1
                                                 bodyTag = <body bgcolor="#000000">
                                                 wrap = <a href="javascript:close()"> | </a>
                                                 width = 400m
                                                 height = 400
                                                 JSwindow = 1
                                                 JSwindow.newWindow = 1
                                                 JSwindow.expand = 17,20
                                                 } // ENDE imageLinkWrap
                         } // ENDE image
               } // ENDE displayALL
grisub ·

hallo

mein problem ist, dass wenn ich einen spieler angelegt habe, dieser im BE nicht angezeigt wird.
wenn ich die seite (wo ich das plug in eingefügt habe)aufrufe, dann erscheint folgender text "Mitglieder: Kein HTML-Template gefunden: "
ich finde keinen fehler mehr, warumm das bei mir nicht funktioniert

gruß
christian

nowomaniac ·

Hi.

Ich bin zwar auch nur ein nuub, aber für mich sieht es so aus, als ob du vergessen hast im setup dein plugin anzugeben, wo die daten eingehangen werden sollen.

Ist nur so ne idee.

bruce ·

Hallo zusammen,
Ich weiss es ist schon einige Zeit her seit dieses Thema behandelt wurde.
Leider habe ich aber das selbe Problem, bei mir erscheint auch immer die Meldung das kein Template gefunden wurde.
An grisub: Konntest Du dein Problem lösen? Wenn ja, wie?
Ich bin langsam am verzweifeln... 😢

Gruss
Bruce