ウェブのましじめ

Drupal8 保存時にHookを使って値を追加したい

Drupal
田村 章吾(タムショー)

こんにちは 田村です。

Drupal8で保存時に処理を追加したい場合がありました。
保存時になにか処理を追加したい場合はHookを使って処理を追加するよと良さそうです。

例えば「保存時に『公開期限』が空の場合に公開日の100日後を追加する」といった処理を追加したいとします。

この場合、仮にmasizime_customというカスタムモジュールを作成し次のように記述します。
このHookの後で保存処理が行われるので、Hook内では変数をセットするだけで大丈夫です。

modules/custom/masizimecustom/masizimecustom.module

/**
 * Implements hook_node_presave().
 */
function masizime_custom_node_presave($node)
{
  if ($node->getType() == 'article') {
    // 公開状態で「公開期限」が空の場合公開日の100日後をセット
    if ($node->isPublished() && !$node->unpublish_on->value) {
      $node->unpublish_on->setValue(strtotime('100 day', $node->created->value));
    }
  }
}



https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21entity.api.php/function/hook_ENTITY_TYPE_presave/8.2.x

以上
「Drupal8 保存時にHookを使って値を追加したい」でした。

田村 章吾(タムショー)
ましじめ株式会社代表 北九州市在住。 『現場のプロから学ぶ CSSコーディングバイブル』の著者。 CMSを中心としたWeb制作をしています。

ましじめのスキルが必要ですか?

ウェブののましじめ