Добавьте поля в раздел информации о сайте на Drupal 6.12

Я просматривал документацию и форумы drupal, но все это немного пугает. Если у кого-то есть простой или понятный метод добавления полей на страницу информации о сайте в разделе администрирования, я был бы очень признателен.

В качестве фона я просто пытаюсь добавить настраиваемые пользователем поля / значения для всего сайта.


person Shadi Almosri    schedule 11.06.2009    source источник


Ответы (3)


В настраиваемом модуле вы можете использовать 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)

person Eaton    schedule 12.06.2009
comment
Верно - извините за глупость :) 1. Готов ли опубликованный вами код к использованию? могу я его бросить, и он сработает? 2. Куда это девается? файл template.php? 3. Я сделал обходной путь - создал новый тип контента и с помощью CCK создал все необходимые мне переменные. в файле page.tpl.php я вызываю все поля, которые я хранил в этом узле - таким образом, теперь любая переменная, которая мне нужна, легко доступна. Это плохо? Я перенаправил ссылку на эту страницу с помощью pathauto на главную в целях безопасности (на самом деле это не обязательно, но на всякий случай. - person Shadi Almosri; 12.06.2009
comment
Как сказал его Eatonness, этот код нужно поместить в специальный модуль. Поскольку эта функция является перехватчиком и начинается с my_module, она принадлежит модулю с таким именем. Что-то вроде sites / all / modules / my_module / my_module.module. Вам также понадобится файл sites / all / modules / my_module / my_module.info, чтобы иметь возможность включить модуль. - person mikl; 13.06.2009

Чтобы сохранить значение из вашего нового настраиваемого поля, вам нужно будет добавить второй элемент отправки в массив отправки, например:

$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']);
}
person Felix Eve    schedule 12.01.2012

Функция должна быть mymodule_form_alter вместо mymodule_hook_form_alter.

person Saggy    schedule 09.09.2010