Écrit par : Lomart
Catégorie : Trucs et astuces
Clics : 3187
Indicateur local-inline

Dans la série des personnalisations de l'espace de travail de Joomla!

Je ne sais pas comment vous procédez pour l'écriture d'un article délicat ou pour le test d'une extension, mais il m'arrive souvent d'ouvrir en même temps le site en production sur le web et sa version en localhost.

Pour différencier les 2 versions, l'ajout d'un élément graphique comme une ligne rouge au-dessous de la barre de titre me semble une bonne solution. Il fallait que cet ajout soit automatique, car je remplace ma version locale à chaque sauvegarde de la version en ligne.

Plutôt que l'écriture d'un plugin spécifique, j'ai pensé à un module plus général permettant d'ajouter du code HTML, PHP, JS, CSS dans le backend. J'avais déjà créé ce module pour le frontend : LM-EmbedCode. Il me suffisait d'en faire la version administration. Son nouveau nom, LM-CUSTOM, montre qu'il a les mêmes fonctionnalités de base que le mod_custom de Joomla avec en plus la saisie de code PHP et l'insertion de CSS et JS dans le HEAD. Cette solution me permet d'avoir un module actif selon la position à laquelle il est affecté.

Mise en place

La première étape consiste à installer mon module LM-CUSTOM (version admin) ou d'utiliser une solution permettant de saisir du code PHP exécuté en Backend.

La position du module a de l'importance uniquement si vous voulez afficher du texte. Sinon la position "debug", utilisée sur toutes les pages, convient parfaitement.

Ensuite il suffit de saisir en mode code le script ci-dessous en l'adaptant à vos envies :

<?php 
	$arr=array( 'localhost', '127.0.0.1', '0.0.0.1', '::0.0.0.0', '192.168.'); 
	foreach ($arr AS $ip) { 
		$pos=stripos($_SERVER['HTTP_HOST'],$ip); 
		if ($pos !== FALSE) { 
echo '<style>.header{border-bottom:2px solid #D2005C;background-image:url("../images/admin/WampServer-40.png");}</style>';
			BREAK;
		} 
	} 
?>
Indicateur local-inline
Ci-dessous l'image utilisée pour l'exemple

Clic-droit pour la télécharger.

Personnellement, je préfère une version plus discrète avec uniquement un filet rouge.

<?php 
	$arr=array('localhost', '127.0.0.1', '0.0.0.1', '::0.0.0.0', '192.168.'); 
	foreach ($arr AS $ip) { 
		$pos=stripos($_SERVER['HTTP_HOST'],$ip); 
		if ($pos !== FALSE) { 
			echo '<style>.header{border-bottom:4px solid red;}</style>';
			BREAK;
		} 
	} 
?>
Indicateur local-inline

Dans ce dernier exemple, j'ai surligné les parties du code que vous pourriez être amené à modifier

  1. la liste des en-têtes possibles fournie par $_SERVER['HTTP_HOST']. J'ai mis les réponses les plus usuelles, mais vous pouvez ajouter votre cas.
  2. la règle CSS pour mettre en évidence le fait d'être en local. Toutes les fantaisies sont permises

Print Friendly and PDF