web-dev-qa-db-fra.com

Différents widgets sur différents modèles de page?

Si j'ai deux modèles de page différents, comment puis-je afficher une collection différente de widgets de la barre latérale pour chacun de ces modèles? J'utilise le thème Starkers comme point de départ.

4
cannyboy

Vous devrez créer davantage de barres latérales dans votre fichier functions.php, puis modifier les modèles de page pour appeler la barre latérale souhaitée.

Ajout de barres latérales

Accédez à votre fichier functions.php. Vous devriez voir des barres latérales déjà enregistrées. Le code ressemblera à ceci:

//Adds default sidebar
 if ( function_exists('register_sidebar') )
 register_sidebar();

Pour ajouter une autre barre latérale, ajoutez le code suivant autant de fois que nécessaire après l'enregistrement de la barre latérale existante.

//Registers new sidebar
if ( function_exists('register_sidebar') ) {
    register_sidebar(array('name' => 'Name Sidebar Here','before_widget' => '','after_widget' => '','before_title' => '<h2 class="widgettitle">','after_title' => '</h2>'));    
} 

Où il est écrit 'Name Sidebar Here', attribuez un nom logique à cette nouvelle barre latérale. Le reste du tableau vous permet de mettre HTML avant le widget (before_widget) si votre thème le requiert pour sa conception et de placer HTML après le widget (after_widget). En outre, le plus souvent utilisé dans les thèmes est un style personnalisé pour les titres de widgets. Vous pouvez mettre ce code HTML avant le titre (before_title) et après le titre (after_title). Dans l'exemple ci-dessus, <h2 class="widgettitle"> sera placé dans chaque titre de widget, après celui-ci, pour fermer la balise d'ouverture.

Ajoutez votre nouvelle barre latérale à vos modèles de page

Maintenant que vous avez ajouté une barre latérale, vous devez l'insérer à l'endroit souhaité dans le modèle de page. Recherchez l'emplacement de la barre latérale par défaut à l'intérieur de votre modèle (généralement) et remplacez-le par le texte suivant, où le numéro correspond à l'ordre dans lequel la barre latérale a été ajoutée dans le fichier functions.php.

<?phpif ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(Sidebar number here) ) : ?><?php endif; ?>

Cette barre latérale était la deuxième ajoutée dans le fichier functions.php. Par conséquent, pour l'appeler dans le modèle de page, vous mettrez 2 à l'intérieur de !dynamic_sidebar(Put sidebar number here) ).

Ajouter des widgets

Une fois que vous l'avez ajouté au modèle de page, ajoutez simplement des widgets à la barre latérale de votre page d'administration Apparence -> Widgets. La nouvelle barre latérale y apparaîtra avec le nom que vous lui avez donné dans le fichier functions.php.

J'espère que cela t'aides!

8
Joshua Lynch

Et Widget Logic est également une option.

3
ZaMoose
  1. Widget Logic est une solution - une bonne aussi.

  2. Plusieurs barres latérales est la solution la plus robuste car vous pouvez entièrement personnaliser tout le balisage avant/après _widget dans functions.php. Sans oublier que vous pouvez créer n'importe quel nombre de ces barres latérales.

  3. Une solution plus légère pourrait simplement consister à utiliser la classe body pour distinguer les types de pages sur le css. Cachez ce que vous ne voulez pas, affichez ce que vous faites. C'est un moyen simple et rapide pour que ce genre de chose se produise.

1
eddiemoya

Une autre solution est Display-Widgets plugin, il ajoute un menu déroulant dans chaque widget que vous avez activé dans votre sidebar/s, dans lequel vous pouvez sélectionner les pages/publications à afficher ou à masquer.

1
Philip

deux autres options: 1. au lieu de rendre "sidebar.php" plus compliqué, ajoutez les nouvelles barres latérales widgetisées à un nouveau fichier de barre latérale "sidebar-xxx.php", puis utilisez le modèle de page

  1. vous pouvez utiliser contextual-widgets plugin
0
hannit cohen