- Statut : non résolu
- Ce sujet contient 31 réponses, 4 participants et a été mis à jour pour la dernière fois par
natchoum, le il y a 12 années et 3 mois.
-
AuteurMessages
-
10 août 2011 à 13 h 32 min #498423
Ma configuration WP actuelle
– Version de WordPress : 3.2.1
– Version de PHP/MySQL : 5
– Thème utilisé : graphène ( mais je le modifie à l’éditeur de texte ^^ )
– Extensions en place : easing slider, menu bar, meteor slide et XML google map
– Nom de l’hebergeur : personnel ( la société qui me fait faire le site ^^ )
– Adresse du site : revenu en localbonjour à tous, je me pose une petite question depuis que j’ai essayé de faire un menu qui change en fonction de la page sur lequel on se trouve. Grâce à un peu d’aide, celà fonctionne. Cependant, je voulais savoir s’il était possible de soumettre l’affichage de mon widget texte ( celui qui contient le menu ) pour que le widget ne s’affiche pas s’il n’y a pas d’utilité ( dans mon cas, si la page ne possède pas de sous-page ).
Je vois comment je pourrai faire en tripotant sidebar.php mais vu que mon menu passe par un widget, ça m’arrangerai de le faire comme ça, sinon il va falloir repenser ce menu !!!10 août 2011 à 14 h 10 min #787060L’article http://codex.wordpress.org/fr:Marqueurs_conditionnels donne un truc pour savoir si une page a des sous pages
Tu peux l’utiliser
10 août 2011 à 14 h 15 min #787059merci, je vais lire celà ( je n’avais pas trouvé cet article, j’ai lu tout ceux qui traite des list_page etc… )
je reviendrai ici si j’ai à nouveau un problème11 août 2011 à 8 h 13 min #787057J’ai lu l’article en entier et je pense en avoir saisi une bonne partie malgré ma maitrise moyenne de l’anglais :boulet: Evidemment j’ai toujours un problème ( ce serai trop beau sinon ^^ ) : Je suis un peu perdu sur certaines des pages générées par wp et sidebar.php en fait partit.
Mon soucis est que je n’arrive pas à interragir avec cette fonction : dynamic_sidebar(‘sidebar-widget-area’);
En effet, j’en ai besoin pour afficher l’un de mes widget ( un diaporama ) qui doit rester afficher tout le temps.
C’est le widget situé au dessus que je cherche à faire précéder d’un test pour savoir s’il est nécessaire ou non.
Après quelques recherches, j’ai trouvé la fonction du même nom dont voici le code :function graphene_widgets_init() {
if (function_exists(‘register_sidebar’)) {
global $graphene_settings;
register_sidebar(array(
‘name’ => __(‘Sidebar Widget Area’, ‘graphene’),
‘id’ => ‘sidebar-widget-area’,
‘description’ => __( ‘The first sidebar widget area (available in two and three column layouts).’, ‘graphene’ ),
‘before_widget’ => ‘<div id="%1$s" class="sidebar-wrap clearfix %2$s">‘,
‘after_widget’ => ‘</div>‘,
‘before_title’ => « <h3>« ,
‘after_title’ => « </h3>« ,
));Je vois bien quelque chose avant et apres le widget mais je serai bien en peine de mettre une condition dans une chaine de caractère :S
voici le code de ma sidebar.php au cas où
<div id="sidebar1" class="sidebar">
<?php /* Author information is disabled per default. Uncomment and fill in your details if you want to use it.
<h3>About the author</h3>
<p>A little something about you, the author. Nothing lengthy, just an overview.</p>
</li>
*/ ?>
<div class="sidebar-wrap clearfix">
<h3></h3>
<ul>
</ul>
</div>
<div class="sidebar-wrap clearfix">
<h3></h3>
<ul>
<li></li>
<li class="rss"><a href=" »></a></li>
<li class="rss"><a href=" »></a></li>
<li><?php printf(__('Powered by %s','graphene'), '<a href="http://www.wordpress.org" title="'.esc_attr__('Powered by WordPress, state-of-the-art semantic personal publishing platform.', 'graphene').'">WordPress</a>‘); ?></li>
</ul>
</div>
</div><!-- #sidebar1 -->En gros grâce à Lumière de Lune je sais comment faire ma condition mais je n’arrive pas à comprendre vers où je dois la créer.
Merci à ceux qui prendront le temps de lire ce post géant ^^11 août 2011 à 9 h 01 min #787062ton problème ne se trouve pas dans l’affichage de la sidebar, mais dans l’affichage du widget. Etant donné tous les traitement que tu veux faire, il me semble que créer un autre widget text te permettrait de controler tout le processus.
C’est assez simple à faire, j’ai repris le code du widget text, ai changé la classe. Tu peux soit inclure directement ce code dans ton fichier functions.php soit en faire un plugin.
L’affichage se fait dans la fonction widget, le test doit être inséré ici.
‘my_widget_text’, ‘description’ => __(‘mon widget text ou HTML’));
$control_ops = array(‘width’ => 400, ‘height’ => 350);
parent::__construct(‘text’, __(‘Text’), $widget_ops, $control_ops);
}
function widget( $args, $instance ) {
extract($args);
// ici tu met ton test
if ($rien_a_afficher)
return;
$title = apply_filters( ‘widget_title’, empty($instance[‘title’]) ? » : $instance[‘title’], $instance, $this->id_base);
$text = apply_filters( ‘widget_text’, $instance[‘text’], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="textwidget"></div>
», ‘text’ => » ) );
$title = strip_tags($instance[‘title’]);
$text = esc_textarea($instance[‘text’]);
?>
<p><label for="get_field_id(‘title’); ?> »></label>
<input class="widefat" id="get_field_id(‘title’); ?> » name= »get_field_name(‘title’); ?> » type= »text » value= » » /></p>
<textarea class="widefat" rows="16" cols="20" id="get_field_id(‘text’); ?> » name= »get_field_name(‘text’); ?> »></textarea>
<p><input id="get_field_id(‘filter’); ?> » name= »get_field_name(‘filter’); ?> » type= »checkbox » /> <label for="get_field_id(‘filter’); ?> »></label></p>11 août 2011 à 9 h 11 min #787061très grand merci à vous deux. J’imagine que faire un plugin me prendra un peu plus de temps ( surtout qu’il faut que je me documente sur le sujet pour savoir comment faire ) mais ce sera surement plus configurable.
Mais comme j’ai peur des temps de latences élevés, je me demande est ce que créer mon propre plugin et l’ajouter au 5 que j’utilise déjà ne risque pas de ralentir mon site ?11 août 2011 à 9 h 17 min #787058cela ne sera pas plus configurable mais aura l’avantage de ne pas dépendre du thème.
Je n’ai aucune idée de la différence en terme de temps d’exécution entre inclure dans un plugin ou dans les fichiers du thème, à mon avis la différence est négligeable mais cela ne repose sur aucun test objectif.11 août 2011 à 9 h 33 min #787063okok, je pense que je vais le faire sans plugin au travail et tenter de refaire ça pour mon trip perso chez moi, et qui sait, si ça fonctionne pourquoi ne pas le remettre au travail xD
En tout cas remerci à tous les deux je test cela tout de suite11 août 2011 à 10 h 30 min #787064En fin de compte une petite question supplémentaire : j’ai testé ce que tu m’a expliqué et j’ai donc rajouté le code que tu m’as passé ( avec la définition de la nouvelle classe text widget ) dans functions.php j’ai rajouté mon test fait grâce aux explications de Lumière de Lune cependant un problème persiste. Le text widget que j’ai créé par l’interface graphique de wordpress utilise, j’imagine, la classe Widget_Text qui est dans default-widget.php. Cependant, où puis je dire à wordpress que ce widget text doit dépendre de la classe My_Widget_Text et non pas de Widget_Text ? désolé de poser autant de question alors que tu as déjà fait tout le boulot mais j’ai beau chercher, je coince.
11 août 2011 à 10 h 35 min #787065euh… je ne comprends pas, cela devrait te rajouter un nouveau widget dans le menu widget et tu le met dans ta sidebar, tu as essayé?
Si ça ne marche pas, dis le moi, je regarderai, j’ai peut-être fait une erreur
11 août 2011 à 10 h 49 min #787066j’ai regardé, je n’ai qu’un seul type de widget text, le même que d’habitude. je vais chercher de mon coté quand même
EDIT : j’ai compris déjà ce que je devrais avoir ^^ normalement si ça fonctionne j’aurai un widget nommé « mon widget text ou html » cependant il ne le reconnais pas.11 août 2011 à 12 h 05 min #787067ah! oui j’ai re regardé, je m’étais mélangé les noms de classes, j’ai rajouté aussi le register_widgets, je ne sais pas si tu l’avais mis
‘My_Widget_Text’, ‘description’ => __(‘mon widget text ou HTML’));
$control_ops = array(‘width’ => 400, ‘height’ => 350);
parent::__construct(‘My_Widget_Text’, __(‘Mon Text’), $widget_ops, $control_ops);
}
function widget( $args, $instance ) {
extract($args);
// ici tu met ton test
if ($rien_a_afficher)
return;
$title = apply_filters( ‘widget_title’, empty($instance[‘title’]) ? » : $instance[‘title’], $instance, $this->id_base);
$text = apply_filters( ‘widget_text’, $instance[‘text’], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="textwidget"></div>
», ‘text’ => » ) );
$title = strip_tags($instance[‘title’]);
$text = esc_textarea($instance[‘text’]);
?>
<p><label for="get_field_id(‘title’); ?> »></label>
<input class="widefat" id="get_field_id(‘title’); ?> » name= »get_field_name(‘title’); ?> » type= »text » value= » » /></p>
<textarea class="widefat" rows="16" cols="20" id="get_field_id(‘text’); ?> » name= »get_field_name(‘text’); ?> »></textarea>
<p><input id="get_field_id(‘filter’); ?> » name= »get_field_name(‘filter’); ?> » type= »checkbox » /> <label for="get_field_id(‘filter’); ?> »></label></p>11 août 2011 à 12 h 26 min #787068Ouaaaaa ça marche nikel, je suis juste débile
j’avais vu le problème des noms des classes, j’avais réarrangé ça mais j’avasi zappé le register widget. En tout cas grand merci, 2 jours que je galère sur ce truc, ça fait plaisir quand avec de l’aide on y arrive ^^
Problème résolu11 août 2011 à 12 h 33 min #787069🙂 ouf!!!!
11 août 2011 à 13 h 10 min #787070oui en meme temps widget logic gere cela il me semble bien… avec juste la condition a marquer dans la tite case…
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.