【ServiceNow】Service Portalのヘッダーとフッターの作成

# はじめに
ServiceNowの個人開発環境でポータルを作ってヘッダーとフッターの作成もしてみました。
**「ポータル作成ってどんな機能あるの？」「ヘッダーとフッターってどうやって付けるの？」** となったので作成のメモを残しておきます。

# 環境
* 個人用開発インスタンス（PDI）
* バージョン：Utah
* 権限：admin
PDI作成方法は下記ページなどご参照ください
参考：[[ServiceNow]10分で掴む! Utah版の開発インスタンス(PDI)の作成](https://nowlibrary.com/function-create-utah/)

# ポータル作成機能の整理
ポータル作成は**Service Portal Configuration**で行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/8aaea3c9-2052-f574-9292-6dad388b020e.png)

Service Portal Configurationには主に下記の機能があります
<table>
  <caption></caption>
  <thead>
    <tr>
      <th>機能</th> <th>内容</th>
    </tr>
  </thead>
  <tr>
    <td>Branding Editor</td> <td>CSS style設定。タイトル、ロゴ、テーマカラーのカスタマイズ</td>
  </tr>
  <tr>
    <td>Designer</td> <td>ウィジェットのレイアウトをドラック＆ドロップで作成</td>
  </tr>
　<tr>
    <td> Page Editor </td> <td>ページの詳細設定</td>
  </tr> 
  <tr>
    <td>Widget Editor</td> <td>既存ウィジェットのカスタマイズとオリジナルウィジェットの作成</td>
  </tr>
　<tr>
    <td>New Portal </td> <td>ポータルの新規作成</td>
  </tr>
  <tr>
    <td>Portal Table</td> <td>ポータルのテーブル情報を編集</td>
  </tr>
</table>

ポータルの新規作成方法については下記ページなどをご参照ください。
参考： [【ServiceNow】Service Portalの作成](https://qiita.com/shin_wn/items/3197bcff5020a3b638e8)

ポータルの作成ができましたが、ヘッダーとフッターがなくて少し寂しいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/12f51bbc-c5cf-e857-d926-e205554cc9a7.png)

ヘッダーにあるPortal Tableから「ヘッダーとフッターの追加作業」をしていきたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/f8fe726b-cd23-50c4-53ca-e1a5cb749b68.png)

# ヘッダーフッターの作成とポータルへの追加

今回実施した内容は以下です
* 既存ヘッダーを編集し、ヘッダーのアイテム一覧に「Knowledge」と「My Request」を追加
* 編集したヘッダーと既存フッターのポータルへの追加
（フッターは編集していません）

手順は以下です
**1.Portal Tableから「Header|Footer」を選択**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/4a9446fc-8cf7-62ba-e58f-73942c6570a2.png)

**2.Stock Headerを選択して「Clone Widget」を選択**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/ed3d8808-211b-615b-af34-b0cf99419cb8.png)
既存ヘッダーはPackageが指定されており編集できませんでした。クローンしたものはPackageがGlobalになり編集可能になります。今回はStock Headerをクローンし、既存テンプレから少し追加をしたいと思います。

**3.ヘッダーを編集**
クローンしたものを「Stock Header_edited」に名前変更しました。
Body HTML templateを選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/442d68a8-fed0-8493-5659-f353e28e6945.png)
Body HTML templateの27行目当たりに以下のリストを加えてSaveします。
**xxxxxx** の部分は各々の開発インスタンス名になります。
```html:index.html
<li role="presentation">
    <a href="https://xxxxxx.service-now.com/testp?id=kb_view" role="menuitem">Knowledge</a>
</li>
<li role="presentation">
    <a href="https://xxxxxx.service-now.com/testp?id=requests" role="menuitem">My Request</a>
</li>
```

**4.Portal Tableから「Theme」を選択**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/32188dde-71f6-7554-27f7-5d7504e7e26c.png)

**5.Themeを新規作成し、ヘッダーとフッターを選択**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/194ac0a7-1518-c629-ecb5-5b6c0e6b8785.png)
Newをクリックし、テーマ名を記入（今回はTest Theme）
Headerで先ほど作成した「Stock Header_edited」を選択。Footerは既存の「Sample_Footer」を選択しSave。

**6.ポータルへ追加**
ヘッダーの「Portals」から作成したポータル名を選択（今回は「Test Portal」）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/fd988e25-d266-f84b-29ff-293ce2a1a62a.png)


Themeから先ほど作成したTest Themeを選択しSaveをクリック 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/3e040544-f575-f85a-8f49-a0c0ae453a51.png)

無事に「Knowledge」と「My Request」がヘッダーに追加され、フッターも表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556511/3b3abd52-3533-9004-64d6-4489bc3d6062.png)




# おわりに
今回はServiceNowポータルについて学ぶきっかけがあったのでまとめてみました。
ServiceNowは機能が豊富が故にわたしは迷子になりがちですが、整理してみると良く出来ていてわかりやすいなと思いました。今後もServiceNowの実装で学びがありましたら、まとめていきたいと思います。

ここまで読んでいただけた方はぜひ**いいね**と**ストック**よろしくお願いします。



参考文献：
* [[ServiceNow]10分で掴む! Utah版の開発インスタンス(PDI)の作成](https://nowlibrary.com/function-create-utah/)
* [【ServiceNow】Service Portalの作成](https://qiita.com/shin_wn/items/3197bcff5020a3b638e8)
* [ServiceNow 公式Docs](https://docs.servicenow.com/ja-JP/bundle/utah-platform-user-interface/page/build/service-portal/task/create-a-portal.html)