---
title: コンテンツの特定項目が更新されたらメールで通知する
description: assign_globalsのSmartyプラグインを使用すると、同一リクエスト中に呼び出されるトリガー間で共有可能なグローバル変数をアサインできます。これにより、コンテンツの更新前後の値を比較可能です。本チュートリアルではassign_globalsの使用例として、コンテンツの特定項目が更新されたらメールで通知する機能を実装してみます。
---

## 概要
`{assign_globals}`のSmartyプラグインを使用すると、同一リクエスト中に呼び出されるトリガー間で共有可能なグローバル変数をアサインできます。  
これにより、コンテンツの更新前後の値を比較可能です。  
本チュートリアルでは`{assign_globals}`の使用例として、コンテンツの特定項目が更新されたらメールで通知する機能を実装してみます。  


### 学べること
以下の手順で、コンテンツの特定項目が更新されたらメールで通知する機能を実装します。

- [コンテンツ定義に項目を設定する](#コンテンツ定義に項目を設定する)
- [カスタム処理を設定する](#カスタム処理を設定する)
- [動作を確認する](#動作を確認する)


## コンテンツ定義に項目を設定する
コンテンツ定義に比較対象となる拡張項目を設定します。  

以下の拡張項目を任意のコンテンツ定義に設定します。  

|項目名|項目設定|
|:--|:--|
|項目名|ステータス|
|Slug|status|
|項目設定|単一選択|
|選択項目|キー:1, 値:1<br/>キー:2, 値:2<br/>キー:3, 値:3|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/15bc6ef8e833c01006b3739df73b372b.png)

コンテンツ定義の準備ができたらテスト用のコンテンツを追加しておきます。  

## カスタム処理を設定する

コンテンツの準備ができたら、カスタム処理を書いていきます。

[オペレーション] -> [カスタム処理]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/45a3b82e8fec3d1ad46a72c0bf8d394b.png)

[追加]をクリックして、「コンテンツの更新前」と、「コンテンツの更新後」のカスタム処理を作成します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/081fc0268e7eb56c48655784102a17d6.png)

### コンテンツの更新前

コンテンツの更新前に動作し、更新前のコンテンツの値をグローバル変数にアサインする処理を書きます。  

|項目|値|
|:--|:--|
|タイトル|capture_before_update_content|
|識別子|capture_before_update_content|
|トリガー|コンテンツの更新前/対象のコンテンツ定義IDを指定|
|処理|以下の内容|

```smarty reference title="capture_before_update_content"
https://github.com/diverta/kuroco-documents/blob/main/sample_code/custom_function/pre-processing/capture_before_update_content.txt
```

![Image from Gyazo](https://t.gyazo.com/teams/diverta/a6ac37e6e54cccf24dc16614986649f5.png)

入力ができたら[追加する]をクリックしてカスタム処理を追加します。

### コンテンツの更新後

コンテンツの更新後に動作し、更新後の値と、グローバル変数にアサインした更新前の値を比較して、変更があった場合は通知メールを送信する処理を書きます。

|項目|値|
|:--|:--|
|タイトル|compare_before_and_after_content|
|識別子|compare_before_and_after_content|
|トリガー|コンテンツの更新後/対象のコンテンツ定義IDを指定|
|処理|以下の内容|

```smarty reference title="compare_before_and_after_content"
https://github.com/diverta/kuroco-documents/blob/main/sample_code/custom_function/post-processing/compare_before_and_after_content.txt
```

:::caution
`to='test@example.com'`の部分はご自身の通知先に変更してください。
:::

![Image from Gyazo](https://t.gyazo.com/teams/diverta/0bcc8de8d4e6bd733711e14663b601ae.png)

入力ができたら[追加する]をクリックしてカスタム処理を追加します。

## 動作を確認する

テスト用に追加したコンテンツのステータスの項目を更新すると、以下のように更新前後の値が通知されます。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/122a8706c07c5b713a84f37bce98d043.png)

## 関連ドキュメント
- [カスタム処理に利用できるトリガと変数の一覧](/ja/docs/reference/trigger-variables/)
- [Smartyプラグイン](/ja/docs/reference/smarty-plugin/)