Zum Inhalt springen

userFunc -> Was mach ich falsch?

Erstellt am 4. August 2008 · 2 Antworten · letzte Antwort am 5. August 2008

Tags: PHP, Frage

Grader ·

Hallo Community,

ich habe ein Problem, wo ich im Moment nicht weiter komme. Ich möchte im TypoScript realisieren, dass wenn es Inhalt im styles.content.get gibt, ein Druckerbutton erscheint. Da habe ich die Info bekommen, dass ich dies am Besten über eine userFunc hinbekomme. Ich habe mich daran versucht, aber scheitere. Bislang musste ich auch noch nie eine UserFunc in Typo erstellen.

Ich poste mal, was ich bis jetzt geschrieben habe. Erstmal das TypoScript im meinem kaskadierten temp.druckversion. Dort möchte ich die Möglichkeit über das PHP-Script nutzen, dass temp.druckversion nur ausgeführt wird, wenn Inhalt vorhanden ist.

# Funktionaler Druckbutton
# PHP Variable ob Druckbutton erscheint oder nicht!
includeLibs.content_empty = fileadmin/metsoft/php/content_empty.php
temp.printFunc = USER_INT
temp.printFunc {
	userFunc = user_conten_empty -> visibility
}

temp.druckversion = COA
temp.druckversion {
	
	#wrap = <a href="|" name="Druckversion" title="Druckversion" target="_blank"><img src="{$printbutton}" title="print" class="" alt="" /></a>
	10 = TEXT	
	# aktuelle Adresse ermitteln
	10.data = getIndpEnv:REQUEST_URI	
	# typeNum anfügen
	#10.wrap = |&type=98
	10.wrap = <a href="|
	
	20 = TEXT	
	# aktuelle Adresse ermitteln
	20.data = getIndpEnv:REQUEST_URI	
	# typeNum anfügen
	20.wrap = " name="Druckversion" title="Druckversion" onclick="window.open('|&type=98' , 'drucken', 'width=1024,height=600, resizable=yes, scrollbars=yes, menubar=yes');"><img src="{$printbutton}" title="print" class="" alt="" /></a>

}
	
# ein abweichendes Seiten-Template für den Typ 98 (=Druckversion)
alt_print = PAGE
alt_print {
	typeNum = 98
	bodyTag = <body onload="window.print()">
	stylesheet = fileadmin/metsoft/css/style_metsoft_print.css
	
	# Content
	10 = TEXT
	10.value = <img src="fileadmin/metsoft/images/printversion/metsoft_logo_klein.png" title="print" class="" alt="" /><br />

	20 = TEXT
	20.data = date:U
	20.strftime = %d.%m.%Y
	20.wrap = | <br />	
	
	30 = TEXT
	30.data = date:U
	30.strftime = %H:%M
	30.wrap = |   {$time_print} <br />
	
	40 = TEXT
	40.data = field:title
	40.wrap = <b>|</b>
	
	50 < styles.content.get
	
	60 = TEXT
	60.data = getIndpEnv:REQUEST_URI
	60.wrap= <br /><br /><div id="url"><b>URL:</b><br /><div id="url_box">http://www.metsoft.biz|</div></div>
	
	70 = TEXT
	70.value = {$license}
}

Im Root-Template meiner Seite wird dann das obige Template eingfügt:

10.workOnSubpart = DOKUMENT
	10.marks {
		# Hauptmenü
		MENU_MAIN < temp.navigation
		# ENDE
		
		...
  		
  		# Druckversion
  		PRINT < temp.druckversion		
  		# ENDE

Nun folgt zur Ansicht mein geschriebenes PHP-Script:

?php
class user_content_empty {
	var $cObj;
	function visibility($content) {
		if (mysql_num_rows(mysql_query('SELECT * FROM tt_content WHERE (pid = 43) AND ((colPos =1) OR (colPos =2) OR (colPos =3) OR (colPos =4)) AND (deleted = 0)')) > 0) {
			$content.= 'Hier wird nix gedruckt';
			return $content;
		} else {
			$content.= 'Da gibts was zum drucken';
			return $content;
		}
	}
}
?>

Zur Anmerkung: Ich möchte unbedingt wissen wie das geht! und was ich falsch mache oder vergesse. Ich müsste die Function nicht einfügen, weil keine Seite ohne Inhalt dargestellt werden soll.

Im obigen TypoScript weiß ich, dass das einfache einfügen des temp.printFunc = USER_INT usw. nicht reicht, und erst noch die Abhängigkeit zum temp.druckversion erstellt werden muss, aber ich hab schon alles versucht. Ich komm nicht weiter. Immerhin läuft alles auf der Seite reibungslos, wenn ich die Function nicht einbaue.

Vielen Dank für Hilfen, im Vorraus!

d.​walter ·

Hallo Grader,

als bei der UserFunc kann ich dir nicht helfen. Aber du wirst ja die Spalte styles.content.get an einen Marker ausgeben lassen. Packe Sie doch vorher in ein COA mit stdwrap.required, den Print-Button mit rein und nur wenn die Spalte gefüllt ist wird auch der Button angezeigt.

Daniel

Grader ·

Hi D.Walter,

danke für den Tipp, aber kannst du mir das ein Beispiel geben, inwiefern ich nach einem ***.required = 1 den Printbutton abhängig machen kann.

temp.inhalt < styles.content.get

temp.inhalt.stdWrap.required = 1
#Nun die Stelle für den Printbutton

Dazu muss ich sagen, dass der Printbutten von div-Layout nicht mit dem Content zusammen hängt, also ich kanns nicht wrappen durch zb:

temp.inhalt.stdWrap.innerWrap = <div id="print"><div id="maincontent">beispiel</div></div>

Vielleicht steht ich schlicht und einfach auf dem Schlauch, und natürlich zu wenig Erfahrung. Vielleicht gehts ja mit dieser Methode noch^^

Grader