Bonjour,
Oui Manu a mis au point une api pour la gestion de flexicontent dans les modules depuis la beta 5 si je ne dis pas de connerie.
On doit d'abord initialiser le plugin de routage et les classes qui gères les champs dans le fichier mod_mondule.php comme cela :
Code:
require_once (JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'helpers'.DS.'route.php');
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 dans notre helper du module, on va imaginer que l'on a une fonction getItems qui récupère notre contenu. La requête ci-dessous est un exemple :
Code:
function getItems ()
{
$query = 'ma requête sql';
$db->setQuery($query, 0, $count);
$rows = $db->loadObjectList();
}
Et là juste après notre $db->loadObjectList(), on insère cette petite ligne de code :
Code:
$rows = FlexicontentFields::getFields ($rows, 'module');
Cela nous permet de récupérer les champs personnalisés de Flexicontent.
Ensuite on prépare nos données pour les transmettre à notre vue, toujours dans notre fonction getItems () comme ci-dessous :
Code:
$i=0;
$lists = array();
if (is_array($rows) && count($rows)>0) {
foreach ( $rows as $row )
{
$lists[$i]->id = $row->id;
$lists[$i]->created = $row->created;
//champ personnalisé de flexicontent
$lists[$i]->image = $row->fields['nom_de_mon_champ']->display;
//lien qui point vers flexicontent
$lists[$i]->link = JRoute::_(FlexicontentHelperRoute::getItemRoute($row->slug, $row->catslug));
$i++;
}
}
return $lists;
Ensuite dans notre vue, on récupère les données de ci-dessus :
Code:
<?php foreach ($list as $item): ?>
<?php echo $item->image; ?>
<?php endforeach; ?>
Je pourrais vous attacher un exemple réel d'un module existant sous Joomla si mon explication barbare ne vous convient pas.
Je tenais à féliciter Manu pour son superbe travail !