Fonction Target

Fonction permettant de spécifier les targets des liens externes « http:// » au cas par cas depuis l’interface dans un bloc de texte.

1. Les Raccourcis

_blank :
[lien->http://www.minirezo.net#B#]

_parent :
[lien->http://www.minirezo.net#P#]

_self :
[lien->http://www.minirezo.net#S#]

_top :
[lien->http://www.minirezo.net#T#]

Pour spécifier un target, j’ai utilisé le symbole « # » qui permet de vérifier le lien dans l’interface SPIP sans provoquer d’erreur ni de modification dans le code SPIP. Cependant le target ne fonctionnera que dans le site.
J’avais essayé avec des {} et des [] mais ca rentre en conflit avec le formatage de Spip.

2. La fonction à coller dans le fichiers mes_fonction.php3

function target($letexte) {
$letexte = ereg_replace("<a ([^>]*http://[^>]*#B#[^>]*)>", "<a \\1
target=\"_blank\">", $letexte);
 $letexte = ereg_replace("<a ([^>]*http://[^>]*#S#[^>]*)>", "<a \\1
target=\"_self\">", $letexte);
 $letexte = ereg_replace("<a ([^>]*http://[^>]*#P#[^>]*)>", "<a \\1
target=\"_parent\">", $letexte);
 $letexte = ereg_replace("<a ([^>]*http://[^>]*#T#[^>]*)>", "<a \\1
target=\"_top\">", $letexte);
// apres réecriture des urls suppréssion des tags.
 $letexte  = ereg_replace("#B#","",$letexte);// _blank
 $letexte  = ereg_replace("#S#","",$letexte);// _self
 $letexte  = ereg_replace("#P#","",$letexte);// _parent
 $letexte  = ereg_replace("#T#","",$letexte);// _top
 return $letexte;
}

3. Pour utiliser la fonction dans les squelettes

La syntaxe est [(#TEXTE|target)].

Note des admins : extrait d’une entrée de la FAQ du site officiel de SPIP :

Beaucoup d’internautes et de webmestres (surtout chez les débutants) estiment que certains liens sur les sites doivent ouvrir, de force, une nouvelle fenêtre dans le navigateur. L’équipe de SPIP, comme beaucoup d’autres, pense que c’est mal.
(...)
La bonne solution, répétons-le, est de ne pas utiliser de liens ouvrants ; l’autre possibilité, moins bonne, est de les utiliser systématiquement sur les liens externes, en utilisant pour cela le filtre |liens_ouvrants.

Discussion

15 discussions

  • webtice

    merci florent pour cette fonction qui me semble très utile.

    Je cherche depuis longtemps une telle fonction. jusqu’à présent quand je vouler ouvrir une fenetre je rajouter du code HTML, lourd très lourd.

    Mais j’ai un problème dès que je créer un fichier mes_fonction.php3 j’ai malheureusement des problèmes d’affichage. Aujourdhui les flèches créées à la place des puces disparaissent.

    Répondre à ce message

  • peut on parametrer la taille de la fenêtre
    et ses propriétés ?

    Répondre à ce message

  • Julien Bidoret

    justement, à propos des fichiers pdf...
    Je suis nouvel utilisateur de SPIP et absolument ignare en ce qui concerne le php.

    Est-il possible de modifier le script ci dessus pour le pointer vers des fichiers définis et/ou des url relatives.

    Concernant les target externes, je suis plus que d’accord avec ce qui est dit ci dessus. Particulièrement quand il s’agit de fichiers pdf qui ont souvent tendance à créer des gros bugs dans les navigateurs, ou au moins de gros ralentissements.

    Répondre à ce message

  • 1

    Merci Florent pour cette contribution ciblée ! :-D

    Je suis en train de réaliser un site avec une frame supérueure contenant un menu flash.

    Lorsqu’il s’agira de liens internes au site je n’aurait pas de soucis, mais, il faut absolument que je puisse sortir du cadre (target=_top) lorsqu’il y aura des liens externes. Et là, ce n’est même pas une question d’habitude ou de confort, c’est absolument nécessaire. :-o

    J’ai aussi l’espoir d’une amélioration,

    Hubert.

    • Bonjour à tous,

      Lorsque j’ai pris en main spip, j’ai fais le tour de ce qui me semblait indispensable, les target en faisait partie, j’aime « surtout les débutants » du commentaire
      de l’équipe spip contrib, je ne saurai me passer de target lors de la construction d’un site(au cas par cas et pas a outrance bien sur).

      donc je me suis mis a ecrire cette fonction, je ne suis pas programmeur php et je suis sur que le code pourrait etre optimisé, et puis il faudrait rajouter un target « name » pour cibler une fenetre par son nom, ce qui aurait l’avantage d’éviter l’ouverture de plusieurs fenetres.

      Avis aux programmeur donc capable d’améliorer la fonction.Puisque l’équipe spip ne veut pas revenir sur cette position. On ne leur jettera pas la pierre vu la qualité du travail effectué sur spip.

      Florent

    Répondre à ce message

  • Je pense surtout que d’un point de vue déontologique, le site doit indiquer au visiteur s’il est toujours dans le même site ou s’il en sort.

    Mon code de conduite est le suivant :
    lien interne -> même page
    lien externe -> nouvelle page
    document (pdf,doc...) -> nouvelle page.

    cette règle est pour moi absolue surtout lorsqu’il s’agit d’un lien externe profond. Le visiteur risque alors de ne pas comprendre du premier coup d’oeil qu’il se trouve sur un autre site.

    Enfin, en ayant observé mon propre comportement et celui d’autres personnes, j’ai remarqué qu’en général, lorsque qu’un personne visite un site, et qu’elle arrive sur une page contenant des liens externes, elle a déjà montré un minimum d’intérêt pour le site. En suivant un lien, elle n’a généralement pas envie de quitter le premier site. Mais le nouveau site qu’elle visite peut ne pas lui plaire et l’issue est sans appel : la petite croix en haut a droite de la fenêtre.
    Il s’agit d’une réaction que certain trouveront d’instinctive et irraisonnée, mais un concepteur de site doit tenir compte de cela. Tous les visiteurs de sites n’ont pas les mêmes habitudes.

    Bien a vous

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom