Typo3 - alternatives Rendering: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
== Links ==
 +
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 ==
 
== Einleitung ==
  
Zeile 37: Zeile 44:
 
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.
 
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.
  
oder so etwas:
+
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
 
TypoScript
Zeile 54: Zeile 64:
 
== Alternativer DokType ==
 
== Alternativer DokType ==
 
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.
 
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 ==
 +
Im Backend kann man über die ajaxID arbeiten. Oben genanntes Tutorial gibt auch hier eine kurze Auskunft. Das wichtigste:
 +
 +
R'''egistrieren 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';

Aktuelle Version vom 16. April 2011, 08:34 Uhr

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';