Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#26 2011-12-02 21:09:23

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

Bonsoir,

En l'état, le contenu des fichiers suivants fonctionnent pour obtenir deux listes déroulantes permettant de faire 2 choix "Structure" et "Style". Ils sont basés sur le code partagé par pierrevg dans les précédentes messages et nettoyés pour garder l'essentiel. Nous appellerons ce basique "MyPrettyTheme". C'est une première étape ;)

_public.php

<?php

if (!defined('DC_RC_PATH')) { return; }

l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/public');

// style pour l'affichage du menu
$core->addBehavior('publicHeadContent','MyPrettyThemeStructure_publicHeadContent');

function MyPrettyThemeStructure_publicHeadContent($core)
{
	$style = $core->blog->settings->themes->MyPrettyThemeStructure_style;
	if (!preg_match('/^structure-fixed-1col-bottom|structure-fixed-2col-left-alternative|structure-fixed-2col-left|structure-fixed-2col-right-alternative|structure-fixed-2col-right|structure-fixed-3col-left|structure-fixed-3col-middle|structure-fixed-3col-right$/',$style)) {
		$style = 'menuH';
	}

	$url = $core->blog->settings->themes_url.'/'.$core->blog->settings->theme;
	echo '<link rel="stylesheet" type="text/css" media="screen" href="'.$url."/".$style.".css\" />\n";
}

// style pour l'affichage des saisons
$core->addBehavior('publicHeadContent','MyPrettyThemeStyle_publicHeadContent');

function MyPrettyThemeStyle_publicHeadContent($core)
{
	$style = $core->blog->settings->themes->MyPrettyThemeStyle_style;
	if (!preg_match('/^colour-custom|colour-classic$/',$style)) {
		$style = 'Classic';
	}

	$url = $core->blog->settings->themes_url.'/'.$core->blog->settings->theme;
	echo '<link rel="stylesheet" type="text/css" media="screen" href="'.$url."/".$style.".css\" />\n";
}

?>

_config.php

<?php

if (!defined('DC_CONTEXT_ADMIN')) { return; }

// chargement de la traduction
l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/admin');

// structure
$MyPrettyThemeStructure_styles = array(
	"1 colonne" => 'structure-fixed-1col-bottom',
	"2 colonnes, sidebar à gauche, bonus" => 'structure-fixed-2col-left-alternative',
	"2 colonnes, sidebar à gauche" => 'structure-fixed-2col-left',
	"2 colonnes, sidebar à droite, bonus" => 'structure-fixed-2col-right-alternative',
	"2 colonnes, sidebar à droite" => 'structure-fixed-2col-right',
	"3 colonnes, sidebar à gauche" => 'structure-fixed-3col-left',
	"3 colonnes, sidebar middle" => 'structure-fixed-3col-middle',
	"3 colonnes, sidebar à droite" => 'structure-fixed-3col-right'
);

if (!$core->blog->settings->themes->MyPrettyThemeStructure_style) {
	$core->blog->settings->themes->MyPrettyThemeStructure_style = 'structure-fixed-1col-bottom';
}

if (!empty($_POST['MyPrettyThemeStructure_style']) && in_array($_POST['MyPrettyThemeStructure_style'],$MyPrettyThemeStructure_styles))
{
	$core->blog->settings->themes->MyPrettyThemeStructure_style = $_POST['MyPrettyThemeStructure_style'];
	$core->blog->settings->addNamespace('themes');
	$core->blog->settings->themes->put('MyPrettyThemeStructure_style',$core->blog->settings->MyPrettyThemeStructure_style,'string','Structure',true);
	$core->blog->triggerBlog();
}

echo
'<fieldset><legend>'.__('Structure').'</legend>'.
'<p class="field"><label>'.__('Display:').'</label>'.
form::combo('MyPrettyThemeStructure_style',$MyPrettyThemeStructure_styles,$core->blog->settings->themes->MyPrettyThemeStructure_style).
'</p>'.
'</fieldset>';

// style
$MyPrettyThemeStyle_styles = array(
	__('Classic') => 'colour-classic',
	__('Custom') => 'colour-custom',
);

if (!$core->blog->settings->themes->MyPrettyThemeStyle_style) {
	$core->blog->settings->themes->MyPrettyThemeStyle_style = 'colour-classic';
}

if (!empty($_POST['MyPrettyThemeStyle_style']) && in_array($_POST['MyPrettyThemeStyle_style'],$MyPrettyThemeStyle_styles))
{
	$core->blog->settings->themes->MyPrettyThemeStyle_style = $_POST['MyPrettyThemeStyle_style'];
	$core->blog->settings->addNamespace('themes');
	$core->blog->settings->themes->put('MyPrettyThemeStyle_style',$core->blog->settings->MyPrettyThemeStyle_style,'string','Style',true);
	$core->blog->triggerBlog();
}

echo
'<fieldset><legend>'.__('Style').'</legend>'.
'<p class="field"><label>'.__('Display:').'</label>'.
form::combo('MyPrettyThemeStyle_style',$MyPrettyThemeStyle_styles,$core->blog->settings->themes->MyPrettyThemeStyle_style).
'</p>'.
'</fieldset>';

Hors ligne

#27 2011-12-02 21:13:30

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

Question de novice, est-il possible d'avoir des balise de type {{tpl:MyPrettyThemeStructure}} et {{tpl:MyPrettyThemeStyle}}. Cela sortirait comme code .structure-fixed-1col-bottom et .classic. Ceci afin de pouvoir créer une condition CSS pour certaines structures un peu particulières.

Si oui, comment faire ? (j'imagine que ça se déroule dans _public.php ?)

Hors ligne

#28 2011-12-06 19:52:06

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

Un petit up par rapport à mes questions postées en #25 et #27 ;-)

Hors ligne

#29 2011-12-07 10:21:13

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Réaliser un configurateur de thème

La création d'une balise est documentée ici : http://fr.dotclear.org/documentation/2.0/resources/tpl

Au hasard, il faudrait faire un truc comme ça

$core->tpl->addValue('MyPrettyThemeStructure',array('tplMyPrettyTheme','MyPrettyThemeStructure'));
 
class tplMyPrettyTheme
{
	public static function MyPrettyThemeStructure($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStyle_style.'; ?>';
	}
}

Hors ligne

#30 2011-12-07 10:23:07

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Réaliser un configurateur de thème

Pour ta question #25, tu peux te fier à cette page de documentation, à quelques exceptions près (il me semble que la doc sur "Afficher un message de confirmation lors de l'appui sur le bouton
" n'est pas faisable dans le cadre d'un thème).

Qu'est ce qui t'as paru différent dans le code de Pierre ?

Hors ligne

#31 2011-12-07 13:25:54

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Réaliser un configurateur de thème

annso a écrit :

(il me semble que la doc sur "Afficher un message de confirmation lors de l'appui sur le bouton
" n'est pas faisable dans le cadre d'un thème).

SI si c'est faisable, voir le configurateur de Freshy2 par exemple (quand on enregistre la config, on a bien le message en haut de page).

Hors ligne

#32 2011-12-08 11:01:15

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

Merci, j'y travaille mais pour l'instant, le code me renvoie un 0 dans le code source.

Hors ligne

#33 2011-12-08 11:20:08

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

Dans la page about:config, je viens de voir que les paramètres (choix des listes déroulantes) que j'ai généré, ils viennent se caser dans un "bloc" thèmes avec ceux des thèmes comme "BlowUp" ou "Wilson". Pourquoi les paramètres de thèmes comme "DesignPile" ou "Palette" ne viennent pas s'y mettre ? (curiosité)

Hors ligne

#34 2011-12-08 12:40:37

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Réaliser un configurateur de thème

Surement parce que celle qui a codé a fait ça n'importe comment ! Il faudrait que je me replonge dedans...

Hors ligne

#35 2011-12-08 17:00:38

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

annso a écrit :

Surement parce que celle qui a codé a fait ça n'importe comment ! Il faudrait que je me replonge dedans...

Mon interrogation n'avait rien contre toi ;-) (je suis même pas sûr que la documentation recommande de faire d'une façon précise mais si ça peut rester logique)

Hors ligne

#36 2011-12-08 17:04:17

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Réaliser un configurateur de thème

annso a écrit :

Surement parce que celle qui a codé a fait ça n'importe comment ! Il faudrait que je me replonge dedans...

Non, si le thème est un peu ancien, je crois que c'est juste une histoire de version de settings, il y a sans doute un appel à

$core->blog->settings->theme

au lieu de

$core->blog->settings->system->theme

Hors ligne

#37 2011-12-08 17:22:24

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Réaliser un configurateur de thème

Du coup, si je veux les mettre à jour (proprement), il faudrait supprimer les anciens settings et les ré-écrire dans la bonne arbo ?

Hors ligne

#38 2011-12-08 17:23:37

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Réaliser un configurateur de thème

Je pense que ça devrait suffire, oui :)

Hors ligne

#39 2011-12-08 21:19:48

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

annso a écrit :

Pour ta question #25, tu peux te fier à cette page de documentation, à quelques exceptions près (il me semble que la doc sur "Afficher un message de confirmation lors de l'appui sur le bouton
" n'est pas faisable dans le cadre d'un thème).

Qu'est ce qui t'as paru différent dans le code de Pierre ?

Le code de Pierre serait écrit de cette façon :

class tplMyPrettyThemeStructure
{
	public static function MyPrettyThemeStructure($attr)
	{
	echo '$core->blog->settings->system->theme->MyPrettyThemeStructure_style.';
	}
}

au lieu de :

class tplMyPrettyTheme
{
	public static function MyPrettyThemeStructure($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStyle_style.'; ?>';
	}
}

Hors ligne

#40 2011-12-08 21:26:51

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

J'ai bien tenté d'assimiler cette page de la documentation mais visiblement je reste devant la porte sans avoir trouvé la clé ;)

Il me semble dans mes souvenirs que dans une des aides que m'avait donné amalgame sur ce forum, il avait assemblé le Behavior avec la création d'un tpl.

Quelqu'un pour m'aider/aiguiller en partant du code #26 ?

Hors ligne

#41 2011-12-08 21:50:07

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Réaliser un configurateur de thème

Jean-Michel a écrit :
annso a écrit :

Pour ta question #25, tu peux te fier à cette page de documentation, à quelques exceptions près (il me semble que la doc sur "Afficher un message de confirmation lors de l'appui sur le bouton
" n'est pas faisable dans le cadre d'un thème).

Qu'est ce qui t'as paru différent dans le code de Pierre ?

Le code de Pierre serait écrit de cette façon :

class tplMyPrettyThemeStructure
{
	public static function MyPrettyThemeStructure($attr)
	{
	echo '$core->blog->settings->system->theme->MyPrettyThemeStructure_style.';
	}
}

au lieu de :

class tplMyPrettyTheme
{
	public static function MyPrettyThemeStructure($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStyle_style.'; ?>';
	}
}

Je t'invite à lire le paragraphe  : "Démonstration de l'influence du cache des templates"
http://fr.dotclear.org/documentation/2. … rces/tpl?s[]=cache

Hors ligne

#42 2011-12-09 01:06:02

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Réaliser un configurateur de thème

Bon, c'est pas mon code, j'ai du le piquer dans le code d'un thème ou d'un plugin présent sur le lab et bidouillé à ma sauce. Gardons en tête que je n'y connais rien en php, veux-tu ? Et comme précisé plus haut, code probablement perfectible.

Hors ligne

#43 2011-12-09 08:24:48

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

pierrevg a écrit :

Bon, c'est pas mon code, j'ai du le piquer dans le code d'un thème ou d'un plugin présent sur le lab et bidouillé à ma sauce. Gardons en tête que je n'y connais rien en php, veux-tu ? Et comme précisé plus haut, code probablement perfectible.

Peu importe qui a écrit le code, je parlais du "style". J'aurai pu très bien dire le style d'écriture du code trouvé dans le thème "Ductille". Moi aussi j'y connais rien en code php, je cherche juste à créer un modèle "base" d'un configurateur de thème. En tant que novice, je cherche à savoir quel est la bonne façon d'écrire, s'il en a une (les deux sont peut-être valable).

Hors ligne

#44 2011-12-09 09:36:32

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Réaliser un configurateur de thème

annso a écrit :

Je t'invite à lire le paragraphe  : "Démonstration de l'influence du cache des templates"
http://fr.dotclear.org/documentation/2. … rces/tpl?s[]=cache

J'aurai besoin d'une réponse plus explicite pour "novice" car là, je peux comprendre mais alors pour appliquer… :'(

Hors ligne

#45 2012-03-23 12:10:35

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14

Re : Réaliser un configurateur de thème

Plop,

Je me permets de remonter le sujet :)

@ Jean-Michel, les codes en #26 sont-ils "stables" avec la dernière version de Dotclear ? Est-ce que tu as trouvé une réponse pour ta question en #27 ?


Un grand merci !

Hors ligne

#46 2012-03-23 15:31:44

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Réaliser un configurateur de thème

Pour la question #27, la réponse est oui, il faut créer 2 balises de template dans le fichier _public.php :)

Hors ligne

#47 2012-03-23 15:57:25

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14

Re : Réaliser un configurateur de thème

Comme cela ? (J'ai bien lu les messages après #27, mais le PHP est moi...)

// Création des balises de template {{tpl:MyPrettyThemeStructure}} et {{tpl:MyPrettyThemeStyle}}

$core->tpl->addValue('MyPrettyThemeStructure',array('tplMyPrettyTheme','MyPrettyThemeStructure'));
$core->tpl->addValue('MyPrettyThemeColors',array('tplMyPrettyTheme','MyPrettyThemeColors'));

class tplMyPrettyTheme
{
	public static function MyPrettyThemeStructure($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStructure_style.'; ?>';
	}
}
 
class tplMyPrettyTheme
{
	public static function MyPrettyThemeColors($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStyle_style.'; ?>';
	}
}

Oups ça coince : Uncaught exception 'Exception' with message 'No valid callback for MyPrettyThemeStyle' :-/


Merci :)

Dernière modification par Mathieu M. (2012-03-23 16:15:44)

Hors ligne

#48 2012-03-23 16:47:53

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Réaliser un configurateur de thème

Tu déclares deux fois la classe tplMyPrettyTheme et tu n'as pas appelé la balise par le bon nom :

// Création des balises de template {{tpl:MyPrettyThemeStructure}} et {{tpl:MyPrettyThemeStyle}}

$core->tpl->addValue('MyPrettyThemeStructure',array('tplMyPrettyTheme','MyPrettyThemeStructure'));
$core->tpl->addValue('MyPrettyThemeStyle',array('tplMyPrettyTheme','MyPrettyThemeStyle'));

class tplMyPrettyTheme
{
	public static function MyPrettyThemeStructure($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStructure_style.'; ?>';
	}

	public static function MyPrettyThemeStyle($attr)
	{
		return
		'<?php echo '.$GLOBALS['core']->blog->settings->themes->MyPrettyThemeStyle_style.'; ?>';
	}
}

devrait aller mieux ;)

Hors ligne

#49 2012-03-23 16:54:27

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14

Re : Réaliser un configurateur de thème

L'erreur devient : Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'.

C'est grave ? :p

Hors ligne

#50 2012-03-23 16:59:40

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Réaliser un configurateur de thème

Bah non, j'ai bêtement copié-collé le code que tu donnais au dessus sans vérifier :P

Essaie d'échapper les ' comme ça :

$GLOBALS[\'core\']

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map