wordpresslogo

WordPress, des filtres et des actions (partie 1)

Il est impossible d’écrire des plugins et/ou des thèmes pour WordPress sans passer par l’utilisation des filtres et des actions. En fait, WordPress utilise énormément les deux, et ne pas comprendre ce que c’est ni à quoi ça sert, et bien c’est mal… Et ce qui est encore plus mal, c’est de ne pas comprendre ce qui les différencie!
La nuance entre un filtre et une action est ténue, et c’est une question qui revient souvent chez les développeurs débutant avec WordPress: Quelle est la différence entre un filtre et une action?
Lire la suite de l’article

php-logo-svg_

PHP – Les différentes manières d’appeler la fonction callback d’usort

Connaissez-vous les différentes manières d’utiliser une fonction callback (ou fonction de rappel en bon français) en paramètre de la fonction usort?

Tout le monde connaît la méthode la plus simple qui consiste à donner en paramètre le nom d’une fonction globale, comme montré dans l’exemple suivant:

function maFonctionCallbackUsort( $a, $b ) {
  return strcmp( $a, $b );
}

usort( $monTableau, 'maFonctionCallbackUsort' );

Un bon petit bout de code qui fait ce qu’on lui demande: il compare deux éléments du tableau et renvoie un résultat indiquant lequel des deux éléments est plus grand que l’autre…

Le problème avec ce morceau de code, c’est qu’on pollue l’espace global de notre application avec une fonction qui ne sera utilisée que pour notre appel à la fonction usort.
Ce serait quand-même bien de pouvoir utiliser notre fonction usort dans une classe par exemple, avec une fonction callback privée qui ne serait pas accessible en dehors de la-dite classe (histoire d’éviter justement cette pollution de l’espace global).
Lire la suite de l’article

Javascript

Recharger le contenu d’un iframe via Javascript

Commençons par situer le contexte:
Un client me demande d’afficher une carte Google (google maps) dans un iframe (c’est le moyen le plus simple d’intégrer une carte google maps dans un site web). Sur la carte, un marqueur indique l’emplacement de l’adresse de son bureau.

Le site de mon client étant adaptif (mon dieu que ce terme est laid! Responsive design, si vous avez une meilleure traduction, je suis preneur), mon cher et bien aimé client aimerait que le marqueur soit toujours situé en plein milieu de la carte, même après qu’il ait modifé les dimensions de son navigateur, ou après qu’il ait alterné le mode paysage/portrait de sa tablette.
Lire la suite de l’article

cake-logo

Ajouter dynamiquement des liens JS et CSS dans la balise head de votre site

Ajouter des liens vers des fichiers JS et/ou CSS dans le layout est quelque chose d’extrêmement facile dans CakePHP:
Par exemple:

// fichier View/Layouts/default.ctp

echo $this->Html->css( array(
   'bootstrap.min',
));

echo $this->Html->script(array(
   'jquery-1.10.2.min',
   'modernizr',
   'bootstrap.min',
));

Ceci aura pour effet d’ajouter les lignes suivantes dans le rendu HTML:

<link rel="stylesheet" type="text/css" href="/3musketeers/Humans-Rights-Report/css/bootstrap.min.css" />
<script type="text/javascript" src="/monsite/js/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="/monsite/js/modernizr.js"></script>
<script type="text/javascript" src="/monsite/js/bootstrap.min.js"></script>

Lire la suite de l’article

cake-logo

Ajouter une méthode TRUNCATE à tous vos modèles CakePHP

La classe AppModel dans CakePHP possède un nombre conséquent de méthodes intéressantes, cependant il y a une méthode qui n’a pas été implémentée et qui pourtant peut se révéler particulièrement utile dans certains cas. Il s’agit de la méthode truncate().

Pourquoi cette méthode n’est-elle pas implémentée? Sans doute car trop dépendante du système de base de données utilisé? Ou alors parce que les développeurs du framework n’y voient tout simplement aucun intérêt… Aucune idée, mais ce n’est pas vraiment ce qui nous intéresse, n’est-ce pas? Au lieu de se focaliser sur le pourquoi, concentrons-nous donc sur le comment
Lire la suite de l’article