【问题标题】:Theming Drupal Add Block form via forms API通过表单 API 主题化 Drupal 添加块表单
【发布时间】:2010-05-06 12:55:24
【问题描述】:

谁能建议我自定义“添加块”表单? (/admin/build/block/add)

我想对用户隐藏“用户特定的可见性设置”和“角色特定的可见性设置”。这就是我到目前为止所得到的,但显然它不正确,我无法弄清楚数组是什么。有人有这方面的经验吗?

function theme_add_block_form($form) {
    $form['roles']['#prefix'] = '<div class="hidden">';
    $form['roles']['#suffix'] = '</div>';
    return drupal_render($form);
}

谢谢, H

编辑——也许我不清楚——我很喜欢使用 API 中的各种表单钩子,但在这种情况下,我的问题是我无法识别要在我的函数中使用的数组元素。开发模块似乎没有作用于积木页面,而主题弹出积木的事情不太清楚。

【问题讨论】:

    标签: php drupal drupal-6 drupal-fapi


    【解决方案1】:

    modules/block/block.admin.inc,函数block_admin_configure

    $form['user_vis_settings'] = array(
        '#type' => 'fieldset',
        '#title' => t('User specific visibility settings'),
        '#collapsible' => TRUE,
      );
    
    (...)
    
    $form['role_vis_settings'] = array(
        '#type' => 'fieldset',
        '#title' => t('Role specific visibility settings'),
        '#collapsible' => TRUE,
      );
    

    试着隐藏$form['user_vis_settings']$form['role_vis_settings']

    编辑:

    不要碰modules/block/block.admin.inc!! (我只是指着我找到表单字段名称的地方)。隐藏theme_add_block_form 中的字段。您可以编写$form['user_vis_settings']['#access'] = false;

    ,而不是将字段包装在 div 中

    【讨论】:

    • 我不是故意的!我会澄清我的答案。
    • 不错,Dusan 欢呼,没想到要进去看看。是的,不用担心我不会在那里进行编辑,从我的帖子中应该清楚我正在创建一个主题 template.php 函数。不需要反对票!
    • 积分返回,新手破解drupal代码永远不会显示:)
    • 谢谢尼基特,我会更仔细地写下我的答案。 =)
    【解决方案2】:

    【讨论】:

    • 是的,这是执行主题化的一种选择,但我需要一些帮助来实际识别要放入函数的数组元素。我无法使用 Devel 模块识别它们,因为它似乎没有在该页面上起作用。
    • dpm($form) 在 hook_form_alter 如果你有 devel (print_r 如果没有),你会看到表单的所有内部数据。在那里添加您自己的表单元素,并添加自己的验证和提交调用。了解这个更有帮助:api.drupal.org/api/drupal/…
    • 已经试过了 - 抱歉应该把它留在代码示例中:)
    【解决方案3】:

    这是要走的路。使用 http://api.drupal.org/api/function/hook_form_alter/6 在另一个答案中说。你需要在costum模块中编写这段代码。

    <?php   
     function module_name_form_alter(&$form, $form_state, $form_id) {
          if ($form_id == 'block_admin_configure') {
           $form['user_vis_settings'] = array(
            '#type' => 'fieldset',
            '#title' => t('User specific visibility settings'),
            '#collapsible' => TRUE,
            '#access' = FALSE,
           );
           $form['role_vis_settings'] = array(
            '#type' => 'fieldset',
            '#title' => t('Role specific visibility settings'),
            '#collapsible' => TRUE,
            '#access' = FALSE,
           );
          }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多