Re: chemin d'images dans le js d'un plugin
pierre laszczak <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <CAKNND-34WvHdGWNN0tP6hMWn454Z9ibBO+Jgj90mmTBKdrF3KQ@mail.gmail.com> |
Salut,
Je sais pas si il existe une méthode dans Spip pour le faire "proprement",
chaque plugin le fait un peu à sa façon il me semble.
En général Il suffit de déclarer la variable dans le squelette du head dans
des balises scripts. Faut pas chercher midi a 14H :)
[<script type="text/javascript">var
mavarjs='(#CONFIG{mavaleurqqpart})'</script>]
Le dim. 26 janv. 2020 à 17:22, Jean Marie Grall <
[email protected]> a écrit :
> Salut,
>
> dans le but de sauver des écureuils, j'avais gardé ce mail sous le coude
> pour un cas d'utilisation ultérieure et je crois qu'on y est...
>
> Pour un squelette HTML5up, j'ai besoin, dans du css, de récupérer l'url
> d'une image stockée en base via la config du plugin.
>
> Donc, avant ce mail, j'aurais fait ça :
>
> - un squelette pour faire du css comme ici
> https://git.spip.net/spip-contrib-squelettes/html5up_paradigm_shift/src/branch/master/css/html5up_paradigm_shift.spip.css.html#L2
> - que j'aurais appeler avec #PRODUIRE{fond...} comme là
> https://git.spip.net/spip-contrib-squelettes/html5up_paradigm_shift/src/branch/master/inclure/head.html#L35
>
> J’avais aussi la solution du pipeline insert_head comme ici :
> https://git.spip.net/spip-contrib-extensions/responsivenav/src/branch/master/responsivenav_pipelines.php#L18
>
> Mais maintenant, je ne sais pas, je ne sais plus. Alors, comment je sauve
> les bébêtes ?
>
> jeanmarie
>
>
> Le 16/12/2019 à 10:01, Cerdic a écrit :
>
> Never ever ! Jamais, ô grand jamais !
>
> Chaque fois qu’on fait un squelette pour du JS ou du CSS un troupeau
> d’écureuil meurt en tombant d’un arbre.
> (aka c’est totalement non écologique).
>
> Pour ce genre de cas il faut faire comme dans le plugin links par exemple :
>
> - Dans le pipeline insert_head_css tu insère un tout petit bout de JS
> inline qui initialise une variable JS
>
> https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/links/trunk/links_fonctions.php#L89
>
> (la bonne pratique est d’insérer ce JS inline AVANT les CSS, donc en début
> de pipeline, pour de sombres histoires de cascade de chargement par les
> navigateurs, mais si tu le fait à la fin de insert_head_css c’est pas la
> mort - mais il faut alors insérer avant le script, et comme tous les
> scripts vont être regroupés/concaténés par le minifieur, il faut être sur
> que ton js inline sera bien avant le JS concaténé à la fin, donc dans
> insert_head ça risque de pas toujours marcher)
>
> Dans ton cas tu initialisera cette variable avec le chemin vers le dossier
> img/chesspieces/wikipedia, que tu peux trouver avec un find_in_path()
>
> - dans ton js, tu utilises cette variable globale à la place du chemin en
> dur
>
> https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/links/trunk/links.js#L9
> Cela dit, dans ton cas, il y a déjà quelque chose de prévu, donc il
> faudrait réussir à initialiser config.pieceTheme (mais a voir d’où vient ce
> config, si c’est une variable globale ou quelque chose à passer quand tu
> appele les fonctions de ton js)
>
> Et hop le tour est joué, tu as sauvé des écureuils :)
>
>
>
>
> --
> Cédric
> Le 15 déc. 2019 à 21:03 +0100, Jean Marie Grall
> <[email protected]> <[email protected]>, a
> écrit :
>
> En js, je sais pas, mais avec #CHEMIN
> https://www.spip.net/fr_article4332.html tu peux le faire.
>
> Par contre, ça veut dire que ton chessboard.js doit être un squelette,
> par ex chessboard.js.html, que tu appelles ensuite par le pipeline
> insert_head (à moins que la déclaration dans paquet.xml gère les
> squelettes?)
>
> jeanmarie
>
> Le 15/12/2019 à 18:08, Jacques B a écrit :
>
> Bonjour,
> Je cherche à faire un plugin utilisant le script
> https://chessboardjs.com/
>
> Je déclare le script dans paquet.xml ainsi :
> <script source="js/chessboard.js" />
>
> J'utilise un modèle pour intégrer des échiquiers dans les articles et
> le script est bien intégré dans le privé ou le public.
>
> Par contre les images ne passent pas. Elles sont appelées ainsi dans
> chessboard.js
> // default piece theme is wikipedia
> if (!config.hasOwnProperty('pieceTheme') ||
> (!isString(config.pieceTheme) &&
> !isFunction(config.pieceTheme))) {
> config.pieceTheme = 'img/chesspieces/wikipedia/{piece}.png'
>
> Mais ça donne par exemple dans le privé
> http://localhost/chessboard/ecrire/img/chesspieces/wikipedia/wK.png ou
> dans le public
> http://localhost/chessboard/img/chesspieces/wikipedia/wK.png
> Comment faire pour que le chemin des images soit bien le le dossier
> img du plugin ? Y aurait-il une instruction find_in_path qui serait
> applicable en js ? Ou ... ?
>
> Merci de votre aide !
> Jacques
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: http://www.spip.net/
> dev: http://trac.rezo.net/trac/spip/
> irc://irc.freenode.net/spip
>
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: http://www.spip.net/
> dev: http://trac.rezo.net/trac/spip/
> irc://irc.freenode.net/spip
>
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: https://www.spip.net/
> dev: https://core.spip.net/
> irc://irc.freenode.net/spip