Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
kingofcomedy

[Suche] Nur externe Links im neuen Fenster öffnen

Recommended Posts

Hallo,

gibt es schon einen "Mod", der nur externe Links in einem neuen Browser-Fenster öffnet? D.h. die Links die zB in einen anderen Thread führen sollen nicht in einem neuen Fenster geöffnet werden.

Gruss,

kingofcomedy

:)

Share this post


Link to post

Ok. Vielleicht findet sich hier ja ein Regex-Experte:

Angenommen $post ist der Text des Posts. $INFO['BOARD_URL'] ist URL und Pfad zum Forum.

Wer kann die Regular Expression für die PHP Funktion preg_replace formulieren, die sämtliche vollständigen <a href="...usw. > Tags identifiziert, deren href-Wert mit dem Inhalt von $INFO['BOARD_URL'] beginnt und innerhalb der gefundenen <a>-Tags gegebenenfalls enthaltenes target="_blank" aus $post entfernt. :rolleyes: ?

Share this post


Link to post

So, der Befehl wurde mittlerweile zusammengebastelt, allerdings funktioniert er zZ nur bei einem lokalen Script. In meinem Online-Forum klappt es leider nicht, d.h. die richtige Stelle in der richtigen Datei fehlt mir noch. :(

Share this post


Link to post

So, der Befehl wurde mittlerweile zusammengebastelt

:)

d.h. die richtige Stelle in der richtigen Datei fehlt mir noch.

In 1.3.1 wäre das ca. nach Zeile 842 in sources/topics.php:

$row['post']      = str_replace( "<br>", "<br />", $row['post'] );

$row['post'] ist die Variable, die der Variablen $post aus dem Beispiel in meinem letzten Beitrag entspricht. D.h der Inhalt von $row['post'] muss an dieser Stelle entsprechend verändert werden.

gespannt,

Chris

Edited by chris5000

Share this post


Link to post

d.h. die richtige Stelle in der richtigen Datei fehlt mir noch.

In 1.3.1 wäre das ca. nach Zeile 842 in sources/topics.php:

$row['post']      = str_replace( "<br>", "<br />", $row['post'] );
$row['post'] ist die Variable, die der Variablen $post aus dem Beispiel in meinem letzten Beitrag entspricht. D.h der Inhalt von $row['post'] muss an dieser Stelle entsprechend verändert werden.
So einfach ist es dann leider doch nicht :D Hier die entsprechenden Zeilen:
$test = $INFO['board_url'];

  $test2 = str_replace("/", "\/", $INFO['board_url']);

  $test3 = str_replace(".", "\.", $test2);


  $row['post'] = preg_replace("/<a href='$test3(.*)' target='_blank'>(.*)<\/a>/Ui", "<a href='$test\\1' target='_self'>\\2</a>", $row['post']);

Jetzt muss nur noch die richtige Stelle in der richtigen Datei gefunden werden. :unsure:

Share this post


Link to post

Ich bin mir eigentlich 100% sicher, dass es sich um die richtige Stelle in der richtigen Datei handelt. (Hab schon anderwärtig Ersetzungen von Postinginhalten an dieser Stelle vorgenommen und das funktioniert einwandfrei. Nur handelt sich halt um einfache "suche-diesen-string-und-ersetze-ihn-durch-jenen" Anweisungen ohne komplizierte Regex)

Von daher nehme ich an, dass mit RegEx Code doch irgendwas nicht stimmt...

Gruß,

Chris

Share this post


Link to post

Von daher nehme ich an, dass mit RegEx Code doch irgendwas nicht stimmt...

Wie bereits erwähnt, funktionieren die Zeilen in einem lokalen Test-Script ohne Probleme. Aber warten wir mal ab, ob sich zufällig noch ein Experte in diesen Thread verläuft. :D

Share this post


Link to post

Ok, so sollte es jetzt funktionieren:

Suchen nach

  	$row['post']      = str_replace( "<br>", "<br />", $row['post'] );

  	$row['signature'] = str_replace( "<br>", "<br />", $row['signature'] );
darunter einfügen
  	$row['post'] = preg_replace("/<a href='".str_replace("/", "\/", $ibforums->vars['board_url'])."(.*)' target='_blank'>(.*)<\/a>/U", "<a href='".$ibforums->vars['board_url']."\\1' target='_self'>\\2</a>", $row['post']);

:)

Edited by kingofcomedy

Share this post


Link to post

Yeah :D

Funktioniert ganz herzallerliebst ;)

Sollte eigentlich Standardfunktionalität sein, so sinnvoll wie es ist.

@kingofcomedy: Wie hast Du die Regex eigentlich zusammenbekommen?

Share this post


Link to post

Sollte eigentlich Standardfunktionalität sein, so sinnvoll wie es ist.

Dieser Gedanke ging mir gestern auch durch den Kopf. Eine ACP-Option mehr oder weniger würde ja eh nicht stören. :D

@kingofcomedy: Wie hast Du die Regex eigentlich zusammenbekommen?

Gute Frage, nächste Frage :lol: Ein wenig Logik und ein wenig Google ;)

Share this post


Link to post

Kleiner Hinweis, du kannst anstatt $INFO['board_url'] auch $ibforums->vars['board_url'] benutzen, was das gleiche ist und du brauchst $INFO nicht als globale Variable hinzufügen. :)

Share this post


Link to post

Kleiner Hinweis, du kannst anstatt $INFO['board_url'] auch $ibforums->vars['board_url'] benutzen, was das gleiche ist und du brauchst $INFO nicht als globale Variable hinzufügen. :)

Danke für den Hinweis. Ich habe mein obiges Posting mal angepasst. :)

Share this post


Link to post

Kein Problem. :)

Zur Information, alle Einstellungen in der conf_global.php können mittels $ibforums->vars['WERT'] aufgerufen werden.

Share this post


Link to post

das funktioniert spitze!

Jetzt versuch ich noch verzweifelt, dass auch beim Kalender hinzukriegen - ich find aber leider keine Stelle, die irgendwie was damit zu tun haben könnte oder so ähnlich ist wie bei nem Thema :(

Share this post


Link to post

das funktioniert spitze!

Jetzt versuch ich noch verzweifelt, dass auch beim Kalender hinzukriegen - ich find aber leider keine Stelle, die irgendwie was damit zu tun haben könnte oder so ähnlich ist wie bei nem Thema :(

Öffne sources/calendar.php und suche nach:

return $this->html->cal_show_event($event, $member, $event_type, $edit_button, $type, $de );
und füge diese Zeile DARÜBER ein:
$event = preg_replace("/<a href='".str_replace("/", "\/", $ibforums->vars['board_url'])."(.*)' target='_blank'>(.*)<\/a>/U", "<a href='".$ibforums->vars['board_url']."\\1' target='_self'>\\2</a>", $event);

:)

Share this post


Link to post

Ich hab die Änderung hier 2 Posts darüber auch im IPBPlus gemacht - nur hier greift es nicht mehr - wieso das ? Interne Links im Kalender werden also in nem neuen Fenster geöffnet.

Share this post


Link to post

Das Problem tritt also nur im Kalender auf, dass der Code da nicht funktioniert? Oder auch im Post?

Und welche Links werden im Kalender in _blank geöffnet? Meinst du Links IN den Kalendereinträgen?

Ich habs mal probiert... bei mir werden nurn noch externe Links in einem n. Fenster geöffnet durch Links IN den Kalendereinträgen.

Greetz

Frog

Edited by Frog

Share this post


Link to post

Hi Frog,

ja das Problem hab ich nur im Kalender, in normalen Topics funktioniert das und es werden wirklich nur externe Links in einem neuen Fenster geöffnet.

Bei einem Kalendereintrag hab ich z.B. nen Link zu einem Thread im Forum anfügt per

[URL=http://www.domain.de/index.php?showtopic=1328]

aber da macht es mir ein neues Fenster auf.

Share this post


Link to post

Komisch...

Kannst du deine calendar.php mal schicken (bitte per Mail, falls du die Adresse nicht mehr hast, schick bitte schnell ne PN ;)) ?

Ich guck dann mal, obs in meiner Testumgebung auch nicht funktioniert, denn -wie gesagt- ich habe die Änderungen in einem Beta 1 gemacht und da funktionierts...

Greetz

Frog

Share this post


Link to post

Ok, danke, habs bekommen :)

Echt komische Sache: hab die eingesetzt und es funktioniert :wacko:

Probier doch mal folgendes: benutzte diese Zeile:

$event = preg_replace("/a/", "DASWARMALEINA", $event);

print "URL:'".$ibforums->vars['board_url']."'";

Der soll dann alle "a"s zu diesem String umwandeln, das siehst du ja dann :D

Und oben zeigt er die BoardURL an.

Post doch mal, was er oben am Forum ausgibt (ich denke, daran kanns nicht liegen, dass die URL's verschieden sind, aber sicher ist sicher) und ob er die "a"s ersetzt.

PS: Ich denke das Thema wird nach Lösung gesplittet, damits übersichtlich bleibt ok?

Greetz

Frog

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×