Zum Inhalt springen

PHP in extension template

Erstellt am 6. Januar 2012 · 4 Antworten · letzte Antwort am 6. Januar 2012

Tags: Frage

ProfPe ·

Hallo zusammen.
HAbe schon etwas gelesen und bekomme es auch hin bei einem komplett leerem TS eine PHP datei einzubinden. Nun möchte ich aber bei folgendem TS statt mit css_styled_content den contentberich über ein php-script füllen. Das soll aber nur auf einer Subpage statt finden.
Dachte das würde dann über ein extension template funktionieren, bekomme es aber nciht hin.

# Configuring the Auto-Parser for main template:
plugin.tx_automaketemplate_pi1 {
    # Read the template file:
  content = FILE
  content.file = fileadmin/templates/main/index.html
    # Here we define which elements in the HTML that
    # should be wrapped in subpart-comments:
  elements {
    BODY.all = 1
    BODY.all.subpartMarker = DOCUMENT_BODY
    HEAD.all = 1
    HEAD.all.subpartMarker = DOCUMENT_HEADER
    HEAD.rmTagSections = title
    TD.all = 1
  }
    # Prefix all relative paths with this value:
  relPathPrefix = fileadmin/templates/main/
}

temp.menu = HMENU
temp.menu {
    ### Erste Ebene ###
    1 = TMENU
    1 {
      wrap = <ul class="menu">|</ul>
      expAll = 1
      NO.wrapItemAndSub = <li class="folder">|</li>

      ACT < .NO
      ACT = 1
      ACT.ATagParams = class="active"
    }
   
    ### Zweite, dritte und vierte Ebene (Kopieren von erster Ebene) ###
    2 < .1
    3 < .1
    4 < .1
}

# Main TEMPLATE cObject for the BODY
temp.mainTemplate = TEMPLATE
temp.mainTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <body>-tags
  workOnSubpart = DOCUMENT_BODY
    # Substitute the ###menu-left### subpart with some example content:
  subparts.menu-left < temp.menu
    # Substitute the ###content-main### subpart with some example content:
  subparts.content-main < styles.content.get
}
# Main TEMPLATE cObject for the HEAD
temp.headTemplate = TEMPLATE
temp.headTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <head>-tags
  workOnSubpart = DOCUMENT_HEADER
}
# Default PAGE object:
page = PAGE
page.typeNum = 0
# Copying the content from TEMPLATE for <body>-section:
page.10 < temp.mainTemplate
# Copying the content from TEMPLATE for <head>-section:
page.headerData.10  < temp.headTemplate

WIe veranlasse ich dass in dem extension template
subparts.content-main < styles.content.get
durch sowas ersetzt wird
subparts.content-main < ERGEBNIS PHP-File

Hoffe auf Anregungen
Danke schon mal

LuP ·

Hallo und herzlich Willkommen im Forum.

Du kannst einen eigenen PHP Code anhand UserFunc ausführen.

page.includeLibs.user_myClass = fileadmin/user/user_myClass.php
temp.myUserFunc = USER
temp.myUserFunc = user_myClass->myFunc

temp.mainTemplate = TEMPLATE
temp.mainTemplate {
	# ...
	subparts.content-main < temp.myUserFunc
	# ...
}
<?php
class user_myClass {
	public function myFunc($content,$conf) {};
}
?>

MfG,
LuP

ProfPe ·

Danke für deine Antwort LuP.
Werde ich auf jeden Fall noch testen. Habe immerhin auch schon was zum laufen bekommen was ich hier gefunden habe und mir dann noch minimal angepasst habe:

+ext:

temp.phpScript = PHP_SCRIPT
temp.phpScript {
    file = fileadmin/test.php
    myVerySpecialOwnParameter = bla
    myParamArray {
        a = 1
        b = ja
    }
}
page.10.subparts.content-main = HTML
page.10.subparts.content-main < temp.phpScript

Da ich noch absolut neu bin in Sachen Tyop3 anpassen (bisher nur statische Seiten erarbeitet) wüsste ich dann noch gerne welche Variante besser ist bzw. wo Vor- und Nachteile liegen. Das Projekt dass ich ursprünglich mal Programmiert habe und jetzt auf T3 portieren soll ist schon relativ komplex, mit einigen Klassen, formularen und evtl. werde ich noch auf eine externe Datenbank (MySQL) zugreifen müssen.

Soll alles nicht sofort passieren. Kann mich also schon noch gut belesen. Aber Meinungen was wieso oder wieso nicht besser ist wären da schon interessant.

Und kann man bei dem Aufruf der PHP-Datei wie gewohnt die GET/POST-Variablen verarbeiten?

LuP ·

UserFunc ist immer vorzuziehen, damit hast Du samt brauchbare TYPO3 libraries wie u.a. t3lib_db, t3lib_div mit eingebunden. Dann stehen Dir t3lib_div::_GP, t3lib_div::_GET und t3lib_div::_POST, um auf GET- und POST-Parameter zu greifen. Mit PHP_SCRIPT hast du nur rohen PHP-Code, was aus Sicherheitsgründen schon nicht zu empfehlen ist. Ansonst möchte ich Dir noch den TYPO3 Coding Guidelines gerne ans Herz legen.

MfG,
LuP