Drupalのモジュール作成方法 Part.3

モジュールの作り方 Part.2では管理画面のフォームで文言を入力し、入力した文言が表示されるモジュールでしたが、今回はカスタムブロックを作成し、カスタムブロックの設定画面から文言が入力できるモジュールの一部分をご紹介いたします。

最初に作成したモジュールの設置方法をご説明します。ブロックレイアウトで今回作成したwordsoutput_blockをMain contentブロックに設置します。

Drupal管理画面
サイト構築  >> ブロックレイアウト

下記の画面のように、カスタムブロックの一覧画面で該当のwordsoutput_blockの設定ボタンをクリックすると、

カスタムブロック

 

下記の入力用画面が開きます。そこで好きな文を入力するとその文字が設定したブロック内で表示されるというモジュールです。今回はMain contentブロックで表示されます。ブロック設定

 

さて、モジュールのほうですが、今回モジュール名をwordsoutput_blockとします。下記がフォルダ構成です。

drupal/modules/wordsoutput_block/

  |-wordsoutput_block.info.yml
  |-src
     |-Plugin
       |-Block
           |-Wordsoutput_blockCustomBlock.php

 

それでは、メインとなるWordsoutput_blockCustomBlock.phpの内容を一部表示いたします。Wordsoutput_blockCustomBlockクラスのblockFormメソッドで入力フォームの内容を設定しています。またblockSubmitメソッドでは、フォームで入力した値をセットしています。buildメソッドでフォームで入力した文言を表示します。

class Wordsoutput_blockCustomBlock extends BlockBase implements BlockPluginInterface {
 
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);

    $config = $this->getConfiguration();

    $form['wordsoutput_block'] = array (
      '#type' => 'textfield',
      '#title' => $this->t('文言'),
      '#description' => $this->t('好きな文言を入力してください。'),
      '#default_value' => isset($config['name']) ? $config['name'] : '',
    );

    return $form;
  }

  public function blockSubmit($form, FormStateInterface $form_state) {
    $this->setConfigurationValue('name', $form_state->getValue('wordsoutput_block'));
  }

  public function build() {

   $config = $this->getConfiguration();
   $words1=$config['name'];

  return array(
  '#type' =>'markup', 
  '#markup' => $this->t($words1) );
  }
}