MyBB.de Forum

Normale Version: Link Titel automatisch beziehen & öffnen externer Links in neuem Tab
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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?
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.
OK, ich danke dir.
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. 
Und wo sollte ich den sowas einbauen?
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.
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('&amp;''&'$url);
        
$name str_replace('&amp;''&'$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($url040)."...".my_substr($url, -10);
            }
        }

        
$name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode
        
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        return 
$link;
    } 
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.
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.
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.
Seiten: 1 2