Quand on écrit des articles dans SPIP, il est possible de spécifier qu’un article n’aura pas de texte et sera donc virtuel. L’article est en fait un titre et une description pour integrer une page externe au site dans ses publications.
Il n’y a pas de moyen spécifique offert par SPIP pour déterminer si un article est virtuel ou non. Mais si on regarde bien, c’est assez facile de le determiner.
SPIP quand on crée une redirection, stoque l’url de l’article distant dans le champ « chapo » de l’article, en prenant soin de mettre un signe = (égale) au début pour se rappeler que c’est un article virtuel.
Ainsi, pour savoir si un article est virtuel, il suffit de tester la présence de ce signe =.
Fait tourner Marcel
Par exemple, pour lister tous les articles virtuels, on utilisera le critère : {chapo == ^=}
:
<B_virt>
<h2>Les articles virtuels:</h2>
<ul>
<BOUCLE_virt(ARTICLES) {chapo == ^=} {par date} {inverse}>
<li>#TITRE</li>
</BOUCLE_virt>
</ul>
</B_virt>
le critère == compare le chapo avec une expression régulière, dans notre cas ^=
^ signifie qu’on veut regarder le début exact du chapo, = indique qu’on veut le sigle = à cette position.
Y’a du monde sur la corde à linge
Parfois, il est préférable d’utiliser un filtre pour faire ce test. Par exemple pour afficher une mention que le lien que l’on affiche envoi sur un article virtuel.
Pour cela on va créer un filtre qui nous permet de faire des expressions régulières sur les balises SPIP :
function expreg($text, $match) {
return preg_match($match, $text);
}
On peut ainsi faire un test du chapo avec ce filtre :
[(#CHAPO*|expreg{/^=/}|?{'article virtuel',''})]
L’expression est la même que précédemment, la fonction php utilisé demande juste qu’on mettre des / autour.
Remarques :
On utilise deux petites spécificités ici :
- on met une étoile * sur la balise #CHAPO pour s’assurer que SPIP ne va pas la traiter et enlever l’information sur la redirection,
- on utilise le filtre de test | ? pour utiliser le résultat retourné par notre nouveau filtre.
Discussions par date d’activité
3 discussions
pour forcer à ouvrir une nouvelle page si l’article est virtuel en Spip 3 la redirection est stockée dans le champ « virtuel »
<a(#VIRTUEL href="#URL_ARTICLE" >[(#TITRE|textebrut|supprimer_numero)]
pour compléter, un bout de code pratique pour SPIP 3
si l’article est une redirection vers l’extérieur, l’ouvrir dans une nouvelle fenêtre (je sais c’est mal ...)
Répondre à ce message
apparement cela a évolué avec SPIP 2
une solution lue sur la liste
Ajout dans mes_fonctions.php
Appel dans squelette
[(#CHAPO|adresse_virtuelle)]
Utiliser (#CHAPO*
en syntaxe « moderne » (spip2 et+)
cela donne
[(#CHAPO*|match{^=}|?{oui,non})]
Répondre à ce message
Je voudrais que le lien affiche directement la page de redirection. Donc si je fais :
Le lien affiche « http://www.mon-domaine.tld=http://www.autre-domaine.tld/page », alors que je voudrais « http://www.autre-domaine.tld/page ».
J’ai dû faire un filtre :
avec le filtre :
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 :
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.
Suivre les commentaires : |