Zum Inhalt springen

RealURL und Seitentyp "Externe URL"

Erstellt am 5. März 2007 · 8 Antworten · letzte Antwort am 18. Juni 2010

Tags: RealURL, Links, Frage

Ckoenig ·

Moin zusammen,

ich habe bei mir RealURL 1.1.4 und TYPO3 4.0.5. Funktioniert alles soweit sehr gut, nur stört es doch, dass die Pfade durch RealURL für Seiten vom Typ "Externe URL" ebenfalls encoded werden, und als Link somit nicht die externe URL verwendet wird, sondern der pagePath zu der Typo3 Seite, welche auf die externe URL verweist.

Etwas anschaulicher:

|-root
|---Seite1
|---Seite2
   |--Seite3 (Externe URL -> http://www.beispiel.com)

RealURL zeigt also als Link zu Seite3 nicht "http://www.beispiel.com/" an, sondern den Pfad "/Seite2/Seite3/", was nicht gewünscht ist. Die Frage also: wie kann man das ändern?

Viele Grüße, CK

PS: Hier noch die RealURL Konfiguration für die Sections 'init' und 'pagePath' (denke das sind die relevanten) aus der localconf.php

'init' => array(
	'enableCHashCache' => 1,
	'appendMissingSlash' => 'ifNotFile',
	'enableUrlDecodeCache' => 1,
	'enableUrlEncodeCache' => 1,
	),


'pagePath' => array(
	'type' => 'user',
	'userFunc' =>
'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
	'spaceCharacter' => '_',
	'languageGetVar' => 'L',
	'expireDays' => 7,
	'rootpage_id' => 1,
	'enableDomainLookup' => 1,
	),
nickno ·

Hallo,

da dies ein Problem ist, was mich ebenfalls schon lange beschäftigt und mich wahnsinnig stört, bin ich so frei und pushe das Thema nochmal.

Besten Gruß,
Tim

ArminB ·

moin,

ich habe bei mir RealURL 1.1.4 und TYPO3 4.0.5. Funktioniert alles soweit sehr gut, nur stört es doch, dass die Pfade durch RealURL für Seiten vom Typ "Externe URL" ebenfalls encoded werden, und als Link somit nicht die externe URL

Das hat nix mit realurl zu tun, ohne realurl wird auch erst ein Link auf die Seite mit der externen URL geschrieben.

Hat immer noch keine eine Idee? Oder ist ggf. schon jemand gescheitert?

Wenn du z.B. ein Menue erstellst, musst du Abfragen ob es sich um doktype 3 handelt und dann die Links dementsprechend generieren lassen.

Armin

blub19 ·

Also ich habs jetzt so gelöst:

Direkt in der RealUrl Klasse (typo3conf/ext/realurl/class.tx_realurl.php)

in der

function encodeSpURL(&$params, $ref)

habe ich vor der letzten Zeile folgendes eingefügt:

// Setting the encoded URL in the LD key of the params array - that value is passed by reference and thus returned to the linkData function!
if($params['args']['page']['doktype'] == 3 && $params['args']['page']['url']){
	switch($params['args']['page']['urltype']){
		case 0:
		    $preUrl = '';
		    break;
		case 1:
		    $preUrl = 'http://';
		    break;
		case 2:
		    $preUrl = 'ftp://';
		    break;
		case 3:
		    $preUrl = 'mailto:';
		    break;
		case 4:
		    $preUrl = 'https://';
		    break;
	}
		
	$newUrl = $preUrl.$params['args']['page']['url'];
}
$params['LD']['totalURL'] = $newUrl;

Vielleicht hilft es ja dem ein oder anderen weiter...

Viele Grüße
- Christoph -

nickno ·

Und das läuft? Wenn dem so ist, dann könnte man das doch gut dem Programmierer/Verwalter der Extension schicken, der schaut kurz drüber und bindet das beim nächsten Update ein?!

(Würds ja selber machen, nur hab ich von dem Repository keine Ahnung...)

Gruenbaer ·

Sehr, sehr cool!

Der Post ist zwar schon was älter, ich versuch es trotzdem mal.

Der externe Link funktioniert mit dem hinzugefügten Code, jedoch geht die externe URL im gleichen Fenster auf.

Kann man den Code auch noch so umschreiben, dass das Target _blank ist?

Danke,

Emil

sunfish ·

HowTo - Hook in realURL
Thread: RealURL und Seitentyp "Externe URL"

Hi blub19,
ich habe deinen Vorschlag in einen Hook eingebaut, den die Datei vor realURL ext_localconf.php am Ende der "function encodeSpURL" anbietet. Damit bleibt realURL Update fähig.

<?php
class tx_realurl_hooksHandler{

  function user_encodeSpURL_externalURL ( $hookParams, $pObj )
  {
	$params = $hookParams['params'];
	$page   = $params['args']['page'];

	if($page['doktype'] == 3 && $page['url']!= '')
	{
		# FB::send($page,'page');
		switch($page['urltype'])
		{
		  case 0:
		  case 1:
			  $scheme = 'http://';
			  break;
		  case 2:
			  $scheme = 'ftp://';
			  break;
		  case 3:
			  $scheme = 'mailto:';
			  break;
		  case 4:
			  $scheme = 'https://';
			  break;
		}

	 $newUrl = $scheme.$page['url'];

	 $hookParams['URL'] = $newUrl;
	 # FB::send( $hookParams['URL'],  'new URL');
	}
  }
}
?>

Der Hook wird am besten in einer eigenen Extension untergebracht und registriert, z.B. im Verzeichnis typo3conf/ext/my_extension/realurl_hook in einer Datei Namens class.tx_realurl_hooksHandler.php. Das würde dann in der ext_localconf.php so aussehen:

<?php
# Datei einbinden
require_once(t3lib_extMgm::extPath('my_extension'). 'realurl_hook/class.tx_realurl_hooksHandler.php');
# userFunc registrieren
$TYPO3_CONF_VARS['EXTCONF']['realurl']['encodeSpURL_postProc'][]= 'tx_realurl_hooksHandler->user_encodeSpURL_externalURL';
?>

Zur Info 1: typo3blogger.de/alles-uber-hooks/
Zur Info 2: Hook Dokumentation von typo3.org