Beiträge: 1.302
Themen: 108
Registriert seit: 25.12.2008
MyBB-Version: 1.6
Hallo Leute,
ich möchte etwas meine Links anpassen:
1.: Es gibt viele Foren, bei welchen man nur den Link eingeben muss, und dann statt dem Link nicht die Linkadresse angezeigt wird, sondern der Seitenname (title-meta-Tag) automatisch bezogen wurde und dann auch angezeigt wird.
2.: Ich möchte nur externe Links in einem neuem Tab öffnen.
Kennt jemanden eventuell eine gute Lösung?
Beiträge: 2.769
Themen: 28
Registriert seit: 18.03.2006
Es gibt für beides meines Wissens kein Plugin. Musst du selbst schreiben.
Ob es sich um eine externe Seite handelt ist ja schnell ermittelt.
Um an den Titel einer HTML-Seite zu kommen, musst du die Seite komplett auslesen und dann mit eingendeinem REGEXP den Text zwischen den <title>-Tags einlesen.
Beiträge: 1.302
Themen: 108
Registriert seit: 25.12.2008
MyBB-Version: 1.6
Beiträge: 44
Themen: 3
Registriert seit: 02.01.2010
Das geht übringens so:
PHP-Code:
$string = file_get_contents('http://www.URL.de/');
preg_match('/<title>(.*)<\/title>/U', $string, $hits);
// $hits[1] der String hat nun den Seitentitel der Seite.
Beiträge: 1.302
Themen: 108
Registriert seit: 25.12.2008
MyBB-Version: 1.6
Und wo sollte ich den sowas einbauen?
Beiträge: 44
Themen: 3
Registriert seit: 02.01.2010
inc/class_parser.php
Dort wandelt er den [url]-Tag in einen HTML-Link um, dort findest du ihm Quelltext "<a href..."
Der einbau ist etwas kompliziert, ich habe es aber gestern Abend noch geschafft. Probiere erstmal alleine.
Beiträge: 1.302
Themen: 108
Registriert seit: 25.12.2008
MyBB-Version: 1.6
Hi, ich habs mir angeschaut.
Jedoch klappt es bei mir nicht.
Kannst du bitte deine class_parser.php hochladen oder deinen Abschnitt hier zeigen?
PHP-Code:
/**
* Parses URL MyCode.
*
* @param string The URL to link to.
* @param string The name of the link.
* @return string The built-up link.
*/
function mycode_parse_url($url, $name="")
{
if(!preg_match("#^[a-z0-9]+://#i", $url))
{
$url = "http://".$url;
}
$fullurl = $url;
$url = str_replace('&', '&', $url);
$name = str_replace('&', '&', $name);
if(!preg_match("#[a-z0-9]+://#i", $fullurl))
{
$fullurl = "http://".$fullurl;
}
if(!$name)
{
$name = $url;
}
$name = str_replace("\'", "'", $name);
$url = str_replace("\'", "'", $url);
$fullurl = str_replace("\'", "'", $fullurl);
if($name == $url && (!isset($this->options['shorten_urls']) || $this->options['shorten_urls'] != 0))
{
if(my_strlen($url) > 55)
{
$name = my_substr($url, 0, 40)."...".my_substr($url, -10);
}
}
$name = preg_replace("#&\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode
$link = "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
return $link;
}
Beiträge: 44
Themen: 3
Registriert seit: 02.01.2010
Ich verstehe nicht, wo das Problem ist.
$link = "<a href=\"$fullurl\" target=\"_blank\">$name</a>"
Da ist die richtige Stelle.
Also machst du vor dem Code die Abfrage und ersetzt es dann, sodass der Titel der Seite in $name steht, in der Abfrage muss bei file_get_contents natürlich $fillurl angegeben werden.
Beiträge: 1.302
Themen: 108
Registriert seit: 25.12.2008
MyBB-Version: 1.6
Aber das Tool überschreibt dann doch immer den Titel, oder?
Ich möchte das mit dem automatischem Titel aber nur, wenn kein Betreff angegeben wird, und auch bei Links ohne URL-Tag, die MyBB erkennt.
Beiträge: 44
Themen: 3
Registriert seit: 02.01.2010
Jetzt verstehe ich Dich nicht.
Der User schreibt angenommen einen Link als BBCode...
https://www.mybb.de/forum/thread-15573.html
Der Code wandelt jetzt
https://www.mybb.de/forum/thread-15573.html in "Link Titel automatisch beziehen & öffnen externen Links in neuem Tab" um.