首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展Scheduler模块形式

扩展Scheduler模块形式
EN

Drupal用户
提问于 2020-03-11 20:12:25
回答 1查看 36关注 0票数 0

嗨,我正在尝试扩展调度器模块表单。我需要的字段作为字段集包含在节点中,作为额外字段引用图像。

代码语言:javascript
复制
/**
 *  Implements hook_form_node_type_form_alter(). 
 */

 function nodequeue_scheduler_form_node_type_form_alter(&$form, $form_state) {

    //This  node type configuration form with schedule options

    $form['scheduler']['nodequeue_sheduler'] = array(
      '#type' => 'fieldset',
      '#title' => t('Nodequeue Scheduler Settings'),
      '#collapsible' => FALSE,
      '#group' => 'scheduler',
      '#weight' => 10,
    );

   }

/**
 * Implements hook_form_FORM_ID_alter().
 */
function nodequeue_scheduler_form_scheduler_node_form_alter(&$form, $form_state) {

   //feldset or vertical tab for scheduler to ammend
$options = array (1,2,3);
// Adding few custom fields
$form['scheduler_settings']['publish_nodequeue'] = array(
 '#type' => 'fieldset',
 '#title' => t('Nodequeue Scheduling settings'),

);
$form['scheduler_settings'] ['publish_nodequeue']['schedule_nodequeue'] = array(
 '#type' => 'checkbox',
 '#default_value' => 1,
 '#title' => t('Add to nodequeue when published')
);

$form['scheduler_settings']['publish_nodequeue']['nodequeue_position'] = array(
 '#type' => 'select',
 '#options' => $options,
 '#title' => t('Position')

);
$form['scheduler_settings']['publish_nodequeue']['publish_on'] = array(
 '#type' => 'textfield',
 '#title' => t('Publish on'),
 '#maxlength' => 30,

);
// function scheduler_mail_form_scheduler_node_form_alter(&$form, $form_state) {
//    $email_enabled = variable_get('scheduler_mail_enable_' . $form['type']['#value'], 0);
//    if (!$email_enabled) {
//      return;
//    }

//    $node = $form['#node'];
//    $settings = _scheduler_mail_load($node);

//    $form['scheduler_settings']['scheduler_mail'] = array(
//      '#type' => 'fieldset',
//      '#title' => t('Email settings'),
//    );
//    $form['scheduler_settings']['scheduler_mail']['scheduler_mail_send'] = array(
//      '#type' => 'checkbox',
//      '#title' => t('Send an email notification when this node is (un)published'),
//      '#default_value' => $settings->send,
//    );
//    $form['scheduler_settings']['scheduler_mail']['scheduler_mail_address'] = array(
//      '#type' => 'textfield',
//      '#title' => t('Use this email address'),
//      '#description' => t('If left blank, email will go to the original author of this node'),
//      '#default_value' => $settings->address,
//      '#maxlength' => 255,
//      '#states' => array(
//        'visible' => array(
//          "input[name='scheduler_mail_send']" => array("checked" => true)
//        ),
//      ),
//    );
//    $form['#validate'][] = '_scheduler_mail_validate';
//    $form['#submit'][] = '_scheduler_mail_submit';
  }

我发现模块调度器邮件,它更改节点类型表单,并添加一些配置字段作为复选框,但没有得到的形式,是在节点编辑形式。在drupal 7我该怎么做?

EN

回答 1

Drupal用户

回答已采纳

发布于 2020-03-11 20:49:58

如果调度程序在窗体上使用hook_form_alter(),而您的模块也在同一表单上使用hook_form_alter(),那么这两个hook_form_alter()函数的执行顺序很重要。显然,在调度程序添加要修改的新表单元素之前,正在调用模块的hook_form_alter()。

Drupal按模块权重顺序执行这些钩子。如果您不设置模块权重,那么我相信它们都默认为相同的值,具有相同权重的钩子将按字母顺序调用(但这不是保证的)。

为了确保在调度器之后调用模块,需要将模块的权重设置为大于调度程序的模块权重。在模块的安装文件中是这样做的:

代码语言:javascript
复制
/**
 * Implements hook_install().
 */
function my_module_install() {
  // Because we need to alter a form that is also altered by the scheduler
  // module, we need to ensure this module gets loaded AFTER the scheduler.
  $weight = db_query('SELECT weight FROM {system} WHERE name = :name', array(':name' => 'scheduler'))->fetchField();
  db_update('system')
    ->fields(array(
      'weight' => $weight + 1
    ))
    ->condition('name', 'my_module')
    ->execute();
}
票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/291866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档