Selecteur de theme dans le moteur de PluXml

Rédigé par SWD Aucun commentaire
Classé dans : Codes Mots clés : Thèmes, Code, Webilitaire, Public

Sur le forum et dans l'ancien wiki se trouve un moyen d'adjoindre un outil qui permet a nos internautes de choisir le thème qu'il prèfere et de le conserver lors de ses prochaines visites.

Quelques tubes a essais plus tard voici une solution qui permet de l'adjoindre au moteur de pluXml.

Première étape :

Créer un fichier selectSkin.php dans le dossier où se trouve les plugins (en général plugins)

Placez y le code ci-dessous :

<?php
# Plugin selectSkin pour Pluxml 5
# Réalisé par Skyline (http://skyline-arts.com) 
# puis modifié par Stéphane (stephane@pluxml.org), Florent (florent@pluxml.org) et Thomas sudwebdesign.free.fr
# Distribué sous license Gnu/Gpl
# Dernière mise à jour le 10 Janvier 2019 

# <strong>Documentation</strong>
# 1. Copier ce fichier dans le dossier 'plugins/' (le créer si besoin)
# 2. Insérer le code suivant dans le fichier 'index.php' après la ligne "$plxMotor = plxMotor::getInstance();"
# code à insérer : $plxMotor = plxMotor::getInstance();
# 3. Insérer le code suivant dans le fichier 'sidebar.php' de tous les thèmes à l'endroit où doit s'afficher le sélécteur
# code à insérer : <_?php selectSkin(); ?_> (supprimer les "_") & (supprimer le style de la div : style="position:absolute;display:sticky;top:33rem;right:0;")
# 3. OU pour une <strong>manière automatique</strong>, chercher et modifier <strong>index.php</strong> juste après la ligne "eval($plxMotor->plxPlugins->callHook('ThemeEndBody'));" (hook ThemeEndBody)
# code à remplacer : $output = str_replace('</body>', selectSkin() . ob_get_clean(). '</body>', $output);

if(!empty($_GET['style'])) { # Si le formulaire est soumis
	setcookie('style', $_GET['style'], time()+3600*24*2);
	header('Location: ./');
	exit;
}
# On fait le tableau des thèmes
$thms = plxGlob::getInstance(PLX_ROOT.'themes/',true);
$a_thms = $thms->query('/(.*)/', '', 'alpha');
foreach($a_thms as $k => $v) {
	$all_styles[$v] = $v;
}
if(isset($_COOKIE['style']) && isset($all_styles[$_COOKIE['style']])) {
	$plxMotor->aConf["style"] = $plxMotor->style = $_COOKIE['style'];//baby Fix
}
function selectSkin() {
	global $plxMotor, $all_styles;
	if(isset($_COOKIE['style']))
		$select_style = $_COOKIE['style'];
	else
		$select_style = $plxMotor->style;
	echo '<div id="skinswitcher" style="position:absolute;display:sticky;top:33rem;right:0;">';
	echo '<h2>Changer de thème</h2>';
	echo '<form method="get">';
	plxUtils::printSelect('style', $all_styles, $select_style);
	echo '<input type="submit" value="ok"/>';
	echo '</form>';
	echo '</div>';
}

Note : Comme tous les thèmes sont ainsi choisissable par les visiteurs, prévoir ou créer les fichiers (spécifiques) pour chaques thèmes graphiques du site et leurs évités une erreur d'un fichier de thème inexistant.

Et +user-friendly* : avec les mêmes Crochetages (Hooks) *je propose : visitibilité

Écrire un commentaire

Si vous n’êtes pas un robot, nous vous prions d’accepter nos excuses pour ce désagrément et vous conseillons vivement de regarder en #quatre-vingt-neuf. Si vous avez des difficultés avec ce formulaire, nous restons joignables par téléphone.

Fil RSS des commentaires de cet article