Aller au contenu

faire des liens XHTML valides en PHP


martin

Sujets conseillés

Comme je suis fainéant, j'ai fait un bout de code qui m'écrit mes liens...

Ainsi je n'ai plus qu'a remplir un tableau et appeler la fonction.

Cela à deux avantages. Premièrement, mon lien est forcément valide. plus à passer par la vérification XHTML. surtout si le lien à été géneré par un utilisateur d'un forum par exemple...

Deuxièmement, je trouve cela plus simple et moins contraignant, mais ca c'est mon avis. Il suffit de remplir les valeurs qui nous interressent et de laisser les autres vides. Il faut bien evidemment combiner ceci avec un fichier css, notamment pour l'attribut "lang"

La fonction

<?php
function nc_make_link($link)
{
//inclusion du template
include('site/tmp/template_link.php');

echo $template_link;
}
?>

Le template

<?php
$template_link='<a href="'.$link['url'].'" title="'.$link['title'];
//si le lien doit s'ouvrir dans une nouvelle fênetre, on le marque dans l'attribut title
if(isset($link['window']) && $link['window'] == 'new')
{
$template_link.=' dans une nouvelle fenêtre';
}
$template_link.='"';
//si il y a une accesskey, on l'ajoute
if(isset($link['accesskey']) && !empty($link['accesskey']))
{
$template_link.=' accesskey="'.$link['accesskey'].'"';
}
//si il y a une class css on l'ajoute
if(isset($link['class']) &&  !empty($link['class']))
{
$template_link.=' class="'.$link['class'].'"';
}
//si le lien doit s'ouvrir dans une nouvelle fênetre, on le fait en javascript pour rester conforme XHTML
if(isset($link['window']) && $link['window'] == 'new')
{
$template_link.=' onclick="window.open(this.href,\'_blank\'); return false;"';
}
//Si la langue est différente du francais, on rajoute l'attribut lang
if(isset($link['lang']) && ($link['lang']!='fr' && $link['lang']!=''))
{
$template_link.=' hreflang="'.$link['lang'].'"';
}
$template_link.='>'.$link['name'].'</a>';
?>

L'appel de fonction

<?php
//initialisation des variables
unset($link);
//remplissage des données, ne mettre que celle dont on à besoin, les autres sont facultatives
$link['name'] = 'nom du lien';
$link['url'] = 'http://www.domaine.tld';
$link['title'] = 'title';
$link['accesskey'] = '1';
$link['window'] = 'new';
$link['lang'] = 'fr';
$link['class'] = 'classe css';
//Appel de la fonction
nc_make_link($link);
?>

Cet code est en fonction sur mon site : http://new-concept.supiot.net

Voilà, si vous y voyez des améliorations...

<modérateur: déplacé en PHP & MySQL : plus adapté>

Modifié par Loupilo
Lien vers le commentaire
Partager sur d’autres sites

Simpa, mais pour la nouvelle fenêtre j'aurai plutôt fait de cette façon avec un script externe :

http://css.alsacreations.com/Tutoriels-Jav...ouvelle-fenetre

Sinon le problème avec les forums c'est que c'est pas vraiment possible de mettre un attribut title et lang (et encore moins un acceskey) à chaque lien posté par les membres.

Lien vers le commentaire
Partager sur d’autres sites

On en met un seulement si cela est nécéssaire, faudrait voir pour adapter les bbcode... mais on peut aussi imaginer que le script aille chercher la langue de la page en question, en fonction des ses metas, et de génerer un title en fonction du nom de l'url...

L'interet de cette fonction est surtout pour génerer une liste de liens dynamiquement avec une base de données...

Lien vers le commentaire
Partager sur d’autres sites

mais on peut aussi imaginer que le script aille chercher la langue de la page en question, en fonction des ses metas, et de génerer un title en fonction du nom de l'url...

Oui, j'avais essayé ça pour mon forum, je te déconseille, c'est beaucoup trop lent :thumbdown:

Lien vers le commentaire
Partager sur d’autres sites

Ah, bah d'accord, c'était une idée comme ca... encore que tel quie je me conais je testerai surement, mais merci du conseil...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...