- Accueil
- Info légales
- Aide (FAQ)
- Les tags de ce site
- Bloc note
- Articles techniques
- Notes system
- Divers articles
- Drupal
- Notes ITIL 2007
- Notes MS
- Dans le quartier...
- Emploi
- Recettes de cuisine et adresses gourmandes
- mes applis ubuntu préferées
- Divers acronymes du monde social
- Internet 2018
- P2 meublé à louer - quartier du Poteau 75018
- apcos - réseaux sociaux et outils
- Articles techniques
- Divers liens
- Fun
- Mon CV IT
- Nouveautés
Créer un module pour drupal 7
Cf https://www.drupal.org/developing/modules/7
création dossier et 1er fichier
Important: nom module (apparait partout ds système) court, en minuscules et avec _. Ex: current_posts
Créer dossier sites/all/modules/current_posts
Le code PHP doit etre dans le fichier current_posts.module
Créer fichier .info (le taxoh.doc est un .zip qui regroupe un ex)
Cf sur le web Writing .info files + Doc syntaxe .info pour modules: http://bit.ly/U0SuhH ; pour themes: http://bit.ly/Tol9P7
package = "Taxonomy" -> créer/intègre une sous-rubrique dans admin/modules
Il devrait apparaitre dans admin/modules.
Penser à commenter, See Doxygen and comment formatting conventions
hook_help
Le 1er hook doit etre hook_help (help dans la page des modules). Pour implémenter un hook, remplacer hook (dans le nom du module) par le nom court de son module, et créer dans .module une fonction de meme nom.
ex (source https://www.drupal.org/node/1095546): <?php
/**
* Implements hook_help().
*
* Displays help and module information.
*
* @param path
* Which path of the site we're using to display help
* @param arg
* Array that holds the current path as returned from arg() function
*/
function current_posts_help($path, $arg) {
switch ($path) {
case "admin/help#current_posts":
return '<p>' . t("genere le lien help dans admin/module ce texte apparait dans /admin/help/MONMODULE") . '</p>';
break;
}
}
?>
Dans admin/modules, activer le module, et vérifier la précence du lien aide. Désactiver le module.
Déclarer le bloc (hook_block_info())
Il y a plus de 8 hooks de blocs. Ici on en voit 2: hook_block_info() qui indique à drupal quels blocs notre module va créer.
Dans current_posts.module ajouterfunction current_posts_block_info() {
$blocks['current_posts'] = array(
// The name that will appear in the block list.
'info' => t('Current posts'),
// Default setting.
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}
Drupal utilise massivement les tableaux associatifs. See hook_block_info
Activer le module, aller vérifier que le bloc apparait. Désactiver le module.
db_select() dans current_posts_contents
Source: https://www.drupal.org/node/1104482
dans current_posts.module | notes |
---|---|
<?php /** * Custom content function. * * Set beginning and end dates, retrieve posts from database * saved in that time period. * * @return * A result set of the targeted posts. */ |
retourne des posts |
function current_posts_contents(){ |
on calcule la date de la semaine dernière méthode db_select(nom_table, alias) méthode fields
méthode condition a 3 arg, (champ, valeur, operateur) execute compile et lance la requete, retourne un object en résultat |
hook_block_view(), user_access(), l() et theme()
<?php /** * Implements hook_block_view(). * * Prepares the contents of the block. */ function current_posts_block_view($delta = '') { switch ($delta) { case 'current_posts': $block['subject'] = t('Current posts'); if (user_access('access content')) { // Use our custom function to retrieve data. $result = current_posts_contents(); // Array to contain items for the block to render. $items = array(); // Iterate over the resultset and format as links. foreach ($result as $node) { $items[] = array( 'data' => l($node->title, 'node/' . $node->nid), ); } // No content in the last week. if (empty($items)) { $block['content'] = t('No posts available.'); } else { // Pass data through theme function. $block['content'] = theme('item_list', array( 'items' => $items)); } } return $block; } } ?> |
hook_block_view retourne 2 valeurs: subject (titre du bloc) et content.
access content est le plus simple. Pour trouver le nom-systeme d'une perm, aller à admin/people $result on sauve dans cette var. $items est pour stocker les données traitées, formatées en tant que liens (fonction l(texte,path)). theme (theme hook, contenu à thémer)
|
admin/config/development/performance effacer le cache
Doc tek:
Fichier attaché | Taille |
---|---|
taxoh.doc | 2.04 Ko |