Typo3 Extensions programmieren - RTE: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 49: Zeile 49:
 
  $this->pi_RTEcssText($text)   
 
  $this->pi_RTEcssText($text)   
 
ausgegeben werden
 
ausgegeben werden
 +
 +
 +
== weitere Infos ==
 +
aus dem Forum zum Thema Typolinks im RTE...
 +
 +
Im Prinzip ist es ganz einfach:
 +
 +
<pre>
 +
temp.whatever = TEXT
 +
temp.whatever {
 +
    field = mytextfield
 +
    parseFunc {
 +
      tags {
 +
        link = TEXT
 +
        link {
 +
          current = 1
 +
          typolink.parameter.data = parameters : allParams
 +
        }
 +
    }
 +
  }
 +
}
 +
</pre>
 +
 +
Damit werden schon mal alle <link> Tags im Feld mytextfield mit typolink
 +
gerendert.
 +
Mit Hilfe weiterer typolink Parameter und/oder stdWrap Funktionen kannst Du
 +
noch einen Haufen von Modifikationen vornehmen, die den Link selbst, den
 +
Text oder den Wrap beeinflussen.

Version vom 30. Januar 2009, 06:43 Uhr

Mit dem Extension Kickstarter läßt sich in Backendformularen leicht der Rich Text Editor für die Texteingabe integrieren. Manche Formatierungen müssen aber vor der Ausgabe im Frontend gerendert werden. Sonst steht im Frontend statt eines a Tags beispielsweise der Typo3 eigene Tag <link>.

Möglichkeit 3 - Render funktion nutzen

Rendern von TYPO3-Links in eigener Extension (RTE: <link>) URL dieses Beitrags: http://blog.stefan-macke.com/2007/08/01/rendern-von-typo3-links-in-eigener-extension-rte/ 1. August 2007 Datum des Zugriffs 25.1.2009

Bei der Ausgabe von Links, die im TYPO3-Backend mit dem RTE eigegeben wurden, werden die dort erzeugten <a>-Tags umgewandelt in das TYPO3-interne Format <link> und in der Datenbank gespeichert. Die Ausgabe im Frontend führt dann zu Fehlern, da die <link>-Tags nicht interpretiert werden können.

Um die Tags vor der Ausgabe in korrekte Links umzuwandeln, habe ich folgende Lösung gefunden: Die Methode TS_links_rte der Klasse t3lib_parsehtml_proc übernimmt genau dieses Rendern von Links. Sie kann wie folgt in die eigene Extension eingebunden werden:

require_once(PATH_t3lib.'class.t3lib_parsehtml_proc.php');
$parseObj = t3lib_div::makeInstance('t3lib_parsehtml_proc');
$content = $parseObj->TS_links_rte($content);

Möglichkeit 2 - über TypoScript

- nicht getestet -

Konfiguration Des RTE kopieren und innerhalb der eigenen Extension nutzen.

Das sähe grob gesehen folgendermaßen aus:

plugin.deine_extension {
  general_stdWrap.parseFunc < tt_content.text.20.parseFunc
  general_stdWrap.parseFunc {
   #  WEITERE EINSTELLUNGEN
  }
}


Möglichkeit 3 - über die Konfiguration der Extension

- nicht getestet -

beim Standard RTE hilft's den Eintrag in der ext_tables.php

PHP-Code:

$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']= ... 

von PHP-Code:

rte_transform[mode=ts] 

nach PHP-Code:

rte_transform[mode=ts_css]  
# oder 
# rte_transform[mode=css]

Dann muß es noch in der Extension mit

$this->pi_RTEcssText($text)  

ausgegeben werden


weitere Infos

aus dem Forum zum Thema Typolinks im RTE...

Im Prinzip ist es ganz einfach:

temp.whatever = TEXT
temp.whatever {
    field = mytextfield
    parseFunc {
      tags {
        link = TEXT
        link {
          current = 1
          typolink.parameter.data = parameters : allParams
        }
     }
  }
}

Damit werden schon mal alle <link> Tags im Feld mytextfield mit typolink gerendert. Mit Hilfe weiterer typolink Parameter und/oder stdWrap Funktionen kannst Du noch einen Haufen von Modifikationen vornehmen, die den Link selbst, den Text oder den Wrap beeinflussen.