typo3 speichert Hyperlinks ja als <link>-Tags, nicht als <a>. Nun habe ich ein Problem mit der Darstellung meines Plugins - ich muss die <link>-Tags, die in der DB gespeichert werden, umwandeln.
Gibt es da eine Funktion, auf die ich als Extension-Programmierer zurück greifen kann? Oder muss ich das von Hand tun?
Helge
OK, also von Hand...
Weil mich die Lösung mit Regular Expressions einiges an Zeit und grauen Haaren gekostet hat, poste ich sie mal hier, um eventuell anderen dies zu ersparen. Sorry wegen mangelnder Formatierung, aber der PHP-Container verkorkst meinen Code:
function processLinks($text) {
$internal_regexp = '/\<link (\d+) .*?\/>(.*)\<\/link\>/i';
$external_regexp = '/\<link (http:\/\/.*?) .*\/>(.*)\<\/link\>/i';
$textnew = preg_replace($internal_regexp,
'<a href="'.$this-">makeLinkTarget('&id=$1').'">$2</a>',
$text);
$textnew = preg_replace($external_regexp,
'<a href="$1">$2</a>',
$textnew);
return $textnew;
}
Schnell aus dem Kopf geantwortet, sieht die Struktur so aus:
class tx_mein_plugin extends tslib_pibase {
// ...
function main($content,$conf) {
// erst mal den text aus der DB lesen
$text = $this->liesTextAusDB();
// dann die <link />s bearbeiten und ergebnis zurueckgeben
return $this->processLinks($text);
}
}
Ich sehe gerade, dass der Code nicht korrekt gepostet worden ist. Die ganzen /,\,> usw. sind wohl unmoeglich richtig darzustellen.
helge schrieb'<a href="'.$this-">makeLinkTarget('&id=$1').'">$2</a>'
muss natuerlich heissen
'<a href="'.$this-">makeLinkTarget('&id=$1').'">$2</a>'
$this->makeLinkTarget() ist ein Wrapper fuer, IIRC, t3lib_div::typolink() - also das HREF fuer den Link.
sowas muss man doch nicht selber machen.
Entweder nutzt man die function pi_RTEcssText oder man weist der Extension per TS eine parsefunc zu.