Helper na tvorbu externích odkazů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
knyttl
Člen | 196
+
0
-

Asi by bylo fajn mít helper na Tvorbu odkazů, například něco ve stylu:

<?php
	$odkaz = "http://www.root.cz/clanky/velky-test-php-frameworku-zend-nette-php-a-ror";
?>

Potom {$odkaz|website} v šabloně by vytvořilo:

<a href=„http://www.root.cz/clanky/velky-test-php-frameworku-zend-nette-php-a-ror“ target=„_blank“>www.root.cz/…nette-php-a-ror</a>

Jde mi hlavně o to rozumné zkrácení URL. Zatím můj nástřel (funkční):

<?php

	public static function website( $url ) {

		if( preg_match( "/^[ftphs]{3,5}:\/\/(.+?)[\/]?$/", $url, $regs ) )
			$url = $regs[1];

			$visible = $url;
			if( strlen( $visible ) > 30 ) {
				preg_match( "/^(.*?)\/.*(.{15})$/", $url, $regs );
				$visible = $regs[1]."/…".$regs[2];
			}
			return '<a href="http://'.$url.'" target="_blank">'.$visible.'</a>';
		}
	}
?>

Ano, to matchování url je příliš prosté, to se určitě musí zlepšit. Pro moje účely ale zatím postačovalo.

Editoval knyttr (26. 8. 2010 20:04)

Werkov
Člen | 17
+
0
-

Nevím, zda se to již někde jinde neřešilo, ale možná by se hodilo i filtr, co by v prostém textu nahrazoval to, co vypadá jako URL HTML odkazem (příklad – komentáře na FB).

Šlo by na to samozřejmě použít Texy!, ale nevím jestli to není kanón na vrabce.

redhead
Člen | 1313
+
0
-

Oba dva helpery si snadno dokážete napsat, do distribuce bych je ale rozhodně nedával..

westrem
Člen | 398
+
0
-

Najme mi pride trochu proti logike, ze v premennej mas „iba“ odkaz ale helper generuje cely HTML tag, ktory nejak nemas ako v tom helperi moznost pozmenit a ak by si to aj chcel bolo by to uz nie uplne koser.

Dalsia vec je napr. to, ze taky target="_blank" nie je validny pod XHTML 1.0 strict.

To skratenie URL ide pekne spravit aj kombinaciou truncate a substr na koniec retazca.

V konecnom dosledku preto suhlasim s redhead-om

knyttl
Člen | 196
+
0
-

Oukej, díky za vyjádření.

Redhead: Truncate a substr? To se rád nechám poučit! :-)

Editoval knyttr (2. 9. 2010 3:40)