Typo3 - alternatives Rendering

Aus Wikizone
Version vom 16. April 2011, 08:34 Uhr von 94.216.255.39 (Diskussion) (→‎Links)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Links[Bearbeiten]

Schöner Überblick:

http://blog.kj187.de/2010/03/09/typo3-und-ajax-wie-geht-das/

http://www.interaktionsdesigner.de/2009/01/04/asynchrone-datenubertragung-zwischen-typo3-und-jquery/

Einleitung[Bearbeiten]

Für verschiedene Anwendungsfälle (eigene template engine, ajax requests etc.) ist es manchmal notwendig, das Standard Seitenrendering von Typo3 zu umgehen. Dafür gibt es verschiedene Möglichkeiten.

eid mechanismus[Bearbeiten]

siehe unter Ajax und Typo3

ajax parameter[Bearbeiten]

Bemerkung: Nicht getestet

Wenn in der URL der Parameter

ajax=1

mitgegeben wird, dann erzeugt Typo3 ebenfalls eine Ausgabe ohne HTML-Tags und Metadaten. Die komplette Page-Konfiguration wird gelöscht und nur die Ausgabe der Extension “tx_myExt_pi1″ findet statt wenn man diese mit untenstehendem TS vorbereitet.

Eigener Page Type[Bearbeiten]

Man kann für die Ajax Anfragen einen eigenen Page Type definieren. Schönes Tutorial mit jQuery hier:

http://blog.kj187.de/2010/03/09/typo3-und-ajax-wie-geht-das/


TypoScript

ajaxCall = PAGE
ajaxCall {
  typeNum = 5000
  10 < plugin.tx_unsereextension_pi1

  config {
    disableAllHeaderCode = 1
    xhtml_cleaning = 0
    admPanel = 0
    debug = 0
    no_cache = 1
  }
}

Dabei wird ein Aufruf mit der typeNum 5000 sofort an unsere Extension geleitet, die dann für die Ausgabe zuständig ist. Header Code wird ausgeblendet.

Der Vorteil bei dem Weg über typeNum ist das uns alle globalen Variablen wie das komplette TSFE mit cObj etc. zur Verfügung stehen. Bei dem Weg per eID musste man vor der TYPO3 Version 4.3 noch ein eigenes TSFE Objekt erzeugen. Seit der 4.3 bietet das das eID Script aber an


weiteres Beispiel:

TypoScript

[globalVar = GP:ajax > 0]
config.disableAllHeaderCode = 1
page >
page = PAGE
page {
typeNum = 0
10 < plugin.tx_myExt_pi1
}
[global]

Alternativer DokType[Bearbeiten]

Eine andere Möglichkeit, eine komplett leere Basisseite zu bekommen versteckt sich noch irgendwo in der Extension “tt_news”. Dort kann man per DokType steuern ob eine Liste oder ein RSS-Feed ausgegeben wird. Der RSS-Feed befindet sich auch auf einer ganz leeren Seite.

AJAX im Backend[Bearbeiten]

Im Backend kann man über die ajaxID arbeiten. Oben genanntes Tutorial gibt auch hier eine kurze Auskunft. Das wichtigste:

Registrieren des Skripts

ext_localconf.php

$TYPO3_CONF_VARS['BE']['AJAX']['tx_extkey::helloworld'] = t3lib_extMgm::extPath($_EXTKEY) . 'classes/class.tx_extkey_helloworld_ajax.php:tx_extkey_helloworld_ajax->sayHello';

oder anders:

$TYPO3_CONF_VARS['BE']['AJAX']['tx_extkey::key'] = 'pfad/datei.php:klassenname->methodenname'; 

Aufruf aus einem Modul:

$url = $this->doc->backPath . 'ajax.php?ajaxID=tx_extkey::helloworld';