Ultimamente mi sono concentrato molto su Drupal, soprattutto per la sua flessibilità e modularità.
La possibilità di scrivere un modulo, che aggiunge funzioni, senza andare a toccare il core del resto del cms è veramente molto utile e produttivo.
Ecco un esempio di primo modulo che chiameremo nodelist
:
Creiamo un file nodelist.info che contiene le informazioni del modulo.
; $Id: nodelist.info Exp $<br />
name = Nodelist<br />
description = visualizza list nodi<br />
package = node<br />
version = VERSION<br />
core = 6.x
; Information added by drupal.org packaging script on 2008-08-14<br />
version = "6.4"<br />
project = "drupal"
Creare il file nodelist.module in cui scriveremo il modulo vero e proprio.
Per fare ciò utilizziamo i famosi Hook di Drupal.
Le varie function per convenzione si chiameranno nodelist_[hook].
`
/**
- Display help and module information
- @param path which path of the site we’re displaying help
- @param arg array that holds the current path as would be returned from arg() function
- @return help text for the path
*/
function nodelist_help($path, $arg) {
$output = ‘’;
switch ($path) {
case “admin/help#nodelist”:
$output = ‘<p>‘.t(“Displays links to nodes “) .’</p>’;
break;
}
return $output;
}
/** - Valid permissions for this module
- @return array An array of valid permissions for the mailing module
*/
function nodelist_perm() {
return array(‘access nodelist content’);
} // function nodelist_perm()
/**
* - @return
*/
function nodelist_block($op=’list’, $delta=0) {
// listing of blocks, such as on the admin/block page
if ($op == “list”) {
$block[0][“info”] = t(“node List”);
return $block;
} else if ($op == ‘view’) {
// our block content
// content variable that will be returned for display
$block_content = ‘’;
$result = db_query(“SELECT nid, title, created FROM {node} “);
while ($links = db_fetch_object($result)) {
$block_content .= l($links->title, ‘node/’.$links->nid) . ‘
’;
}
// check to see if there was any content before setting up the block
if ($block_content == ‘’) {
// no content from a week ago, return nothing.
return;
}
// set up the block
$block[‘subject’] = ‘node’;
$block[‘content’] = $block_content;
return $block;
}
}
`
Con questi file dentro la cartella nodelist e caricata nella cartella modules vi troverete la possibilità di abilitare il nuovo modulo.
Abilitandolo avrete il nuovo blocco a disposizione.