Zum Inhalt springen

Wird init zweimal aufgerufen?

Erstellt am 12. August 2009 · 3 Antworten · letzte Antwort am 25. August 2009

Tags: Frage

arkel ·

Hallo zusammen,

ich steh vor einem Rätsel: ich habe eine debug-Ausgabe in der init-Funktion meiner Extension gepackt und bekomme den Wert 2x ausgegeben.
Wird die Extension 2x geladen?
Ich kam auf das Problem, da ich ein Redirect auf eine Seite mache, eine Fehlermeldung in der Session speichere und diese später ausgebe - dummerweise ist die Meldung leer (da ich nach der Ausgabe auch die Variable aus der Session lösche) - eigentlich logisch, wenn die init() 2x aufgerufen wird...

Hat jemand schon mal ähnliche Probleme gehabt...?

Gruß,
Manu

BlackPixel ·

Bindest Du die extension 2 mal auf der Seite ein, beides mal in versch. modis wie listview und detailview oder ähnliches?

wie schaut das debug aus? t3lib_div::debug($var)?

Gruß!

arkel ·

Hallo & danke für Deine Antwort,

t3lib_div::debug gibt mir jegliche Variablen 2x aus...

Meine Extension ist mit Flexforms ausgestettet, so dass ich im BE die Position bestimmen kann, um dann in der pi1-Klasse per switch zu entscheiden, was ausgegeben werden soll.

Seitenstruktur:

Startseite (MainTemplate)
Unterseite
Unterseite
Extensionseite (Ext. Template)
Unterseite Extension etc.

Zuerst hatte ich ein Problem mit meinem Ext.-Template, ich hatte unter Basis-Template einschließen mein Maintamplate eingeschlossen, was dann auch zweimal eingebunden wurde. Jetzt sollte es aber passen, der Template Analyzer zeigt jedenfalls zuerst das Maintemplate, darunter das Ext-Template.
Hier mußte ich etwas tricksen, um in meiner Extension vom zweispalten-Layout wegzukommen und nicht den kompletten TS in mein Ext-Template zu kopieren: im HTML-Template habe ich einen neuen subpart angelegt, der das zweispalten-Layout umschließt, um es mit der neuen Extension zu überschreiben.

HTML:

<!-- ###CONTENT_PROFILE### -->
<div id="sidebar">
	<!-- ###MINI_CART### -->
	<!-- ###MINI_CART### -->
	<!--###RIGHTNAVI###-->
	<!--###RIGHTNAVI###-->
</div>
<div id="left_column">
	###BACK_LINK###
	###TITLE###
	<!--###CONTENT###-->
	<!--###CONTENT###-->
</div>
<!-- ###CONTENT_PROFILE### -->

Maintemplate:

temp.content = COA

temp.content.10 = TEXT
temp.content.10 {
	text = GROSS
	if.value.numRows {
		table = tt_content
		select {
		  pidInList = this
		}
	}
	if.isGreaterThan = 10
}

temp.content.15 = COA
temp.content.15 {
	stdWrap.preCObject = LOAD_REGISTER
	stdWrap.preCObject {
		Counter.cObject = TEXT
		Counter.cObject.data = register:Counter
		Counter.cObject.wrap = |+1
		Counter.prioriCalc = intval
	}
}

temp.content.20 < styles.content.get

tt_content.stdWrap.wrap = <div class="box"><div class="box_padding">|</div></div>

temp.rightContent < styles.content.getRight

temp.mainTemplate = TEMPLATE
temp.mainTemplate {

    template = FILE
    template.file = fileadmin/templates/main.tpl.html
    workOnSubpart = DOCUMENT

    subparts.LOGINLINK < temp.loginlogout
    subparts.LOGINAREA < temp.loginarea

    marks.TITLE < temp.pagetitle
    marks.BACK_LINK < temp.backlink

    subparts.NAVIGATION < plugin.tx_extmainmenu_pi1
    
    subparts.CONTENT < temp.content
    subparts.MINI_CART < temp.minicart
    subparts.RIGHTNAVI < plugin.tx_extnavigation_pi1
}
page = PAGE
...
page.10 < temp.mainTemplate

Extension-Template:

temp.profile = COA
temp.profile.10 < temp.myMenu 
temp.profile.20 < temp.content.20 
tt_content.stdWrap.wrap = | 
temp.mainTemplate.subparts.CONTENT_PROFILE < temp.profile
page.10 < temp.mainTemplate

(myMenu habe ich der Übersichtlichkeit wegen weggelassen.)

Könnte ich durch diese Struktur das Problem hervorrufen?

Gruß,
Manu

arkel ·

DHabs herausgefunden.
Anscheinend wird mit dem Aufruf

temp.profile.20 < temp.content.20

die Extension zum zweiten Mal afgerufen. Ich hatte erwartet, dass temp.content.20 eine Referenz ist, scheint aber nicht so zu sein.