Boomtchak
Accueil du site > CMS Outils > CMS BoomSélection I > PhpNuke & dérivés > PostNuke > Blocs > Comment concevoir les blocs ? (jusqu’aux versions 0.70x)

Comment concevoir les blocs ? (jusqu’aux versions 0.70x)

vendredi 12 juillet 2002

Construction de blocs

Ce petit tutorial est destiné aux développeurs de plugins pour PostNuke. Il est censé les aider à comprendre comment une fonction bloc pour PostNuke et la faire reconnaitre par le systeme.

Prerequis

Je vais partir du principe que vous comprenez le PHP et les requetes SQL. Ce tutorial est destiné aux fous qui ont compris ces bases et qui ont déjà écrit des scripts ou des blocs dans le passe. Je ne vais pas m’etendre sur " pourquoi un bloc ? " mais plutot sur " Comment ajouter un bloc et le faire reconnaitre par le systeme ? "

Dans ce tutorial, je vais utiliser un exemple qui a été écrit par un utilisateur francais de Nuke. Le bloc que nous allons essayer de réaliser va nous permettre d’afficher des statistiques personnalisées comme " l’histoire la plus lue" sous forme de Bloc.

Structure minimale d’un Bloc.

Il est plus facile de comprendre ce qu’est un bloc si on le sépare en :


- Variables

- Fonction

- Appel du Themel

Cela permet de ce concentrer sur ce qu’on travaille, et de comprendre ce qui ce passe dans le bloc. Tous les blocs ont la même structure. Si l’on a cela en tete, l’ajout de blocs devient tres simple.

- Variables

$blocks_modules ?statbox = array(
’func_display’ => ’blocks_statbox_block’,
’text_type’ => ’ ?StatBox’,
’text_type_long’ => ’ ?StatBox’,
’allow_multiple’ => true,
’form_content’ => false,
’form_refresh’ => false,
’show_preview’ => true
) ;

Ceci est l’en tete de tous les blocs. En definitive, cela cree un tableau reconnu par le systeme, et cela donne des détails sur comment ce bloc peut etre manipulé par l’administrateur.

Analysons chaque ligne :

$blocks_modules ?statbox = array(
statbox est le nom de notre bloc.

’func_display’ => ’blocks_statbox_block’,
Cela demande à notre tableau d’utiliser la fonction ’blocks_statbox_blocks’

’text_type’ => ’ ?StatBox’,
’text_type_long’ => ’ ?StatBox’,
Cela indique le nom et la description du bloc pour l’administrateur.

’allow_multiple’ => true,
Cela determine si le bloc peut etre cree ou pas. Par exemple les blocs de ’login’ ou de ’qui est en ligne ?’ ne peuvent etre crees. Ils peuvent simplement etre actives ou desactives.

’form_content’ => false,
’form_refresh’ => false,
Ces informations indiquent au script admin si le contenu du bloc a le droit d’etre modifie et si le contenu doit etre raffraichi apres changement.

’show_preview’ => true
Enfin, cette ligne nous indique si l’on doit prévisualiser le bloc avant de l’activer.

Il existe egalemment d’autres fonctions que vous pourriez avoir a utiliser :

’func_update’ => ’blocks_button_update’,
Fonction appelée quand le bloc est modifie, avant que les changements soit apportés a la base de donnees.

’func_add’ => ’blocks_button_add’,
Fonction appelée quand le bloc est cree, avant que les changements soit apportés a la base de donnees.

’func_edit’ => ’blocks_button_edit’,
Fonction qui ajoute des champs à la page d’edition des blocs

Ces fonctions sont utilisees pour les blocs dynamiques dans lequels vous editez le contenu, au lieu de simplement extraire des informations de la base de donnees.

- Fonction

Dans cet exemple, je vais montrer comment voir le nombre de stories sur votre site. Il s’agit d’une fonction simple, mais cela va vous montrer comment cela peut etre fait. Cet exemple est inspire d’un bloc de Fransico Burzi, il est utilise uniquement en guise de demonstration.

function blocks_statbox_block($row)
global $pntable, $currentlang, $top ;
$queryalang = "WHERE (alanguage=’$currentlang’ OR alanguage=’’)" ; /* top stories */
$result = mysql_query("select sid, title, time, counter from
$pntable ?stories $queryalang order by counter DESC limit 0,$top") ;
if (mysql_num_rows($result)>0)
$lugar=1 ;
while(list($sid, $title, $time, $counter) = mysql_fetch_row($result))
if($counter>0)
if (isset($cookie[4]))
$commentlink = "&mode=$cookie[4]" ;

else
$commentlink = ’&mode=thread’ ;

$boxstuff .= " $lugar : $title - ($counter "._READS.") " ;
$lugar++ ;


mysql_free_result($result) ;
$row ?title = _READSTORIES ;
$row ?content = $boxstuff ;
themesideblock($row) ;

Observez que le nom de la fonction reflete celui que nous avions indique dans la definition initiale.

’func_display’ => ’blocks_statbox_block’,
function blocks_statbox_block($row)
Identification et definition de la fonction.

En queue du fichier :
$row ?title = $title ;
$row ?content = $boxstuff ;
themesideblock($row) ;

Ceci sert a formater le contenu du bloc en lui faisant prendre en compte le theme de votre site. La fonction themesideblock a ete renomme themesidebox pour conserver la compatibilite avec les themes PHPNuke.

Ce tutorial devrait vous permettre de commencer a creer des blocs. Il ne prend pas en compte toutes les possibilites du systeme de blocs. Je laisse votre imagination faire le reste.

Traduction francaise du Tutorial de J. Cox
Sylvain Lemore, Get Electronique SA