TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

eigenes Extension-Template mit daten befüllen


Autor Nachricht
Verfasst am: 27. 03. 2009 [21:59]
MB-Grille
Themenersteller
Dabei seit: 12.02.2009
Beiträge: 43
hallo,

Ich habe mir mit "kickstarter" eine eigene "Extension" gebastelt. Letztendlich will ich nur eine Befüllte MySQL-Tabelle auslesen ...

Diese Dokumentation fand ich recht hilfreich.:
http://wiki.typo3.org/index.php/Extension_Development%2C_using_HTML-Templates

Die Extension habe ich aber nach dieser Anleitung erstellt:
http://www.traum-projekt.com/forum/73-workshops-und-tutorials/101411-workshop-typo3-extension-programmierung.html

hier jetzt erstmal mein CODE (der eigentlich 1 zu 1 aus der ersten Dokumentation kommt):
PHP
<?php
require_once(PATH_tslib.'class.tslib_pibase.php');
class tx_mbartikelliste_pi1 extends tslib_pibase {
	var $prefixId      = 'tx_mbartikelliste_pi1';		// Same as class name
	var $scriptRelPath = 'pi1/class.tx_mbartikelliste_pi1.php';	// Path to this script relative to the extension dir.
	var $extKey        = 'mb_artikelliste';	// The extension key.
	var $pi_checkCHash = true;
 
	function main($content, $conf) {
		$this->conf = $conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
 
		#ein paar Vorbelegungen
		$this->id=$GLOBALS['TSFE']->id;
		$this->template=$this->cObj->fileResource('EXT:mb_artikelliste/template.html');
		$content = $this->mb_liste();
		return $this->pi_wrapInBaseClass($content);
	}
 
 
	function mb_liste() {
		#unser Subpart
		// Get the parts out of the template
		$template['total'] = $this->cObj->getSubpart($this->templateCode,'###TEMPLATE###');
		$template['item'] = $this->cObj->getSubpart($template['total'],'###ITEM###');
 
 
		#Datensätze holen nach product_kind
		$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
			'*',   #select
			'tx_mbartikelliste_artikeltabelle', #from
			'hidden=0 and deleted=0 and pid='.$this->id,  #where
			$groupBy='product_kind',
			$orderBy='product_kind',
			$limit='');
 
		while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
 
			// Fill marker
			$markerArray['###MARKER1###'] = $row['article_name'];
			$markerArray['###MARKER2###'] = $row['product_kind'];
			var_dump($row['article_name']);
			// Add subpart into a string
			$content_item .= $this->cObj->substituteMarkerArrayCached($template['item'], $markerArray);
		}
 
		// Fill subpart marker
		$subpartArray['###CONTENT###'] = $content_item; 
		var_dump($content_item);
		return $this->cObj->substituteMarkerArrayCached($template['total'], array(), $subpartArray);
	}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mb_artikelliste/pi1/class.tx_mbartikelliste_pi1.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mb_artikelliste/pi1/class.tx_mbartikelliste_pi1.php']);
}
?>


Hier das Template (1 zu 1 aus der Dokumentation):
HTML
<h3>TEMPLATE</h3>
 <em>This is a more complex html template</em>
 <!-- ###TEMPLATE### begin -->
  <table>
   <!-- ###CONTENT### -->
    <!-- ###ITEM### -->
     <tr>
      <td>###MARKER1###</td><td>###MARKER2###</td>
     </tr>
    <!-- ###ITEM### -->
   <!-- ###CONTENT### -->
  </table>
 <!-- ###TEMPLATE### end -->


Doch leider funktioniert es nicht so wie ich will icon_frown.gif

Die reine SQL-Abfrage klapp ganz gut, und wird auch in der Schleife gut verarbeitet, denn wenn ich in der Schleife ein var_dump($row['article_name']); auführe, werden mir die richtigen Daten ausgespuckt, ... wobei es mich irritiert, warum immer "string(#Zeichenlänge#) "Eintrag"" dasteht anstatt nur der Eintrag. In dem Template wird aber nichts ausgegeben.

sobald ich aber an letzter Stelle der While-Schleife ein var_dump($content_item); mache, wirft er mir für jedes Item nur noch string(0) "" raus.

Daher vermute ich, dass irgend etwas an dieser Zeile in der While-Schleife nicht stimmt:
$content_item .= $this->cObj->substituteMarkerArrayCached($template['item'], $markerArray);

Kennt sich hier jemand damit aus und kann mir weiterhelfen?
Profil
Verfasst am: 27. 03. 2009 [23:44]
speedprogs
Dabei seit: 23.03.2009
Beiträge: 64
Hallo MB-Grille,

hast du gesehen, dass du die File-Ressource deines HTML-Templates zwar in die Variable "$this->template" einliest, aber in der Funktion "mb_liste" auf die Variable "$this->templateCode" zugreifst?




Testet das sicherste Kontaktformular für TYPO3:
http://typo3.org/extensions/repository/view/sp_bettercontact/current/
ProfilWWW
Verfasst am: 29. 03. 2009 [10:43]
Michaelh74
Dabei seit: 16.11.2004
Beiträge: 1509
Diese Thema gehört eigentlich nicht in den Bereich Anfängerfragen, sondern Extension Programmierung!

Wenn Du Dich mit der Ext. Programmierung schwer tust, kann Dir für diese relativ einfach Aufgabe sicher auch eine bereits fertige Extension hilfreich sein. Da müsste es einige geben, die aus Tabellen einen Ausgabe erzeugen.

Gruß
Michael
Profil