À l'origine de ce plugin il y avait Query inside post de k-ny qui permet d'intégrer dans un article une liste d'articles générée automatiquement selon certains critères via une balise ShortCode.
En voulant corriger un bug de ce plugin (si l'on intégrait une liste de messages, les données affichées en bas de l'article, comme le lien vers le flux RSS ou la liste des catégories étaient ceux du dernier article de la liste et non celles de l'article courant) à force de refactoring, j'en suis finalement arrivé à le ré-écrire intégralement ainsi qu'à y ajouter certaines fonctions supplémentaires :
paramètres d'affichages : afficher pour chaque article de la liste l'auteur et/ou la date et/ou le nombre de commentaires.
widgetisation : on peut également intégrer une ou plusieurs listes d'articles à sa sidebar sous la forme d'un widget (le fait de définir un widget pouvant être utilisé plusieurs fois en même temps fut d'ailleurs étonnamment laborieux, du fait du caractère passablement brouillon de l'implémentation de la fonctionnalité dans WordPress et du codage du seul widget de base qui l'utilise et peut donc servir d'exemple : le widget d'affichage d'un flux RSS).
Le plugin final étant entièrement recodé, j'ai finalement décidé d'en faire un plugin distinct que voici : Post-lister v0.1
Cet article est marqué comme contenant des informations dépassées depuis le 21/10/2018.
Cette extension n'existent plus, remplacée par les outils de développement natifs de Firefox.
Quand on a travaillé un peu sur des sites ou applications utilisant des JavaScript volumineux, on se rend compte assez vite que c'est laborieux. Les erreurs sont mal remontées, on n'a pas de stack trace, etc. Firefox est déjà largement au-dessus d'Internet Explorer à ce niveau en fournissant une console d'erreur nettement plus lisible et fonctionnelle, mais ça reste insuffisant sur des scripts complexes et fortement découpés en de nombreuses fonctions élémentaires.
Une solution au problème : JavaScript Debugger, une extension pour Firefox qui, comme son nom l'indique, implémente un débuggeur JavaScript.
Comme sur les débuggeurs disponibles pour les autres langages, on peut donc placer des point d'arrêt (breakpoint) permettant une exécution pas à pas du script, avec à chaque étape la possibilité d'inspecter toutes les variables définies et leurs valeurs. Ça ne résout pas tout, mais ça aide grandement à comprendre ce qui arrive !
Malheureusement, cette extension est encore loin d'être parfaite : elle est assez lourde et ne se ferme pas toujours vraiment lorsqu'on ferme la fenêtre et même en fermant toutes les fenêtres Firefox, il arrive qu'il reste toujours une instance de Firefox qui traine dans les processus en cours et qu'il faut tuer à la main (sous Windows du moins, je ne l'ai pas testé sur un autre système).
Donc ce n'est pas parfait, mais ça a le mérite de combler un gros manque, donc ça mérite le coup d'œil
Sinon, l'extension Firebug est censée fournir une partie de ces fonctionnalités également mais, jusqu'à présent, à chaque fois que j'ai tenté de l'installer, elle m'a causé plus de problèmes qu'autre chose (instabilité du navigateur) donc je n'ai pas approfondi...
iWizz est une sorte de magnétoscope en ligne. Il permet de programmer l'enregistrement puis de télécharger le fichier au format quick time. L'intérêt c'est que l'ordinateur n'a aucunement besoin d'être allumé lors de l'enregistrement. De même, contrairement à la télé via la freebox (ou équivalent), on ne souffre pas des éventuels problèmes de connexion durant la diffusion. L'interface propose de sélectionner ses programmes parmi les chaine hertziennes et la TNT.
À première vue, ça parait tout bon, mais après quelques essais, j'ai constaté quelques défauts :
on est limité à 15h par mois d'enregistrement.
la qualité d'image est moyenne, surtout en plein écran (en même temps la résolution d'une image télé, c'est pas énorme comparé à un écran d'ordinateur, donc rien d'étonnant).
la recherche dans les programmes me semble des plus approximatives : si je fais une recherche avec la catégorie "séries" comme seul critère, je n'obtiens que des épisodes de Arrested development alors qu'une recherche sur le mot-clé Highlander me sort plusieurs épisodes de la série... Donc je ne sais pas trop comment ils se débrouillent mais espérons qu'ils amélioreront ça par la suite.
Je n'ai testé que l'interface Mac, mais apparemment le client est également disponible pour Windows.
Bref, a première vue, ça semble bien sympa si l'on excepte le problème de recherches ^^
Le numéro 2 de Compétence Mac est sorti il y a peu. Pour l'instant, j'ai vaguement survolé l'ensemble et j'ai notamment trouvé la solution à un problème que je n'avais pas encore résolu jusque-là : comment faire pour désactiver ce satané "bong" au démarrage du mac ?
La réponse consiste en un petit outil à installer qui ajoute aux préférences système une section permettant de configurer le niveau sonore du dit "bong", voire de le couper. Et voilà un problème de réglé
Vu qu'on m'a posé certaines questions là-dessus cette semaine, ça va faire le sujet de l'article d'aujourd'hui.
Ajouter une seconde zone de widgets
Depuis la version 2 (il me semble) de WordPress, si le thème est bien fait, on peut depuis le panneau d'administration ajouter des widgets dans certaines zones bien définies. Dans le thème par défaut, il y a une zone unique pouvant accueillir des widgets, qui se trouve dans la barre latérale. Mais on peut vouloir en ajouter d'autres.
Pour ajouter une nouvelle zone, il faut effectuer deux modifications dans le code du thème :
Premièrement, il faut "enregistrer" une nouvelle zone pour que celle-ci soit disponible dans le menu de sélection des zones. Pour cela, il faut en général se rendre dans le fichier functions.php du thème et rechercher où est appelée la fonction register_sidebar (dans le thème par défaut, c'est tout en haut du fichier) et l'appeler une fois de plus pour enregistrer une nouvelle zone.
Cette fonction peut optionnellement prendre en argument un tableau de paramètres permettant de personnaliser le code HTML qui enrobera la liste de widgets. Dans la plupart des cas on n'en a pas besoin mais au cas où c'est bon de savoir que c'est possible, notamment pour éventuellement spécifier une classe particulière à l'une ou l'autre zone en vu d'appliquer des styles différenciés.
Une fois cela fait, la nouvelle zone est disponible dans le menu de sélection des zones du panneau d'administration (cf. la capture d'écran ci-dessus).
Dans un deuxième temps, il faut inclure cette zone dans le rendu de la page à un endroit ou un autre (sinon, forcément, ça sert pas à grand-chose). Pour cela, il suffit d'intégrer le code suivant dans l'un des fichiers de template :
<?php dynamic_sidebar(n); ?> en prenant garde de bien remplacer le paramètre "n" par un entier représentant le numéro de la zone que vous voulez afficher.
Par exemple, si vous venez d'ajouter une zone et qu'il y en avait une seule avant, la nouvelle aura fort logiquement le numéro 2 et le code à insérer sera le suivant : <?php dynamic_sidebar(2); ?>
N'afficher certaines choses que sur la page d'accueil
Afin de ne pas trop surcharger les pages on peut ne vouloir afficher certaines informations et liens que sur la page d'accueil. Par exemple sur ce site, les encarts "Mes autres sites", "News du serveur" et "Divers" ne s'affichent que sur la page d'accueil (et les pages de contenu fixe).
Pour restreindre l'affichage d'une portion de code d'un fichier de template, c'est très simple :
<?php if ( [CONDITION] ) { ?>
[CODE HTML À RESTREINDRE]
<?php } ?>
WordPress propose quelques fonctions PHP qui testent dans quel type de page on se trouve et qui peuvent servir à composer la condition (qui remplacera la portion "[CONDITION]" du code ci-dessus). Ces fonctions sont définies dans le fichier wp-includes/query.php et comprennent notamment :
is_home() disant si l'on se trouve sur la page d'accueil.
is_page() disant si l'on se trouve sur une page de contenu fixe.
is_search() disant si l'on est dans la page de recherche.
is_404() disant si l'on se trouve sur la page d'erreur 404.
etc.
Pour composer la condition, il suffit d'appeler une ou plusieurs de ces fonctions séparées par une double barre verticale (||) qui représente un "ou" en PHP.
Par exemple pour ajouter une zone de widgets qui ne sera affichée que sur la page d'accueil et les page de contenu fixe, on utilisera le code suivant :
<?php if ( is_home() || is_page() ) { // Home and pages only. ?><?php dynamic_sidebar(2); // Home and pages sidebar. ?><?php } ?>
Et ça marche que pour la barre latérale ?
Bien entendu, ces deux "astuces" sont valables aussi bien pour la barre latérale que pour n'importe quelle autre partie de votre site. Mais c'est dans la barre latérale que c'est le plus souvent utilisé.