Может ли один функциональный модуль дополнять другой функциональный модуль?

Я хотел бы иметь два функциональных модуля для включения пользователей. Один базовый и один продвинутый. Например, основная функция создает тип содержимого блога с полями только заголовка и тела. Расширенный модуль после включения добавляет дополнительные поля к этому исходному типу содержимого, например, пометки или поля изображения. Возможно ли это или переопределить другое? Или мой сайт взорвется? или?

6 голосов | спросил sicko 7 J0000006Europe/Moscow 2012, 07:38:39

2 ответа


3

Это определенно возможно, мне нужно было сделать что-то подобное вчера, и я рад сказать, что функции могут справиться с ним отлично.

Фокус в том, что ваша расширенная функция не будет содержать тип содержимого вообще, а просто список дополнительных полей, которые привязаны к типу контента, определенному исходным правилом.

Когда вы устанавливаете /включаете второй функциональный модуль, дополнительные поля будут добавляться к существующему типу содержимого, как по мановению. Я был приятно удивлен, насколько хорошо это работает.

Существует пример хорошо установленного дистрибутива Drupal с использованием этого же метода (именно там у меня появилась идея, если я честен); OpenPublish содержит функцию openpublish_article , который определяет тип содержимого и функцию openpublish_atricle_extra_media, единственной задачей которой является добавление в статью нескольких дополнительных полей.

Как замечательная сторона, вероятно, было бы неплохо сделать ваш основной функциональный модуль зависимым от второго, поэтому тип контента определенно определяется временем, когда вторая функция пытается добавить к нему дополнительные поля .

ответил Clive 7 J0000006Europe/Moscow 2012, 12:31:38
0

Вы можете легко сделать это, используя hook_form_alter


function hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
  if($form_id == 'YOUR_FORM_ID') {
    // Write your code here with conditions.
    global $user;   
    if($user->role == 'somerole') {
      // Here You can add form fields whatever you want for somerole.
    }
    else {
      // Here You can add form fields whatever you want for other roles.
    }
  }
}

Но для полей, которые вы хотите добавить для определенной роли, не обязательно поле.

ответил Mohammad Anwar 7 J0000006Europe/Moscow 2012, 10:48:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132