[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Externe Links kennzeichen und in neuem Fenster öffnen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
drachenbau
Beiträge: 32
Registriert: 13. Jun 2006, 11:19
Wohnort: Minden-Lübbecke

Externe Links kennzeichen und in neuem Fenster öffnen

19. Mai 2007, 17:14

Hallo Redaxofreunde,

ich habe das Template "Externe Links kennzeichen und in neuem Fenster öffnen" in ein Projekt eingebunden. Es funktioniert auch super. Externe Links werden noch zusätzlich mit einem kleinen Pfeil gekennzeichnet.

Mein Problem hier: auch Bilder werden noch zusätzlich mit dem Pfeil versehen. Das soll natürlich nicht sein!

Hat jemand schon dieses Problem erfolgreich gelöst?

Schonmal Danke für eure Hilfe.

Gruß
Stephan

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

20. Mai 2007, 11:10

Hi Stephan,

meinst du allgemein alle Bilder, oder nur die, welche von einem Link umschlossen sind?

Gruß,
Markus

Dreamcast
Beiträge: 5
Registriert: 2. Mai 2007, 10:44

20. Mai 2007, 12:55

Wenns verlinkt wird hat man die Kennzeichnung.

drachenbau
Beiträge: 32
Registriert: 13. Jun 2006, 11:19
Wohnort: Minden-Lübbecke

21. Mai 2007, 09:38

Hallo Markus,

ich meine nur Bilder die auch gleichzeitig ein externer Links sind.

Gruß
Stephan

Benutzeravatar
RedFox
Beiträge: 142
Registriert: 21. Feb 2006, 13:00
Wohnort: downtown munich
Kontaktdaten: Website

21. Mai 2007, 15:57

Hi Redfox,

ich hab mir mal dein Externe-Links-Template geholt und es bei mir ausprobiert.

Hat auch super funktioniert, nur hat es leider auch bei verlinkten Bildern das kleine Zusatzbildchen hinzugefügt, was relativ seltsam aussah. Ich hab es deshalb ein Wenig modifiziert.
Was ich auch noch geändert hab ist, dass Links zu Wikipedia-Seiten mit einem eigenen Icon angezeigt werden. Hab hiefür auch noch einen Steuerparameter eingebaut ($wp), mit dem man das auch abschalten kann, falls mans nicht will.

Code:

<?php
//---TEMPLATE BY---------------------------------
//-- RedFox
//---MODIFIED BY------------------------------
//-- Karottenreibe
//-----------------------------------------

/*
#####################
H I N W E I S E
#####################

dieses Template abspeichern, nicht aktiv schalten und ID merken,
dann folgenden Code anpassen und im benutzenden Template einbinden:


$linkTemplateId = "gemerkte_ID_dieses_Templates";
include $REX['INCLUDE_PATH']."/generated/templates/$linkTemplateId.template";


Hängt absoluten, externen Links (auch die vom Textile)
eine Klasse (zur Kennzeichnung) und
ein Javascript (zum Öffnen in einem neuen Fenster) an.
*/

if (!$REX['REDAXO'])
rex_register_extension('OUTPUT_FILTER', 'rex_external_links');

function rex_external_links($params) {
$content = $params['subject'];

$wp = true // Wikipedia-Links anders kennzeichnen?

// hier via regEx alle absoluten, externen Linkadressen heraussuchen
preg_match_all("/<a[^>]*(href\s*=\s*(\"|')(http(s)?|ftp(s)?|telnet|irc)(?=:\/\/).*?(\"|'))[^>]*>(.*?)<\/a>/ims",$content,$matches);
// doppelte links rausschmeissen
$matches[1] = array_unique($matches[1]);
// hier jetzt alle gefundenen durchgehen und erweitern
if ( isset ($matches[0][0]) and $matches[0][0] != '') {
for ($m = 0; $m < count ($matches[0]); $m++) {
$external_link = "";
// hier jetzt anhängen: javascript für neues Fenster, class für Kennzeichnung
if ( !stristr($matches[1][$m], '.wikipedia.org') && $wp == true ) $external_link .= $matches[1][$m].' onclick="window.open(this.href); return false;" class="extern"';
else $external_link .= $matches[1][$m].' onclick="window.open(this.href); return false;" class="wikipedia"';

if ( !stristr($matches[0][$m], '<img') )
{
// alte Links mit den modifizierten ersetzen:
if(strpos($matches[0][$m],'onclick="window.open(this.href); return false;"') === false) {
$content = str_replace($matches[1][$m],$external_link,$content);
}
}
}
}
return $content;
}
?>

drachenbau
Beiträge: 32
Registriert: 13. Jun 2006, 11:19
Wohnort: Minden-Lübbecke

21. Mai 2007, 16:12

Perfekt !!!

Danke so gehts.

Nur ein kleiner Schönheitsfehler im Code:

$wp = true; // Wikipedia-Links anders kennzeichnen?

Es fehlte das ";"

Gruß
Stephan

Zurück zu „Allgemeines [R3]“