Comment se débarrasser de spip_out ?

Bonjour,

Je développe un nouveau site en spip 2.0, et je constate que des liens
externes insérés dans le corps d'un article apparaissent toujours avec
une class="spip_out" dans l'interface publique.
Pour être honnête, ce n'est pas *vraiment* gênant, mais je suis
maniaque.

Y a-t-il une façon de supprimer ce paramètre ?

Merci.

--
  Stéphane Nahmani
  sholby@free.fr

Stéphane Nahmani a écrit :

Bonjour,

[...] liens
externes insérés dans le corps d'un article apparaissent toujours avec
une class="spip_out" dans l'interface publique.
[...]

Bonjour

c'est pour différencier les liens externes et internes. C'est
pratique. Si tu ne t'en sers pas, ça ne change rien, mais c'est un
peu dommage.

A bientôt
Grégoire

Stéphane Nahmani <sholby@free.fr> wrote:

Je développe un nouveau site en spip 2.0, et je constate que des liens
externes insérés dans le corps d'un article apparaissent toujours avec
une class="spip_out" dans l'interface publique.

Merci à Marc qui m'a donné la réponse en privé, je cite, cela pouvant
peut-être dépanner d'autres personnes :

Bonjour, pour faire ça, tu crées une fonction à mettre dans
mes_fonctions.php,la voilà :

function no_out ($texte) {
  $texte = str_replace('spip_out', ' ', $texte); //supprime la classe
return $texte;
}

Et tes balises textes : [(#TEXTE|no_out)]

Voilà. Mais tu peux aussi faire ça avec tout les attributs de spip.

Merci à romy.tetue pour son inspiration, la fonction complète est là :

http://romy.tetue.net/spip.php?article415

--
  Stéphane Nahmani
  sholby@free.fr

Merci à Marc qui m'a donné la réponse en privé, je cite, cela pouvant
peut-être dépanner d'autres personnes :

> Bonjour, pour faire ça, tu crées une fonction à mettre dans
> mes_fonctions.php,la voilà :
>
> function no_out ($texte) {
> $texte = str_replace('spip_out', ' ', $texte); //supprime la classe
> return $texte;
> }
>
> Et tes balises textes : [(#TEXTE|no_out)]

Ça marche, mais il y a des effets de bord : si tu veux raconter ça dans
un article d'un site SPIP qui utilise l'astuce en question, cet article
deviendra à peu près incompréhensible parce que les 'spip_out' dans le
corps du texte seront aussi remplacés par des espaces :slight_smile:

Autant les laisser, ces class="spip_out", ils ne font de mal à personne !

  /v

--
Vincent Beffara
UMPA - ENS Lyon
46 Allée d'Italie
69364 LYON cedex 07
Tel: 04 72 72 85 25
Fax: 04 72 72 84 80

Vincent Beffara <vbeffara+ml@gmail.com> wrote:

Ça marche, mais il y a des effets de bord : si tu veux raconter ça dans
un article d'un site SPIP qui utilise l'astuce en question, cet article
deviendra à peu près incompréhensible parce que les 'spip_out' dans le
corps du texte seront aussi remplacés par des espaces :slight_smile:

Oui, enfin, pour un site de directeurs d'hôpitaux, je crois que la
probabilité de retrouver des "spip_out" dans le corps du texte tend vers
l'infiniment petit... :wink:

--
  Stéphane Nahmani
  sholby@free.fr

Stéphane Nahmani a écrit :

Oui, enfin, pour un site de directeurs d'hôpitaux, je crois que la
probabilité de retrouver des "spip_out" dans le corps du texte tend vers
l'infiniment petit... :wink:

certes,mais avec ton filtre perso tu vas te retrouver avec des
   <a href="..." class=" ">
dans ton html (9 caractères inutiles, 10 en comptant l'espace précédent)
et ça ne calmera pas plus ta manie...

en 2.0, tu peux redéfinir la fonction 'inc_lien_dist()' de
ecrire/inc/liens.php
en la recopiant dans mes_options.php et en la modifiant :

function inc_lien($lien, $texte, $class='', $title='', $hlang='',
                   $lang='', $connect='') {
   if (substr($lien,0,1) == '#') # ancres pures (internes a la page)
     $class = 'spip_ancre';
   elseif (preg_match('/^\s*mailto:/',$lien)) # pseudo URL de mail
     $class = "spip_mail";
   elseif (preg_match('/^<html>/',$lien)) # cf traiter_lien_explicite
     $class = "spip_url";

   // Si l'objet n'est pas de la langue courante, on ajoute hreflang
   if (!$hlang AND $lang!=$GLOBALS['spip_lang'])
     $hlang = $lang;
   $lang = ($hlang ? " hreflang='$hlang'" : '');

   if ($title)
     $title = ' title="'.texte_backend($title).'"';

   # ceci s'execute heureusement avant les tableaux et leur "|".
   # Attention, le texte initial est deja echappe mais pas forcement
   # celui retourne par calculer_url.

   # Penser au cas [<imgXX|right>->URL], qui exige typo('<a>...</a>')
   return typo("<a href='$lien' class='$class'$lang$title>$texte</a>",
               true, $connect);
}

penser aussi à supprimer dans les squelettes toutes les définitions de cette classe ; par exemple dans article.html :

   [<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> :
    <a href="(#URL_SITE)"
    class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]
    </a></p>]

Vincent Beffara a écrit :

Autant les laisser, ces class="spip_out", ils ne font de mal à personne !

Oui! D'autant plus que supprimer class="spip_out" c'est priver les visiteurs d'une information utile : la différenciation entre liens internes et lien externes.

Alors que la suppression des class="spip" pour les paragraphes n'appauvrit pas la présentation puisqu'on peut styler directement la balise <p>.

D'ailleurs Spip 2 a conservé les 1er et supprimé les seconds.

FR

F. Roure <f.roure@laposte.net> wrote:

Oui! D'autant plus que supprimer class="spip_out" c'est priver les
visiteurs d'une information utile : la différenciation entre liens
internes et lien externes.

Bon, vous m'avez convaincu.

En fait, j'ai l'habitude d'utiliser un script JQuery ad-hoc pour ouvrir
les liens vers des sites externes (et les pdf) dans une autre fenêtre ;
évidemment, rien ne m'empêche de faire le test sur la classe spip-out.
plutôt que sur "a[@href^='http']" (plus une comparaison sur
location.hostname). Ça ne gâchera rien du point de vue du temps
d'exécution, et puis comme ça je vais rajouter une petite puce pour
indiquer que c'est un lien externe.

Voilà, on pose une toute petite question, et on se retrouve à refaire
tout le site ! ;-)) (Comment ça, j'exagère ? :wink:

Merci à tous pour vos avis.

--
  Stéphane Nahmani
  sholby@free.fr

denisb <denisb@laposte.net> wrote:

en 2.0, tu peux redéfinir la fonction 'inc_lien_dist()' de
ecrire/inc/liens.php n la recopiant dans mes_options.php et en la
modifiant :

Voir mon autre réponse dans l'enfilade, mais c'est bon à savoir. Merci !

--
  Stéphane Nahmani
  sholby@free.fr