script dans rubrique

On me demande d'insérer un script dans le champs #TEXTE

le script à été créer par le client (des lettres qui arrive à tour de rôle sur la page)
et je dois l'intégré
1. j'ai mis le script du HEAD dans la page html de la rubrique consernée "rubrique-14.html"
2. j'ai le script du body dans le champ TEXTE de la rubrique
3. ca foire, rien ne se passe donc il comprend pas ce que je demande

Question
- Est c'est passible de mettre des script de mouvement sur une rubrique ?
- Si oui, ou j'ai fait l'erreur ?

je vous met le script en annexe
Merci de votre aide

Piwi

Script.html (8.28 KB)

Piwi wrote:

On me demande d'insérer un script dans le champs #TEXTE

Pour le JavaScript je ne crois pas que cela soit possible.
Plutôt le mettre dans le squelette (éventuellement un squelette inclus) et
appeler ce squelette pour le rubrique/article concerné. Du moins, c'est
comme ça que moi je l'essayerais.

Paolo

On ne peut pas mettre de script dans le texte d'un article ou d'une rubrique. SPIP le désactive, par sécurité pour le site.

J'ai vu ton script :

- la partie qui va dans le texte est du HTML/CSS, donc ça ne devrait pas poser de problème.
- ne pas oublier les attributs du <body>, mais ça ne marchera pas avec les 2 onload : il en faut un seul avec une séparation ";" entre 2 fonctions.
- apparemment, c'est un script ancien, il ne prend pas en compte les navigateurs récents, dont Mozilla/Firefox.

BMR

Ordiwill a écrit :

On me demande d'insérer un script dans le champs #TEXTE

le script à été créer par le client (des lettres qui arrive à tour de rôle sur la page)
et je dois l'intégré
1. j'ai mis le script du HEAD dans la page html de la rubrique consernée "rubrique-14.html"
2. j'ai le script du body dans le champ TEXTE de la rubrique
3. ca foire, rien ne se passe donc il comprend pas ce que je demande

Question
- Est c'est passible de mettre des script de mouvement sur une rubrique ?
- Si oui, ou j'ai fait l'erreur ?

je vous met le script en annexe
Merci de votre aide

Piwi

ok merci à tous

Piwi

BMR a écrit :

Ordiwill <Spip <at> self-reliance.be> writes:

On me demande d'insérer un script dans le champs #TEXTE

le script à été créer par le client (des lettres qui arrive à tour de
rôle sur la page)
et je dois l'intégré
1. j'ai mis le script du HEAD dans la page html de la rubrique consernée
"rubrique-14.html"
2. j'ai le script du body dans le champ TEXTE de la rubrique
3. ca foire, rien ne se passe donc il comprend pas ce que je demande

Question
- Est c'est passible de mettre des script de mouvement sur une rubrique ?
- Si oui, ou j'ai fait l'erreur ?

je vous met le script en annexe
Merci de votre aide

Bonjour !

J'ai eu le même genre de cas. Effectivement, SPIP désactive un script
contenu dans un texte. Ce que j'ai fait :
J'ai créé une balise à inscrire dans le texte : #calcul#.
Pour l'affichage du texte, je la supprime pour qu'elle n'apparaisse pas.
Donc dans mes_fonctions.php3 :
function sanscalc($letexte){
$letexte = ereg_replace("#calcul#","",$letexte);
return $letexte;
}
Et dans le squelette :
[(#TEXTE|sanscalc)]

Je mets le script dans un fichier à part, que je nomme calc.html.
En fait, vu qu'il me fallait un script spécifique à l'article pour plusieurs
d'entres eux, j'ai calc-45.html pour l'article 45, calc-33 pour le 33 etc ...

Et dans le squelette de l'article, je cherche si #calcul# est contenu
dans le texte, et si c'est le cas j'inclus le fichier contenant le script.
Ca peut se faire n'importe où dans le squelette, y compris entre les
balise <head> :
<?php
$le_texte='[(#TEXTE|texte_script)]';
$script_a_joindre=strpos($le_texte,"#calcul#");
if($script_a_joindre===false){
}
else{
$script_a_inclure='[(#URL_SITE_SPIP)]'."/calc-".'[(#ID_ARTICLE)]'.".html";
if(is_file($script_a_inclure)) include($script_a_inclure);
}
?>
N.B. : La fonction strpos renvoie la position de la chaîne. Ici, on veut
juste savoir si elle est présente. On teste donc si la fonction renvoie
false (Attention 3 fois =).

P.S. : C'était sous SPIP 1.7, donc le fichier à inclure était à la racine.
Sous 1.8, il serait plus propre de le mettre dans /squelettes.
Et tu peux bien sûr adapter ça pour des scripts propres à une rubrique ...
Voilà ! J'espère que ça pourra t'aider !
A + !
Philippe

C'est une solution.

Ma solution sur un site d'aide javascript qui contient beaucoup de scripts de test différents :
- tous les scripts sont dans des fichiers .js externes (dans un sous-répertoire "scripts")
- le champ surtitre est réservé pour inscrire un fichier .js
- je fais avant la balise </head> :
[<script type="text/javascript" src="scripts/(#SURTITRE)"></script>]

Les appels aux différentes fonctions sont faits grâce à des événements (dans le fichier .js) ou avec <a href="javascript:xxx"...> dans le texte de l'article.

J'utilise aussi cet artifice sur un site qui a pas mal de formulaires avec contrôle JS (et PHP ensuite).

BMR

PS : Philippe, comme ce sont 2 solutions alternatives, voire complémentaires, ne pourrait-on pas éventuellement faire une contrib présentant les 2 ?

Philippe Simonin a écrit :

Ordiwill <Spip <at> self-reliance.be> writes:

Bonjour !

J'ai eu le même genre de cas. Effectivement, SPIP désactive un script
contenu dans un texte. Ce que j'ai fait :
J'ai créé une balise à inscrire dans le texte : #calcul#.
Pour l'affichage du texte, je la supprime pour qu'elle n'apparaisse pas.
Donc dans mes_fonctions.php3 :
function sanscalc($letexte){
$letexte = ereg_replace("#calcul#","",$letexte);
return $letexte;
}
Et dans le squelette :
[(#TEXTE|sanscalc)]

Je mets le script dans un fichier à part, que je nomme calc.html.
En fait, vu qu'il me fallait un script spécifique à l'article pour plusieurs
d'entres eux, j'ai calc-45.html pour l'article 45, calc-33 pour le 33 etc ...

Et dans le squelette de l'article, je cherche si #calcul# est contenu
dans le texte, et si c'est le cas j'inclus le fichier contenant le script.
Ca peut se faire n'importe où dans le squelette, y compris entre les
balise <head> :
<?php
$le_texte='[(#TEXTE|texte_script)]';
$script_a_joindre=strpos($le_texte,"#calcul#");
if($script_a_joindre===false){
}
else{
$script_a_inclure='[(#URL_SITE_SPIP)]'."/calc-".'[(#ID_ARTICLE)]'.".html";
if(is_file($script_a_inclure)) include($script_a_inclure);
}
?>
N.B. : La fonction strpos renvoie la position de la chaîne. Ici, on veut
juste savoir si elle est présente. On teste donc si la fonction renvoie
false (Attention 3 fois =).

P.S. : C'était sous SPIP 1.7, donc le fichier à inclure était à la racine.
Sous 1.8, il serait plus propre de le mettre dans /squelettes. Et tu peux bien sûr adapter ça pour des scripts propres à une rubrique ...
Voilà ! J'espère que ça pourra t'aider !
A + !
Philippe