2009-09-16 8 views
1

La personne qui gère un site sur lequel je travaille veut être capable de décider quels blocs vont où. Il y a déjà une interface sympa pour cela dans Drupal (en sélectionnant la région à partir d'une liste déroulante) mais j'aimerais cacher certains blocs de cet utilisateur. Ce sont des blocs qu'il ne devrait pas pouvoir déplacer.Module Drupal pour la gestion de bloc webmaster?

Afaik ce n'est pas possible via les autorisations. Existe-t-il un module permettant un contrôle précis des blocs pouvant être gérés par qui? Je préfère ne pas écrire une interface personnalisée ...

Merci, Stef

Répondre

0

Prenez ces blocs de régions et de les intégrer dans votre modèle manuellement à l'aide module_invoke().

$block = module_invoke('module_name', 'block', 'view', 'block name or ID'); 

print '<h2>' . $block['subject'] . '</h2>'; 
print $block['content']; 
+0

Comment cela aiderait-il un webmaster à gérer ces blocs? – stef

+0

désolé, je vois ce que vous voulez dire: cacher les blocs "interdits" dans les modèles, l'a obtenu. s'il y a une autre option que j'aime entendre, sinon c'est acceptable pour la réponse – stef

-1

Peut-être donner Blockqueue un essai? Je ne l'ai jamais utilisé, mais il semble couvrir votre cas d'utilisation.

+0

Cela ne semble pas permettre le verrouillage de blocs spécifiques. – ceejayoz

+0

Vous avez raison. En regardant le code, mon impression qu'il y avait des permissions séparées pour ajouter et éditer la file d'attente est fausse. Cela pourrait être changé, mais l'approche par thème est probablement plus facile. – Grayside

3

Eh bien, vous pouvez créer un simple module personnalisé comme celui-ci (remplacez mon_module avec le nom de votre module personnalisé, évidemment):

function my_module_perm() 
    { 
     return array('view special blocks'); 
    } 



    function my_module_form_alter(&$form, &$form_state, $form_id) { 
     if ($form_id == 'block_admin_display_form') { 
     if(!user_access('view special blocks')) { 
      $special_blocks = array(); // Specially hidden blocks go here 

      foreach($special_blocks as $block) { 
       unset($form[$block]); 
      } 
     } 
     } 
    } 

Et puis:

  1. Ajouter les blocs que vous voulez cacher dans le tableau $special_blocks (il s'agit essentiellement de l'identifiant du bloc div_min du bloc)
  2. Créer un nouveau compte, et éventuellement un nouveau rôle pour ce type
  3. La permission-sage, le nouveau devrait le rôle de l'utilisateur ont access administration pages et administer blocks, mais ne devrait pas avoir view special blocks

Testé sur Drupal 6.6, devrait fonctionner sur d'autres versions 6.x (et peut-être 5. x avec quelques modifications)

+0

Fonctionne aussi en D7 ... légèrement modifié car hoom_perm est devenu hook_permission;) Merci! – SomethingOn

Questions connexes