Newsletter Link/Anker Problem insert link:url
Hallo!
Habe Probleme folgende Probleme beim Newsletter HTML (TL version 2.7.6)
1) Insert Tag {{link_url::64}} wird anscheinend korrekt umgewandelt sobald der Newsletter raus geht in http://www.xyz.com/meineseite.html
2) Sobald ich beim insert tag {{link_url::64}}#anker hinzu füge klappt das auch noch (www.xyz.com/meineseite.html), jedoch mein Link der nur auf diese Seite allgemein linkt ({{link_url::64}}) klappt dann nicht mehr (anstatt http://www.xyz.com/meineseite.html wird daraus meineseite.html). Im Code werden anscheinend alle http:// Link durchsucht und verändert, soweit mein Verständnis.
Im Code habe bzw. im TL Forum habe ich folgende Info gefunden und erweitert. Hier meine tl_newsletter.php (convertRelativeLinks)
PHP-Code:
/**
* Convert relative URLs from TinyMCE to absolute URLs
* @param string
* @return string
*/
public function convertRelativeLinks($strContent)
{
$arrLinks = preg_split('/href="([^"]+)/', $strContent, -1, PREG_SPLIT_DELIM_CAPTURE);
$strContent = '';
for($i=0; $i<count($arrLinks); $i=$i+2)
{
$strContent .= $arrLinks[$i];
$strLink = $arrLinks[$i+1];
if (!strlen($strLink))
{
continue;
}
if (!preg_match('@^https?://|ftp:|mailto:|@i', $strLink))
//if (!preg_match('@^https?://|ftp:|mailto:|#@i', $strLink)) Problem with ancor links
{
$strLink = $this->Environment->base . (($strLink != '/') ? $strLink : '');
}
// https://contao.org/board/message/67971.html Problem bei anchors mit base links
elseif (substr($strLink,0,1) != '#')
{
$strContent = str_replace($strLink, $this->Environment->base . $strLink, $strContent);
}
$strContent .= 'href="' . $strLink;
}
return $strContent;
}
Weiters hatte ich davor Probleme mit externen Links, z.b. http://www.abc.com wird in http://www.xyz.com/http:/www.abc.com umgewandelt und die BaseURL http://www.abc.com wurde auf http://www.abc.com/undefined verlinked.
In der TL Version 2.8.1 wird folgendes definiert:
PHP-Code:
/**
* Convert relative URLs from TinyMCE to absolute URLs
* @param string
* @return string
*/
public function convertRelativeLinks($strContent)
{
return $this->convertRelativeUrls($strContent);
}
/**
Habe jedoch keine Ahnung wo ich die Methode der Klasse finde (kenn mich nicht viel mit PHP) aus.
Vielen Dank für eure Hilfe,
Didi
PS: Ein simples Rückstellen auf die Originalversion von 2.7.6 hat leider auch nicht geholfen.
Test mit TL Version 2.8.1
Hallo! Habe nun mal die Version 2.8.1 der function convertRelativeLinks($strContent) genommen.
Leider ebenso kein Erfolg, url:link klappt dann gar nicht mehr mit und ohne #
Domain Link wird nur mehr zu undefined/
Hier der Code:
PHP-Code:
public function convertRelativeLinks($strContent)
{
$arrUrls = preg_split('/((href|src)="([^"]+)")/i', $strContent, -1, PREG_SPLIT_DELIM_CAPTURE);
$strContent = '';
for($i=0; $i<count($arrUrls); $i=$i+4)
{
$strContent .= $arrUrls[$i];
if (!isset($arrUrls[$i+2]))
{
continue;
}
$strAttribute = $arrUrls[$i+2];
$strUrl = $arrUrls[$i+3];
if (!preg_match('@^(https?://|ftp://|mailto:|#)@i', $strUrl))
{
$strUrl = $strBase . (($strUrl != '/') ? $strUrl : '');
}
$strContent .= $strAttribute . '="' . $strUrl . '"';
}
return $strContent;
}
Bitte um Info, wäre ziemlich wichtig für mich.