Bonjour,
Dans un de mes types de noeud, j’affiche 5 blocs. Ces blocs affichent des informations du noeud principal. J’ai donc chargé le tableau $node dans ces blocs par le module.
C’est justement là où réside le problème. Pour arriver à transmettre les informations du noeud dans les blocs, j’ai utilisé la fonction hook_preprocess()en ajoutant de dans la ligne : $node = node_load(arg(1)) ; le problème c’est que ça me crée une erreur dans la taxonomie et surtout que node_load() marche avec tous les types de noeuds.
Il faudrait donc que je puisse rajouter un if($node->type == ‘modele_2r’) { }
Je pense qu’il doit y exister une fonction spécial pour charger un noeud dans un bloc ?
J’espère que vous pourrez m’aider !
Voilà la partie de mon module qui me charge les 5 blocs avec le noeud :
<?php
// $Id$
/
* Permissions du module
* @return array Tableau de permissions valides pour le module helloworld
*/
function modele_2r_perm() {
return array('access modele_2r content');
}
/
* Implémentation de hook_block
*/
function modele_2r_block($op = 'list', $delta = 0, $edit = array ()) {
switch($op) {
case 'list':
return array('modele_2r_presentation_block'=>array('info'=>'Modele 2R: Block Presentation'), 'modele_2r_fiche_technique_block'=>array('info'=>'Modele 2R: Block Fiche Technique'), 'modele_2r_coloris_block'=>array('info'=>'Modele 2R: Block Coloris'), 'modele_2r_galerie_photos_block'=>array('info'=>'Modele 2R: Block Galerie photos'), 'modele_2r_argus_block'=>array('info'=>'Modele 2R: Block Argus'));
case 'view': {
if ($delta=='modele_2r_presentation_block') {
return array(
'subject'=>'Presentation du modele',
'content'=>theme('modele_2r_presentation_block', $node));
}
if ($delta=='modele_2r_fiche_technique_block') {
return array(
'subject'=>'Fiche technique du modele',
'content'=>theme('modele_2r_fiche_technique_block', $node));
}
if ($delta=='modele_2r_coloris_block') {
return array(
'subject'=>'Coloris disponible pour ce modele',
'content'=>theme('modele_2r_coloris_block', $node));
}
if ($delta=='modele_2r_galerie_photos_block') {
return array(
'subject'=>'Galerie photos pour ce modele',
'content'=>theme('modele_2r_galerie_photos_block', $node));
}
if ($delta=='modele_2r_argus_block') {
return array(
'subject'=>'Argus pour ce modele',
'content'=>theme('modele_2r_argus_block', $node));
}
}
}
}
function modele_2r_preprocess(&$variables, $hook ) {
if(arg(0) == 'node') {
$node = node_load(arg(1));
$variables['node'] = $node;
}
}
function modele_2r_theme($existing, $type, $theme, $path) {
return array(
'modele_2r_presentation_block' => array(
'arguments' => array('node'),
'template' => 'modele_2r_presentation_block'),
'modele_2r_fiche_technique_block' => array(
'arguments' => array('node'),
'template' => 'modele_2r_fiche_technique_block'),
'modele_2r_coloris_block' => array(
'arguments' => array('node'),
'template' => 'modele_2r_coloris_block'),
'modele_2r_galerie_photos_block' => array(
'arguments' => array('node'),
'template' => 'modele_2r_galerie_photos_block'),
'modele_2r_argus_block' => array(
'arguments' => array('node'),
'template' => 'modele_2r_argus_block')
);
}
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

La fonction que tu cherches est menu_get_object()
http://api.drupal.org/api/function/menu_get_object/6
Richard lascols
www.ideia.fr
khtuluu
546
Merci beaucoup ! Ca marche super ! Par contre je n’ai pas bien compris comment cette fonction travail. Si j’ai bien compris elle récupère directement dans le contenu ce que l’on lui a demandé (noeud) et donc n’utilise pas node_load() ce qui veut dire qu’elle utilise moins de resource ( que node_load() ) non ?
clement106
132
A votre place j’aurais utilisé panels pour créer ces block avec comme contexte votre node.
takeova
356
Je ne connais pas bien ce module… Le but de ces blocs est de les afficher dans le module quicktabs pour avoir dans mon noeud des onglets.
clement106
132