Zum Inhalt springen

include funkioniert nicht richtig

Erstellt am 3. August 2003 · 5 Antworten · letzte Antwort am 25. August 2004

Tags: PHP, Frage

Schlingel ·

ich hab ein kleines include geschrieben, dass innerhalb eines tags den wert ###RND_BG### durch eine zufallszahl zwischen 1 und 13 ersetzen soll, dazu hab ich eine inc datei erstellt, die per typoscript korrekt eingebunden:

page.includeLibs.rndbglib = fileadmin/schlingel/templates/rndbg.inc
.
.
.
page.10.marks.RND_BG = USER_INT
page.10.marks.RND_BG.userFunc = user_rndbg->build

die rndbg.inc sieht so aus:

<?php 

class user_rndbg { 
var $cObj; 
function build() { 
global $TSFE; 
                     {

echo rand(1,13)

      }
   }
}
?>

wenn man jetzt mal nen blick auf http://www.schlingel.de wirft wird man einen tollen error sehen und ich versteh einfach nicht was an der zeile
echo rand(1,13)
falsch sein soll.

db ·

Hallo,

wie wäre es mit

echo rand(1,13);

1:23 Uhr, naja... verständlich #giggle#

Grüße

Schlingel ·

oha! es war wohl einfach zu spät, dankesehr!

jetzt hab ich ein anderes problem, hier ein auszug aus meinen html template:

<td background="fileadmin/schlingel/templates/img/rnd_bg/color###RND_BG###.gif">&nbsp;</td>

und dazu mein TS von oben, das sollte doch eigentlich den ###RND_BG### Teil mit einer zufallszahl von 1-13 ersetzten oder? es passiert aber etwas merkwürdiges:

http://www.schlingel.de

der vollständigkeit halber hier mal mein ganzes setup TS:

# Default PAGE object:
page = PAGE
page.typeNum = 0
page.config.intTarget = _top
page.stylesheet = media/scripts/defaultstylesheet.css
page.bodyTag = <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" link="#33333" vlink="#333333" alink="#333333">
page.includeLibs.rndbglib = fileadmin/schlingel/templates/rndbg.inc
page.10 = TEMPLATE
page.10 {
    template = FILE
    template.file = fileadmin/schlingel/templates/template.html
    workOnSubpart = DOKUMENT
    marks.INHALT = CONTENT
    marks.INHALT.table = tt_content
}

page.10.marks.RND_BG = USER_INT
page.10.marks.RND_BG.userFunc = user_rndbg->build

page.10.marks.MENU = HMENU
page.10.marks.MENU.entryLevel = 0
page.10.marks.MENU.1 = TMENU
page.10.marks.MENU.1 {
expAll = 1
NO.allWrap = <font face=Verdana size="1"><b>|</b></font><br>
}
page.10.marks.MENU.2 = TMENU
page.10.marks.MENU.2 {
expAll = 1
NO {
   allWrap = <font face=Verdana size="1" color=black><b>| </b></font><br>
   beforeImg = media/bullets/bullet1_n.gif
   beforeROImg = media/bullets/bullet1_h.gif
   RO = 1
}
}

page.10.marks.TITLE_GMENU = HMENU
page.10.marks.TITLE_GMENU.1 = GMENU
page.10.marks.TITLE_GMENU.1 {
     expAll = 1
     NO {
       XY = [10.w]+10 , 14
       backColor = #666666
       10 = TEXT
       10 {
         text.field = title
         fontSize = 9
         fontColor = #FFFFFF
         offset = 5, 9
         niceText = 0
       }
      } 

         ACT < .NO 
         ACT=1 
         ACT { 
            10.fontColor=#003CFF
         } 
    
         RO < .NO 
         RO=1 
         RO { 
           10.fontColor=#6DB2FF
         } 
}
broeck ·

hi,

ich habe dasselbe problem - der inhalt des markers wird einfach an den anfang des generierten source-code gestellt.

hast du dafür eine lösung gefunden?

felix ·

Hallo Schlingel,

Dank deines Hinweises habe ich es geschafft bei mir eine Zufallszahl erzeugen zu lassen.

Ich hatte noch das Problem, dass ich an zwei Stellen in meinem HTML-Template die gleiche Zufallszahl benötigte:

In meinem HTML-Template habe ich die Platzhalter BGNumber_1 und BGNumber_2 stehen und so werden die Platzhalter schön mit den gleichen Zufallszahlen ersetzt.

Dabei habe ich deine Funktion für die Zufallszahl übernommen und etwas abgeändert:

<?php
if (!defined ("TYPO3_MODE")) 	die ("Access denied.");

class user_RandomNumber {
	var $cObj;		// Reference to the parent (calling) cObj set from TypoScript
	function init() {
		$GLOBALS['user_RandomNumber']['count'] = 0;
		$GLOBALS['user_RandomNumber']['number'] = 0;
	}
	function create() {
		$GLOBALS['user_RandomNumber']['count'] += 1;
		if ($GLOBALS['user_RandomNumber']['count'] == 1) {
			$GLOBALS['user_RandomNumber']['number'] = rand(0, 5);
		} else {
		$GLOBALS['user_RandomNumber']['count'] == 0;
		}
		return $GLOBALS['user_RandomNumber']['number'];
	}
}
?>

Des Weiteren habe ich anstatt der marks einfach subparts im TS-Template-Setup verwendet:

includeLibs.randomnumberlib = fileadmin/scripts/RandomNumber.php
BGNumberInit = USER_INT
BGNumberInit.userFunc = user_RandomNumber->init

BGNumber_1 = USER_INT
BGNumber_1.userFunc = user_RandomNumber->create
BGNumber_2 = USER_INT
BGNumber_2.userFunc = user_RandomNumber->create

--- schnipp ---

# Template part for the BODY
template.bodyTemplate = TEMPLATE
template.bodyTemplate {
  template = FILE
  template.file = fileadmin/templates/template01.html
  workOnSubpart = DOCUMENT_BODY
  subparts.BGNumber_1 < BGNumber_1
  subparts.BGNumber_2 < BGNumber_2
}

Diese Lösung ist nicht so elegant wie die RandomImage-Erweiterung von www.typo3.org, aber sie erfüllt ihren Zweck für mich.