在Drupal 8管理员中添加一个弹出窗口

时间:2018-09-21 07:15:43

标签: drupal admin drupal-8

我想创建一个弹出窗口,以在文本区域中显示可能的可用标签示例,我需要将其显示在管理员的每个内容版本页面上。

要在管理内容版本页面中进行此类阻止,我需要做什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

我将使用以下内容创建一个模块:

  • 一个twig文件,其中包含对话框的内容。
  • 使用Drupal 8中包含的jquery.dialog library来显示对话框的小JS文件。
  • 实施hook_from_alter以附加基于form_id的更改。

类似于以下内容,它适用于节点编辑表单,但尚未经过全面测试:

文件:templates / popuptag.html.twig

<div style="display: none;">
  <div id="popuptag-dialog" title="Tag Usage">
   <p>The tag can be used at vero eos et accusamus et iusto odio
     dignissimos ducimus qui blanditiis praesentium voluptatum
     deleniti atque corrupti quos dolores et quas molestias
     excepturi sint occaecati cupiditate non provident, similique sunt.</p>
  </div>
</div>

文件:js / popuptag.dialog.js

(function ($) {
  'use strict';
  Drupal.behaviors.popuptag_dialog = {
    attach: function (context) {
      $( "#popuptag-dialog" ).dialog();
    }
  };
})(jQuery);

文件:popuptag.module

/**
 * Implements hook_theme().
 */
function popuptag_theme() {
  return [
    'popuptag' => [
      'template'  => 'popuptag',
      'render element' => 'dialog',
    ],
  ];
}

/**
 * Implements hook_form_alter().
 */
function popuptag_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  // Add here other form_ids if needed
  if (in_array($form_id, ['node_page_edit_form'])) {
    $form['popuptag'] = [
      '#theme' => 'popuptag',
      '#form_id' => $form_id,
    ];
    $form["#attached"]["library"][] = 'popuptag/dialog';
  }

}

文件:popuptag.libraries.yml

dialog:
  js:
    js/popuptag.dialog.js: { minified: true }
  dependencies:
    - core/drupal.dialog

文件:popuptag.info.yml

name: 'popuptag'
type: module
description: 'popuptag'
core: 8.x
package: 'Custom'