MacBook Banner 728x90
< Domains und Webseiten gegen Spende für den TYPO3 Blog abzugeben

TYPO3 Extension Ausgabe per TypoScript mit cObjGetSingle definieren

17.01.2010
Lina Wolf

Eine höchst mögliche Flexibilität in der Ausgabe von TYPO3 Extensions erreicht man für die TYPO3 Integratoren, in dem man soviel wie möglich per TypoScript regelt.

Jedoch kann man meist nicht ohne weiteres vorhersehen, welche Ausgaben einmal alle gewünscht sein werden. nicht selten fehlt der entscheidende Wrap oder die eine Stelle, an der der TYPO3 Integrator noch Kontrolle benötigt hätte.

Eine sehr flexible Lösung ist es da, die gesamte Ausgabe seiner TYPO3 Extension per TypoScript zu definieren und die Ausgabewerte seiner Extension einfach nur in zusätzlichen Feldern bereitzustellen.

Ich erkläre dies am Beispiel der Extension tx_lonewscomments. Diese fügt tt_news per Hook einen Marker hinzu, mit dem die Anzahl der vorhandenen Kommentare zu einem Artikel ausgegeben werden können.

Per statischem TypoScript wird nun eine standardmäßige Ausgabe vordefiniert:

												
  1. plugin.tt_news.lonewscomments {
  2. marker {
  3. COMMENTS_LINK = TEXT
  4. COMMENTS_LINK {
  5. field = comment_lable
  6. typolink{
  7. parameter.field = singlePid
  8. additionalParams = &tx_ttnews[tt_news]={field:uid}
  9. additionalParams.insertData = 1
  10. useCacheHash = 1
  11. section = comments
  12. ...
  13. }

Der Integrator möchte den Marker umbennen -> Kein Problem. Die Links sollen ungecached sein? Eine Backpid enthalten? Das Datum enthalten? Die Kommentar Section hat einen anderen Anker? All dies lässt sich mit TypoScript Kenntnissen regeln. 

												
  1. // Lokales cObject erzeugen
  2. $local_cObj= t3lib_div::makeInstance('tslib_cObj');
  3. // Alle Daten der aktuellen News zur Verfügung stellen
  4. $local_data=$row;
  5. // Dieses Feld ist schon vorhanden, '' soll aber als '0' ausgegeben werden
  6. $local_data['tx_lonewscomments_comments']=intval($local_data['tx_lonewscomments_comments']);
  7. // eigenes Feld definieren zur Ausgabe verschiedener Label je nach Anzahl der Kommentare
  8. // %d ersetzen durch Anzahl der Kommentare
  9. $local_data['comment_lable']=sprintf($this->pi_getLL('tt_news.tx_lonewscomments_comments'),$local_data['tx_lonewscomments_comments']);
  10. if($local_data['tx_lonewscomments_comments']==0)
  11. $local_data['comment_lable']=$this->pi_getLL('tt_news.tx_lonewscomments_no_comment');
  12. elseif($local_data['tx_lonewscomments_comments']==1)
  13. $local_data['comment_lable']=$this->pi_getLL('tt_news.tx_lonewscomments_one_comment');
  14. $local_data['singlePid']=$conf['singlePid'];
  15. $local_cObj->data=$local_data;
  16. foreach($conf['lonewscomments.']['marker.']AS$key=>$value){
  17. if(!strpos($key,'.')){
  18. // Ausgeben
  19. $markerArray['###'.$key.'###']=$local_cObj->cObjGetSingle($conf['lonewscomments.']['marker.'][$key],$conf['lonewscomments.']['marker.'][$key.'.']);
  20. }
  21. }
Keine Kommentare

Kommentar hinzufügen

* - Pflichtfeld

*




*