【问题标题】:Add fields to the Site information section on Drupal 6.12在 Drupal 6.12 的站点信息部分添加字段
【发布时间】:2010-11-02 07:14:18
【问题描述】:

我一直在浏览 drupal 文档和论坛,但这有点令人生畏。如果有人有一种简单或直接的方法可以在管理部分的站点信息页面中添加字段,我将不胜感激。

作为背景,我只是想添加用户可自定义的字段站点范围的字段/值。

【问题讨论】:

    标签: php drupal content-management-system drupal-6 content-management


    【解决方案1】:

    在自定义模块中,您可以使用hook_form_alter() 向该表单添加额外的字段。例如:

    function mymodule_form_alter(&$form, $form_state, $form_id) {
      if ($form_id == 'system_site_information_settings') {
        $form['my_module_extra_setting'] = array(
          '#type' => 'checkbox',
          '#title' => t('Use my setting'),
          '#default_value' => variable_get('my_module_extra_setting', TRUE),
        );
      }
    }
    

    在您需要访问已保存设置本身的代码中的任何位置,您都可以使用用于填充该表单元素的默认值的相同调用:variable_get('my_module_extra_setting', TRUE)

    【讨论】:

    • 对 - 请原谅我的菜鸟 :) 1. 您发布的代码是否可以使用?我可以把它放进去,它会工作吗? 2. 它去哪儿了? template.php 文件? 3. 我已经做了一个解决方法 - 创建了一个新的内容类型,并使用 CCK 创建了我需要的所有变量。在 page.tpl.php 文件中,我调用了我存储在该节点中的所有字段 - 因此现在我需要轻松访问任何类型的变量。这很糟糕吗?为了安全起见,我使用 pathauto 将指向该页面的链接重定向到首页(不是真正需要,但以防万一。
    • 正如 His Eatonness 所说,此代码需要进入自定义模块。由于这个函数是一个钩子并且以 my_module 开头,它属于具有该名称的模块。像站点/所有/模块/my_module/my_module.module 之类的东西。您还需要一个 sites/all/modules/my_module/my_module.info 文件才能启用该模块。
    【解决方案2】:

    为了保存新自定义字段中的值,您需要向提交数组添加第二个提交项,例如:

    $form['#submit'][] = 'misc_system_settings_form_submit';
    

    然后添加一个处理提交的函数,例如:

    function misc_system_settings_form_submit($form_id, $form_values) {
        // Handle saving of custom data here
        variable_set('access_denied_message', $form_values['values']['custom_access_denied_message']);
    }
    

    【讨论】:

      【解决方案3】:

      函数应该是 mymodule_form_alter 而不是 mymodule_hook_form_alter

      【讨论】:

        猜你喜欢
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多