8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,
je sais qu'il existe pas mal de trucs sur le sujet, mais je n'arrive pas à obtenir la syntaxe correcte, ne connaissant que très mal le PHP.
Je souhaiterais changer mon logo à chaque page de catégorie de mon wordpress. Chacune a une référence : cat=3, cat=1, etc.
Selon cette référence, je souhaite donc changer du css pour adapter le background.

Merci par avance pour votre aide.
Hello,

Pour faire simple, il suffit de surcharger ton style CSS dans une balise <style>…</style>. Par exemple :

<?php
$catCouranteID = get_cat_ID(single_cat_title('', false)); // récupère l'ID de la catégorie courante
if (catCouranteID) {
    echo '<style>.monlogo { background-image: url('.get_bloginfo('template_url').'/images/logo-'.$catCouranteID.'.png); }</style>';
}
?>

Ce qui pour la catégorie 3 te générera le HTML suivant :

<style>.monlogo { background-image: url(http://tonsite.com/wp-content/themes/tontheme/images/logo-3.png); }</style>


Ça suppose donc que dans le dossier "images" de ton thème, tu ait tes fichiers logo identifiés comme tel : logo-1.png, logo-2.png, logo-3.png… pour chaque catégorie.

Voili voilou Smiley smile

PS : j'ai écrit le PHP au kilomètre, si tu as une erreur PHP n'hésite pas à revenir demander des comptes Smiley cligne
Modifié par audrasjb (11 Sep 2014 - 12:51)
Merci beaucoup pour ta réponse.
J'ai mis le code en remplaçant par les bons identifiants dans header.php mais ça ne fonctionne pas.

Je pense que c'est en partie dû au fait que le thème dispose d'une option "logo" à uploader dans ses paramètres... (ou rien à voir ?)
J'ai effectivement trouvé du code qui s'occupe d'afficher le logo par défaut ou celui choisit par nos soins :
        <?php if(get_option($shortname.'_custom_logo_url','') != "") { ?>

          <a href="<?php bloginfo('url'); ?>"><img src="<?php echo stripslashes(stripslashes(get_option($shortname.'_custom_logo_url',''))); ?>" class="logo" /></a>
  <?php } else { ?>

          <a href="<?php bloginfo('url'); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/logo.png" class="logo" /></a>

        <?php } ?>   
Ah bah oui mais au départ tu parles de modifier des règles CSS à l'aide de PHP… alors qu'il s'agit d'un logo intégré en HTML à l'aide d'un élément <img /> Smiley sweatdrop
J'ai pas de boule de cristal pour deviner ça…

a écrit :
J'ai mis le code en remplaçant par les bons identifiants dans header.php mais ça ne fonctionne pas.

Tu as remplacé quels identifiants ? Il n'y a pas d'identifiant : le code PHP d'exemple que je t'ai donné va chercher automatiquement l'identifiant de la catégorie en cours…
Modifié par audrasjb (11 Sep 2014 - 13:39)
Désolé Smiley biggol

J'avais changé .monlogo en .logo tout simplement.
Que suis-je censé faire par conséquent ? Smiley confused
Et bien tu peux par exemple remplacer ça :
<?php if(get_option($shortname.'_custom_logo_url','') != "") { ?>

          <a href="<?php bloginfo('url'); ?>"><img src="<?php echo stripslashes(stripslashes(get_option($shortname.'_custom_logo_url',''))); ?>" class="logo" /></a>
  <?php } else { ?>

          <a href="<?php bloginfo('url'); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/logo.png" class="logo" /></a>

        <?php } ?>   

Par un truc de ce genre (j'insiste, c'est à comprendre et à réadapter), refait avec une balise img à la place d'un style CSS :

<?php
$catCouranteID = get_cat_ID(single_cat_title('', false)); // récupère l'ID de la catégorie courante
if (catCouranteID) { // si on est dans une catégorie
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo-'.$catCouranteID.'.png" class="logo" /></a>';
} else { // si on est pas dans une catégorie, on affiche le fichier image logo.png
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo.png" class="logo" /></a>';
}
?>

Ça nécessite que tes différents logos (en fichiers image, ici en PNG) soient stockés comme précisé dans le répertoire /images dans ton thème et que ceux-ci soient nommés sous la forme logo-ID.png ou "ID" représente l'identifiant de la catégorie correspondante.
Modifié par audrasjb (11 Sep 2014 - 14:24)
Merci beaucoup, je vais essayer ça et je reviens vers toi. Désolé de ne pas avoir donné toutes les indications dès le début Smiley sweatdrop
J'ai beau remuer le truc dans tous les sens, je ne comprends pas le logo initial logo.png n'apparaît pas sur l'accueil, par exemple...
Des idées ?
Re,
Si tu corrige cette ligne de PHP ainsi, ça devrait le faire :

if (!empty(catCouranteID)) { // si on est dans une catégorie

Modifié par audrasjb (11 Sep 2014 - 20:26)
Avec ce code donc :
<?php
$catCouranteID = get_cat_ID(single_cat_title('', false)); // récupère l'ID de la catégorie courante
if (!(empty(catCouranteID))) { // si on est dans une catégorie
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo-'.$catCouranteID.'.png" class="logo" /></a>';
} else { // si on est pas dans une catégorie, on affiche le fichier image logo.png
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo.png" class="logo" /></a>';
}
?>



J'obtiens l'erreur suivante en allant sur le site :
Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in /Applications/MAMP/htdocs/cocks/wp-content/themes/gridthemeresponsive/header.php on line 154
audrasjb a écrit :
Re,
Si tu corrige cette ligne de PHP ainsi, ça devrait le faire :

if (!empty(catCouranteID)) { // si on est dans une catégorie
J'ai honte mais je n'y arrive pas... j'essaie avec de la doc et j'ai essayé toutes les façons possibles, il me retourne sans arrêt une erreur...

<?php
$catCouranteID = get_cat_ID(single_cat_title('', false)); // récupère l'ID de la catégorie courante
if (!empty(catCouranteID)) { // si on est dans une catégorie
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo-'.$catCouranteID.'.png" class="logo" /></a>';
} else { // si on est pas dans une catégorie, on affiche le fichier image logo.png
    echo '<a href="'.get_bloginfo('url').'"><img src="'.get_bloginfo('template_url').'/images/logo.png" class="logo" /></a>';
}
?>

Modifié par MaxenceB (11 Sep 2014 - 20:48)
Quand ça veut pas…
Oubli du $ préfixant la variable PHP dans la même ligne… Smiley rolleyes
if (!empty($catCouranteID)) { // si on est dans une catégorie
Smiley wingol j'aurais dû y penser...
Ça marche... merci infiniment...
Bon par contre si on clique sur un lien dans la catégorie ça disparait... Je vais essayer de trouver cela seul, j'ai trop peur de t'embêter Smiley biggol
S'il s'agit d'avoir le même logo pour les articles logés dans la catégorie correspondante, je te laisse chercher dans le codex WP la fonction in_category(). Avec une structure conditionnelle telle qu'expliqué, tu devrais t'en sortir Smiley smile

Par contre, pense à systématiquement expliquer mieux tes bugs et problèmes, voire à donner un lien vers une page en ligne pour reproduire le souci, il a encore une fois fallu sortir une boule de cristal (et encore, pas sûr que ce soit bien ça ta demande…) Smiley confus
Merci beaucoup pour ta réponse je vais étudier ça demain.
Je fournirais l'effort nécessaire pour mieux me faire comprendre.
J'ai fais un essai :

<?php if ( in_category('Affiches') ) {
echo '<li><a id="menu-item-69" style="background:url(http://localhost:8888/cocks/wp-content/uploads/2014/09/categorie-affiches-B.png) no-repeat center;width:216px;height:120px;"></a></li>';
} else {
echo '<li><a id="menu-item-69" style="background:url(http://localhost:8888/cocks/wp-content/uploads/2014/09/categorie-affiches-A.png) no-repeat center;width:216px;height:120px;"></a></li>';
}
?>


Cependant, l'image "categorie-affiches-B.png" reste constamment active. Comme si le "else" n'était pas là pour rétablir l'image de base le as échéant... Une idée ?
Pages :