Seite 1 von 2

URLs in Hyperlinks?

Verfasst: 14.05.2006 13:09
von kjwargan
Servus,

bitte, wie kann ich abstellen, dass URLs im Text, in Hyperlinks umgewandelt werden?

Verfasst: 14.05.2006 14:26
von IPB_Flüchtling
Servus,

probiere mal Folgendes:

Öffne die bbcode.tpl. Suche

Code: Alles auswählen

<!-- BEGIN url --><a href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url -->
Ersetze durch:

Code: Alles auswählen

<!-- BEGIN url --><span class="postlink">{DESCRIPTION}</span><!-- END url -->
Habe es nicht getestet. Lasse mich wissen, ob es funktioniert hat. Für eine sauberere Lösung müsste in die bbcode.php eingegriffen werden.

(Um E-Mail-Adressen auch nicht mehr anklickbar zu machen, kannst Du analog verfahren.)

LG, IPB_Flüchtling

Verfasst: 14.05.2006 16:15
von kjwargan
IPB_Flüchtling hat geschrieben:Habe es nicht getestet. Lasse mich wissen, ob es funktioniert hat. Für eine sauberere Lösung müsste in die bbcode.php eingegriffen werden.

Servus, es funktioniert!
Interessant wäre eine Möglichkeit, dass es nur bei URLs funktioniert,
die auf Webseiten außerhalb meiner Domains weisen
Mein Grund dafür ist: Wenn Jemand einen Link setzt, der auf eine (in D-Land) illegale Seite führt, dann wäre ich als Foreninhaber haftbar.

P.S.: Die saubere Lösung für die bbcode.php würde mich interessieren, wenn Du sie weißt.

Verfasst: 14.05.2006 17:51
von IPB_Flüchtling
Ahoi,

freut mich, dass es funktioniert hat! Sauber ist meine Lösung natürlich auch. Nur wird halt in der bbcode.php unnötig Arbeit verrichtet, weil ja gar keine klickbaren URLs mehr angezeigt werden.

Deshalb könnte man die nicht mehr benötigten Zeilen in der function prepare_bbcode_template($bbcode_tpl) z.B. auskommentieren.

Beispiel: Aus

Code: Alles auswählen

	// We do URLs in several different ways..
	$bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url1']);
wird

Code: Alles auswählen

	// We do URLs in several different ways..
	// $bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url1']);
uns so weiter. In der function make_clickable($text) müsste man ebenfalls kleine Änderungen vornehmen. Um ehrlich zu sein: Ich würde es mit der oben vorgestellten Änderung der bbcode.tpl bewenden lassen.
kjwargan hat geschrieben:Interessant wäre eine Möglichkeit, dass es nur bei URLs funktioniert, die auf Webseiten außerhalb meiner Domains weisen
Das lässt sich nun wirklich nur mehr über die bbcode.php verwirklichen. Da kann ich Dir aber leider nicht helfen, sorry. Es gibt aber einen Mod, der interne Links - im Gegensatz zu externen - im gleichen Fenster öffnen lässt. Eventuell könnte man sich da ein Stück Code abgucken.

Wenn ich es mir Recht überlege: Eigentlich hätte ich einen ähnlichen Mod auch gerne: Dann könnte ich nur externe Links mit einem rel="nofollow" ausstatten.

Vielleicht hilft uns ja ein Kollege, der sich besser mit php auskennt. Und sonst werde ich mal schauen, ob ich den angesprochenen Mod (selbes Fenster/neues Fenster) irgendwo finde.

EDIT: Über die Boardsuche, Suchbegriffe: interne Links, wird man fündig. Werde mir das mal näher ansehen.

EDIT2: Hier ist der Mod, den man wohl anpassen könnte: http://www.phpbb.de/viewtopic.php?p=686185#686185

EDIT3: Ein alter Thread aus dem Jahr 2002, der für das jetzige Problem aber ebenfalls relevant ist: http://www.phpbb.de/viewtopic.php?t=17371

LG, IPB_Flüchtling

Verfasst: 14.05.2006 18:13
von kjwargan
IPB_Flüchtling hat geschrieben:EDIT2: Hier ist der Mod, den man wohl anpassen könnte: http://www.phpbb.de/viewtopic.php?p=686185#686185
LG, IPB_Flüchtling
Bei dem bin ich gerade.
Aber,...........zum Anpassen verstehe ich zu wenig von php

Verfasst: 14.05.2006 18:16
von IPB_Flüchtling
kjwargan hat geschrieben:Aber,...........zum Anpassen verstehe ich zu wenig von php
Mir gelingt so etwas ja auch immer nur mit viel Glück. :D Übrigens: Edit3 zeigt z.T. auf, wie unser Vorhaben (ohne Unterscheidung zwischen externen und internen Links) in der bbcode.php verwirklicht werden könnte.

LG, IPB_Flüchtling

Verfasst: 14.05.2006 18:26
von kjwargan
Dann werden wir uns mal ans Probieren machen :D
Danke

Verfasst: 14.05.2006 23:00
von IPB_Flüchtling
Ahoi kjwargan,

ich glaube, wir sind beide auf der Leitung gestanden!

Bau einfach folgenden Mod ein: http://www.phpbb.de/viewtopic.php?p=686185#686185

Die einzige Änderung, die vonnöten ist, ist die Folgende (bezieht sich jetzt auf den eben verlinkten Mod): Statt

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/bbcode.tpl 

# 
#-----[ FIND ]------------------------------------------ 
# 
<!-- BEGIN url --><a href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url --> 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
<!-- BEGIN url_local --><a href="{URL}" target="_self" class="postlink">{DESCRIPTION}</a><!-- END url_local --> 
nimm einfach

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/bbcode.tpl 

# 
#-----[ FIND ]------------------------------------------ 
# 
<!-- BEGIN url --><a href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url --> 

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
<!-- BEGIN url --><span class="postlink">{DESCRIPTION}</span><!-- END url --> 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
<!-- BEGIN url_local --><a href="{URL}" target="_self" class="postlink">{DESCRIPTION}</a><!-- END url_local --> 
Tja, man sollte nicht zu kompliziert denken... Wenn der Local Links - Mod funktioniert, hast Du jetzt Deine Lösung. Außerdem hat es den zusätzlichen Vorteil, dass interne Links in Zukunft auch noch in demselben Fenster geöffnet werden. Und eine Lösung für mein Problem (rel="nofollow" nur für externe Links) ist damit auch gefunden. :P

Werde es spätestens morgen selbst ausprobieren.

LG, IPB_Flüchtling

Verfasst: 15.05.2006 21:30
von IPB_Flüchtling
Ahoi,

ich habe den Mod jetzt kurz getestet und er scheint tatsächlich zu funktionieren! :P :P :P

Damit ist jetzt Carlos Problem gelöst - und meines auch. Also einfach den Local Links (s.o.) einbauen und - wenn man externe Links mit einem rel="nofollow" ausstatten will, nicht aber interne Links - folgende Änderung durchführen:

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/bbcode.tpl 

# 
#-----[ FIND ]------------------------------------------ 
# 
<!-- BEGIN url --><a href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url --> 

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
<!-- BEGIN url --><a rel="nofollow" href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url -->

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
<!-- BEGIN url_local --><a href="{URL}" target="_self" class="postlink">{DESCRIPTION}</a><!-- END url_local --> 
LG, IPB_Flüchtling

Verfasst: 15.05.2006 22:09
von IPB_Flüchtling
Nur falls es jemanden wundert. Im Local Links - Mod lautet die erste Anweisung:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
includes/bbcode.php

#
#-----[ FIND ]------------------------------------------
#
$bbcode_tpl['url1'] = str_replace('{URL}', '\1\2', $bbcode_tpl['url']);
Die zu suchende Zeile lautet in 2.0.20 etwas anders. Also einfach nach

Code: Alles auswählen

$bbcode_tpl['url1']
suchen - dann klappt es. :P

LG, IPB_Flüchtling