【问题标题】:Drupal module for webmaster block management?用于网站管理员块管理的 Drupal 模块?
【发布时间】:2009-09-16 12:00:54
【问题描述】:

管理我正在处理的网站的人希望能够决定哪些块放在哪里。 Drupal 中已经有一个很好的界面(从下拉列表中选择区域),但我想对这个用户隐藏某些块。这些是他不应该移动的方块。

Afaik 这是不可能通过权限实现的。是否有允许细粒度控制哪些块可以由谁管理的模块?我宁愿不写自定义界面...

谢谢, 史蒂夫

【问题讨论】:

    标签: drupal


    【解决方案1】:

    好吧,您可以像这样创建一个简单的自定义模块(显然,将 my_module 替换为您的自定义模块的名称):

        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]);
                }
            }
          }
        }
    

    然后:

    1. 将要隐藏的方块添加到$special_blocks数组中(基本上就是方块的div减去block_的id)
    2. 创建一个新帐户,并可能给这个人一个新角色
    3. 权限方面,新用户的角色应该启用access administration pagesadminister blocks,但不应该启用view special blocks

    在 Drupal 6.6 上测试过,应该可以在其他 6.x 版本上工作(可能还有 5.x 稍作修改)

    【讨论】:

    • 在 D7 中也可以工作...虽然略有修改,因为 hoom_perm 已成为 hook_permission ;) 谢谢!
    【解决方案2】:

    使用 module_invoke() 手动将这些块从区域中取出并嵌入到您的模板中。

    $block = module_invoke('module_name', 'block', 'view', 'block name or ID');
    
    print '<h2>' . $block['subject'] . '</h2>';
    print $block['content'];
    

    【讨论】:

    • 对不起,我明白你的意思:在模板中隐藏“不允许”的块,明白了。如果有另一个选项 id 想听,否则这是可以接受的答案
    【解决方案3】:

    也许试试Blockqueue?我从未使用过它,但它似乎涵盖了您的用例。

    【讨论】:

    • 看起来不允许锁定特定块。
    • 你是对的。查看代码,我认为添加和编辑队列有单独的权限的印象是错误的。这可以改变,但主题方法可能更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2012-05-18
    • 2017-08-21
    相关资源
    最近更新 更多