Affecter une couleur à une catégorie

Bonjour,
je suis un nouvel utilisateur -de Plumxl et du forum !- et je voulais savoir comment faire pour avoir une couleur par catégorie (à la manière de plumxl.org).
En regardant le css de plumxl.org j'ai vu qu'on peut passer par des classes et les définir dans le css.
Seulement comment affecter une classe différente pour chaque catégorie sachant que je sais par avance le nombre de catégories)???

Si vous avez une idée je suis preneur...

Merci par avance

Réponses

  • Bonjour,

    La classe active est automatiquement attribué a la rubrique , mais cela ne suffit pas a priori.

    On peut donc tenter d'appliqué une id , en se basant sur l'url vers cette Id , on a en principe une valeur utilisable et unique.

    Je te propose de mettre les mains dans le cambouis pour y injecter cette ID en auto:

    Fichier class.Plx.Show.php :
    remplacer la fonction catlist() ;
    par celle-ci :
    function catList($extra='', $format='#cat_name') {
    
    		# Si on a la variable extra, on affiche un lien vers la page d'accueil (avec $extra comme nom)
    		if($extra != '') {
    			$title = htmlspecialchars($this->plxMotor->aConf['title'],ENT_QUOTES,PLX_CHARSET);
    			if($this->plxMotor->mode == 'home' AND $this->plxMotor->cible == '')
    				echo '<li class="active"><a href="./" title="'.$title.'">'.$extra.'</a></li>';
    			elseif($this->plxMotor->mode == 'article' AND $this->plxMotor->plxRecord_arts->f('categorie') == 'home')
    				echo '<li class="active"><a href="./" title="'.$title.'">'.$extra.'</a></li>';
    			else
    				echo '<li><a href="./" title="'.$title.'">'.$extra.'</a></li>';
    		}
    		# On verifie qu'il y a des categories
    		if($this->plxMotor->aCats) {
    			foreach($this->plxMotor->aCats as $k=>$v) {
    				if($v['articles'] > 0) { # On a des articles
    					$v['name'] = htmlspecialchars($v['name'],ENT_QUOTES,PLX_CHARSET);
    					# On modifie nos motifs
    					$name = str_replace('#cat_id',intval($k),$format);
    					$name = str_replace('#cat_name',$v['name'],$name);
    					$name = str_replace('#art_nb',$v['articles'],$name);
    					# Ok
    					$url = './?categorie'.intval($k).'/'.$v['url'];
    					if($this->plxMotor->mode == 'categorie' AND $this->plxMotor->cible == $k)
    						echo '<li class="active" id="'.$v['url'].'"><a href="'.$url.'" title="'.$v['name'].'">'.$name.'</a></li>';
    					elseif($this->plxMotor->mode == 'article' AND $this->plxMotor->plxRecord_arts->f('categorie') == $k)
    						echo '<li class="active"  id="'.$v['url'].'"><a href="'.$url.'" title="'.$v['name'].'">'.$name.'</a></li>';
    					else
    						echo '<li  id="'.$v['url'].'"><a href="'.$url.'" title="'.$v['name'].'">'.$name.'</a></li>';
    				}
    			} # Fin du while
    		}
    	}
    
    quasi identique a l'originale , exepté pour l'id injecté comme ceci :
    id="'.$v['url'].'
    
    Maintenant que chaque item est doté d'une id , il suffit de la copier et d'editer la feuille de style pour la styler.

    Voila c'est un premier pas , mais qui ne prend pas en compte l'edition automatique de la feuille de style ...

    GC

    P.S. code non tester


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Merci beaucoup !
    Effectivement ça fonctionne très bien pour la version beta 4.1.1.
    Donc je résume les étapes pour les suivants:

    1: modifier la fonction catlist() ; du fichier class.Plx.Show.php comme tu viens de l'écrire

    2: Dans le fichier header.php de son template remplacer la ligne :
    <link rel="stylesheet" type="text/css" href="<?php $plxShow->template(); ?>/style.css" media="screen" />
    
    par la ligne
    <link rel="stylesheet" type="text/css" href="<?php $plxShow->template(); ?>/<?php $plxShow->catId(); ?>.css" media="screen" />
    
    3: Dans son répertoire template créer des fichiers
    0.css (pour la rubrique correspondant à l'accueil)
    1.css (pour la rubrique 1)
    2.css (pour la rubrique 2)
    etc...

    4: Faire un design spécifique par rubrique en modifiant chaque css les uns après les autres

    Et le tour est joué!

    Bravo pour l'efficacité et la rapidité de la réponse !

    Bertrand
Connectez-vous ou Inscrivez-vous pour répondre.