Pods, CMS, framework, WordPress – Créer des pages sur-mesure avec WordPress


Voilà peut-être ce que tout bon développeur rêve de trouver au détour du web afin de pouvoir préconiser WordPress comme CMS plutôt que Drupal par exemple. Le développement de ce framework CMS nommé PODS relance le match Drupal vs WordPress, en effet WP acquiert avec l’installation de ce framework des capacités qui viennent concurrencer Drupal sur son propre terrain.

La finalité de ce développement semble bien de hisser WP au niveau d’un CMS. On peut considérer que WP n’est déjà plus un simple d’outil de Blog alors l’installation de ce framework CMS nommé PODS à la croisée du CMS et du framework renforce encore cette tendance en introduisant l’esprit du développement MVC et cette notion de service si utile sous Drupal.

A titre de comparaison, un petit rappel sur la philosophie de cette approche sous Drupal. Pour accentuer le parallèle avec Drupal, nous allons réutiliser notamment le même type de contenu à savoir gérer et afficher un carnet d’adresse.
Drupal – Créer un service sur mesure dans Drupal

Un grand merci à Gaspard King pour nous avoir mis sur le piste de ce magnifique « pod… of white whales » comme pourrait dire le capitaine Achab. Pour information, social.hecube.net vient de créer un groupe consacré à WordPress et son écosystème dénommé L’univers Worpdress

Note : Les essais ont été effectués sur deux version de WP: WordPress 2.7 FR et WordPress 2.8.5 FR. Les pré-requis du serveur sont les suivants :

  • PHP 5.2 et +
  • MySQL 4 et +
  • Le mod_rewrite Apache doit être activé et le serveur doit être en mesure de lire la configuration locale du .htaccess ( Cf configuration des permaliens )
  • Le répertoire wp-content/plugins/pods doit être être autorisé à la lecture.

Source : http://pods.uproot.us/codex/server_requirements

We got the PODwer !

Le petit texte de présentation de la philosophie de PODS ne laisse aucun doute sur la finalité des PODS.

Pods is a CMS framework for WordPress. It’s a plugin that sits on top of WordPress, allowing you to add and display your own content types. These content types, or « pods », are totally separate from Posts, Pages, or Custom Fields. The Pods plugin uses its own database structure for maximum efficiency, and for relationships among items.

L’élément pods s’installe comme un simple plugin sous WP
Il s’agit de mettre l’intégralité des fichiers dans un répertoire nommé pods
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Les indications d’installation des pods

Voici pour information les instructions données pour installer l’élément Pods sur votre site. Au-delà de la simple lecture, que faut-il retenir ?

  1. Un des pré-requis, c’est une disposition qui se fixe dans Réglages > Permaliens, il faut ajouter /%postname%/ Cela peut être un inconvénient sérieux si par exemple pour des raisons de SEO, vous avez travaillé sur la valeur slug de WP, c’est la structure des permaliens afin d’avoir notamment les URL les plus explicites possibles.
  2. Le plugin s’installe et s’active comme les autres plugins WP
  3. Une recommandation, il existe potentiellement des incompatibilités avec d’autres plugins activés sur votre site notamment depuis le backend.

1. Le paramètre des permaliens

Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

2. Activation des pods

Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

3. Conflit avec d’autres plugins

Il peut y avoir des erreurs de fonctionnement liées à des conflits avec d’autres plugins, notamment ceux de construction de formulaire ou de questionnaire de sondage. Dans notre exemple, l’erreur s’est produite avec WP-survey et les forums disponibles sur le site de pods.uproot.us en font état. Ainsi, pas de panique si cela ne fonctionne pas, c’est probablement un conflit avec d’autres plugins. C’est un handicap sérieux à l’adoption des pods dans la mesure où vous pouvez être amené(e) à désactiver un ou plusieurs plugins pour faire fonctionner les pods..

message d’erreur javascript
the form has expired

Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Outre les éventuels conflits, vous devez aussi résoudre potentiellement des problèmes d’affichage au sein de votre thème WP.

Pod Cassé ou les ratés d’affichage dans votre thème WP

Dans la plupart des thèmes que nous avons essayé, l’affichage des pods est loin d’être ergonomique. Le contenu des pods va s’afficher directement dans mes balises principales qui gèrent le contenu. Dans tous les cas, une passe CSS s’impose et le « styling » peut vite devenir complexe.

Les balises du thème WP dans lesquelles s’affichent le contenu des pods

<div id="content" >...</div>
<div id="page" >...</div>

Dans le thème par défaut
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Pour information, les recommandations d’installation du Framework Pods

Manual Install

1. Download the latest version of the plugin
2. Upload and unzip the contents of the “pods” folder to your site’s wp-content/plugins/ directory
3. Log into your site’s WordPress Admin section
4. Go to Plugins → Installed and activate the “Pods CMS” plugin

Automatic Install

1. Log into your site’s WordPress Admin section
2. Go to Plugins → Add New and enter a search for “Pods”
3. Click the “Install” link in the right-hand column of the “Pods CMS” listing
4. Click the orange “Install” button
5. Click “Activate” once WordPress has finished downloading and installing the plugin

Final Steps

1. FTP to your site’s wp-content/plugins/pods directory
2. Rename Pods’ “htaccess.txt” file to ”.htaccess”
3. If you do not already have another copy of this file, move .htaccess to the root directory of your WordPress installation
4. Log into your site’s WordPress Admin section
5. In Settings → Permalinks, set a Custom Structure of /%postname%/ or an equivalent

Gérer du contenu à l’aide des pods

Une fois, l’installation terminée, on va pouvoir créer à l’aide du pods un type de contenu auquel sera associé une « vue ». On retrouve donc les prémices des concepts très similaires aux frameworks MVC les plus aboutis ou dans certain CMS dont nous sommes faits l’echo dans ce blog.

Finalement, les Pods vous laissent la possibilité d’insérer un contenu spécifique dans votre site. Vous pourriez ainsi « encapsuler » dans WP : un carnet d’adresse, des fiches de films, des recettes de cuisine… Charge à vous ensuite de créer les « vues » afin d’afficher votre contenu en frontend.

Nous allons suivre pas à pas l’exemple donné dans la vidéo d’explication donnée sur le site (http://vimeo.com/6957771). On va créer les éléments de base de ce qui pourraient être un carnet d’adresses. L’installation du Framework Pods à votre WP va vous permettre d’ajouter du code php à l’intérieur de vos pages. Le code php inséré est assez rudimentaire, on peut donc facilement se l’approprier même si on débute.

Création du pod personne et de son contenu

On crée un pod nommé personne
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

On insère du contenu que l’on affecte à ce pod nommé personne
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

En cas d’erreur, vous pouvez vous séparer de votre pod ! Comme dans la vraie vie…
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Création des vues pour ce pod

Dans l’exemple qui suit, une fois le contenu inséré, il faut pouvoir voir ce contenu. C’est à ce moment que vous allez créer des « vues » de ce contenu via ce que pods nomment des pages. Dans l’exemple, logiquement plusieurs person ou personne forment un people, le nom de la page est donc tout trouvée people*.

Tant que cette page n’existe pas, il n’y aura rien à voir
Une erreur 404 s’affichera dès vous tacherez de vous rendre à cette adresse http://mon-nom-de-domaine/mon-wordpress/people.

Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Création de la page people
Pods, CMS, framework, WordPress. - Créer des pages sur-mesure avec WordPress

Code à insérer dans la page people
Ce code vous permet d’afficher le contenu déclaré comme person à hauteur de 10 enregistrement par ordre ascendant par rapport au nom. Il ne reste plus qu’à appeler ensuite le template (la vue) nommé person_listing.

	<?php 
 
 
	$Record = new Pod ('person');
	$Record ->findRecords ('name ASC', 10);
	echo $Record->showTemplate('person_listing');
 
 
?>

Création du template
Ce "pod template" est en fait un vue qui peut contenir du html, du javascript ou du pseudo code connu sous le nom de "magic tag", une sorte là encore de smarty. Il va servir à visualiser le contenu de la page people.

Le code du template person_listing
La valeur {@detail_url} est à placer dans le code de votre vue ou "pod template". Par ailleurs, dans l’édition du Pod person, vous allez compléter la champs Detail page

 
	<p><a href="{@detail_url}">{@name}</a></p>

Code à insérer dans la page people/*
Toutes les personnes accessibles depuis people sont disponibles via la page person_detai. Cette page a pour fonction de vous faire visualiser la fiche de chaque personne enregistrée dans le pod person visible dans la template person_listing.

	<?php
				$slug = pods_url_variable ('last');
				/* var_dump ($slug); */
		              $Record = new Pod ('person', $slug);
						echo $Record->showTemplate('person_detail');
			?>

Code à insérer dans le template person_detail
Dans « Pods templates », il vous faudra créer une vue pour les données que vous venez d’insérer c’est à dire l’ensemble des personnes contenus dans cet sorte de carnet d’adresse.

 
	<h3>{@name}</h3>
	<p>Date added : {@date_added}</p>
	<p>Slug : {@slug}</p>

Conclusion : Les pods étendent les possibilités de WP dans ses capacités à ingérer et à afficher du contenu qui sort des canons traditionnels du CMS: pages, articles, liens. On peut notre 3 inconvénients :

  • Son adoption nécessite quelques connaissance php
  • Sa mise en place peut provoquer des conflits avec d’autres plugins. Le dilemme sera parfois entre désactiver certains plugins pour adopter les pods ou conserver les plugins et bazarder les pods. Choix cornélien.
  • Le pod nécessite une structure de permalien qui peut être incompatible avec des recommandations SEO. C’est un inconvénient de moindre importance car la structure de permalien retenu pour le pod reste quand même native à WP et conserve l’avantage des URL explicites.

Au-de-là des ces quelques inconvénients, ce type de framework adossé à WP va se généraliser. Ces légers désavantages sont à mettre sur le compte de la relative jeunesse, le projet a été lancé en automne 2008, soit pas plus d’un an. Les améliorations futures apportées au code peuvent être spectaculaires et faire basculer définitivement WP dans la cour des CMS type Drupal et alors là…

Pour aller plus loin

  • Le lien vers la vidéo dont cet article est largement inspiré. Pods CMS – The Basics
    http://vimeo.com/6957771
  • Pods CMS
    Pods is a CMS framework that lets you create, manage, and display your own content types. Don’t bother hacking blog posts into becoming something they’re not. With Pods, create entirely new data structures with only the fields you need. Like Drupal CCK, you can set up relationships, allowing for a whole new level of interconnectedness.
    http://pods.uproot.us/
  • La page « A propos »
    http://pods.uproot.us/about
  • Pods UI
    This plugin allows you to develop plugins that look like WP using the Pods framework – requires Pods CMS plugin. Pods is a CMS (Content Management System) framework for WordPress.
    http://pods.uproot.us/about

* Dans chaque tutoriel made in USA, on retrouve soit « Hello world » soit cette référence constante à « person & people ». On peut toujours voir une référence à (« We, the people… »). We, the People sont les premiers mots du préambule de la Constitution des États-Unis d’Amérique (We, the People of the United States, en français, Nous, Peuple des États-Unis).
Source :http://fr.wikipedia.org/wiki/We_the_People