SPIP: afficher le fichier css selectionné - HTML/CSS - Programmation
MarshPosté le 02-02-2011 à 19:26:10
Bonjour, j'ai conçu un plugin qui affiche le contenu d'un site sous spip2 en version smartphone jusqu'à maintenant les différents habillages ou couleurs de thème, étaient charger en plugin par couleur.
l'idée m'est venue de regrouper tous les habillages possibles en un seul et même plugin et de sélectionner le thème sur un panneau de configuration (cfg). mais ça ne fonctionne pas. je débute en php/js, et je ne trouve pas de solution.
le choix du css se fait ainsi sur un fichier nommé itwx_css.php: <?php // prefix avec le nom du plugin + _ + action = itwx_mobile_3_00_nb_css function itwx_mobile_3_00_christ_nb_css($flux) { $page = _request('page') ; if (substr($page,0,7) == 'bberry_') { $color = lire_config('itwx/color') ; switch ($color) { case 'nb': $flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('nb.css')).'" type="text/css" media="projection, screen, tv" />'; break ; case 'vert': $flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('vert.css')).'" type="text/css" media="projection, screen, tv" />'; break ; case 'mauve': $flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('mauve.css')).'" type="text/css" media="projection, screen, tv" />'; break ; default: $flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('bleu.css')).'" type="text/css" media="projection, screen, tv" />'; } } return $flux; } ?>
et la fonction sur plugin.xml est appelé ainsi: <pipeline> <nom>insert_head_css</nom> <action>nb_css</action> <inclure>itwx_css.php</inclure> </pipeline>
j'ai l'impression qu'il manque un lien entre la valeur choisie en cfg, et function.. sinon où est le problème?..
Marsh Posté le 02-02-2011 à 19:26:10
Bonjour,
j'ai conçu un plugin qui affiche le contenu d'un site sous spip2 en version smartphone
jusqu'à maintenant les différents habillages ou couleurs de thème, étaient charger en plugin par couleur.
l'idée m'est venue de regrouper tous les habillages possibles en un seul et même plugin et de sélectionner le thème sur un panneau de configuration (cfg). mais ça ne fonctionne pas. je débute en php/js, et je ne trouve pas de solution.
en config, j'ai ce script:
<form method="post">[(#ENV{_cfg_}|form_hidden)]
<fieldset><legend>Sélectionner la couleur</legend>
<br />
<input type="radio" name="color" value="bleu"[ checked="(#ENV{color}|=={bleu}|?{checked})"]/>
<label><img src='#CHEMIN{img_bleu/iTwX_27.png}' style='vertical-align: text-bottom;'/>
Bleu</label>
<br /><br />
<input type="radio" name="color" value="nb"[ checked="(#ENV{color}|=={nb}|?{checked})"]/>
<label><img src='#CHEMIN{img_nb/iTwX_NB27.png}' style='vertical-align: text-bottom;'/>
Noir & Blanc</label>
<br /><br />
<input type="radio" name="color" value="vert" [ checked="(#ENV{color}|=={vert}|?{checked})"]/>
<label><img src='#CHEMIN{img_vert/iTwX_V27.png}' style='vertical-align: text-bottom;'/>
Vert</label>
<br /><br />
<input type="radio" name="color" value="mauve" [ checked="(#ENV{color}|=={mauve}|?{checked})"]/>
<label><img src='#CHEMIN{img_mauve/iTwX_M27.png}' style='vertical-align: text-bottom;'/>
Mauve</label>
<br /><br />
</fieldset><br />
<input type="submit" name="_cfg_ok" value="<:OK:>" />
</form>
le choix du css se fait ainsi sur un fichier nommé itwx_css.php:
<?php
// prefix avec le nom du plugin + _ + action = itwx_mobile_3_00_nb_css
function itwx_mobile_3_00_christ_nb_css($flux)
{
$page = _request('page') ;
if (substr($page,0,7) == 'bberry_') {
$color = lire_config('itwx/color') ;
switch ($color) {
case 'nb':
$flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('nb.css')).'" type="text/css" media="projection, screen, tv" />';
break ;
case 'vert':
$flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('vert.css')).'" type="text/css" media="projection, screen, tv" />';
break ;
case 'mauve':
$flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('mauve.css')).'" type="text/css" media="projection, screen, tv" />';
break ;
default:
$flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('bleu.css')).'" type="text/css" media="projection, screen, tv" />';
}
}
return $flux;
}
?>
et la fonction sur plugin.xml est appelé ainsi:
<pipeline>
<nom>insert_head_css</nom>
<action>nb_css</action>
<inclure>itwx_css.php</inclure>
</pipeline>
j'ai l'impression qu'il manque un lien entre la valeur choisie en cfg, et function..
sinon où est le problème?..
quelqu'un a une idée?