CCC, Réussissez sur Internet

Le temps de la réflexion est une économie de temps. Publius Syrus

Accueil Communauté Adapter un module à Flexicontent


Adapter un module à Flexicontent

Mercredi, 17 Mars 2010 par M@tthieu

flexicontentLa version Stable deFlexicontent vient de sortir. Emmanuel Danan et la team de Flexicontent ont réalisé un boulot titanesque et le résultat est à la hauteur de toutes attentes ! Flexicontent est sans aucun doute le composant de cette année 2010 pour le CMS Joomla.

Nous allons à travers cet article regarder comment implanter Flexicontent dans un module. Pour ce tutorial, j'ai repris le module "most read" qui est incorporé par défaut dans Joomla, le but va être de bien router les articles vers Flexicontent.  Ce tutorial est  destiné au développeur, néanmoins les utilisateurs pourront télécharger le module gratuitement.

Afin de ne pas écraser le module "most read", j'ai créé un nouveau module qui se nomme mod_fleximostread.

module Télécharger le module pour Joomla 1.5 (français et anglais)
Maj : vous pouvez télécharger le module Easy Flexi Module dans la section Communauté

Le fichier mod_fleximostread.xml a été modifié pour permettre l'installation du module. Je ne vais pas rentrer dans les détails, vous pouvez voir un tutorial qui traite de ce sujet dans la documentation de Joomla.

On va ouvrir le fichier mod_fleximostread.php et on va ajouter le helper de Flexicontent qui va permettre de router les articles  :

require_once (JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'helpers'.DS.'route.php');

Toujours dans le même fichier, on va modifier le layout de notre nouveau module :

require(JModuleHelper::getLayoutPath('mod_fleximostread'));

On va ensuite ouvrir le fichier helper.php et on va modifier la valeur "link" pour router correctement les articles vers Flexicontent :

require($lists[$i]->link = JRoute::_(FlexicontentHelperRoute::getItemRoute($row->slug, $row->catslug));

On peut observer que la fonction getItemRoute ne prend pas en compte l'id de la section contrairement à getArticleRoute... normal, Flexicontent est beaucoup plus souple dans la gestion des catégories, il ne se limite pas à une section/catégorie.

Et voilà, notre module a été réadapté pour utiliser Flexicontent. On peut réitérer l'opération pour d'autres modules qui utilisent le contenu de Joomla.

L'adaptation est relativement simple, on peut aussi afficher les champs spécifiques de Flexicontent (non ajouté dans le module à télécharger), pour cela, il faut ouvrir le fichier mod_fleximostread.php et ajouter après la ligne require_once (JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'helpers'.DS.'route.php'); le code suivant :

require_once (JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'classes'.DS.'flexicontent.helper.php');
require_once (JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'classes'.DS.'flexicontent.fields.php');

Ensuite, on édite le fichier helper.php et on rajoute le code ci-dessous juste après $rows = $db->loadObjectList(); :

$rows = FlexicontentFields::getFields ($rows, 'module');

Toujours dans le fichier helper.php, on va ajouter dans notre tableau $lists une variable myfield avec comme valeur notre champ qui se nomme myfieldname (ne cherchez pas l'originalité !)

$lists[$i]->myfield =$row->fields['myfieldname']->display;

Et ensuite dans notre vue, on récupère notre variable myfield, simple non ?

 

Vous devez définir un lien qui pointe vers une catégorie de Flexicontent dans votre menu pour que le routage puisse fonctionner et éviter tous les messages d'erreurs

communauté | flexicontent | joomla | module | tutorial

Commentaires  

 
0 #3 Matthieu CCC 19-12-2010 16:14
Bonjour Cfrederic,

Vous avez installé quel module Easy Flexi Module 2 ou le module mod_fleximostre ad ?

Cordialement,

Matthieu
Citer
 
 
0 #2 Cfrederic 19-12-2010 15:04
Bonjour,

J'ai installé le module, mais en l'activant, j'obtiens une page blanche du côté front-end. De quoi cela vient-il ?

En vous remerciant par avance,

Cfrederic
Citer
 
 
+6 #1 Emmanuel Danan 18-03-2010 09:16
Merci pour cette contribution. En effet c'est pas plus compliqué que ça ;)
Pour pousser un petit peu le niveau d'intégration on peu aussi adapter la requete pour qu'elle prenne en charge le multi-catégorie ;)
Citer
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Tags