Tuesday, August 25, 2020

Liferayテーブルを見てみよう〜サイト情報編

こんにちはナクラです。

前回はユーザの情報についてみましたが、
今回はサイトに関連する情報についてみていきましょう。
LiferayではいくつかのWebページをまとめてサイトを構成しています。
表示しているサイトに関する情報はコントロールパネルのサイトのセクションで確認できます。
サイトのセクションでは、サイトの所属するユーザの情報や、
サイト内のWebコンテンツやWiki、ドキュメントなどの情報を確認することができます。
特にサイト自体についての設定情報は
「設定」> 「サイトの設定」になります。

サイト設定では4つタブがあります。

・共通
・ソーシャル
・言語
・詳細設定

それぞれ見ていきましょう。


1.共通タブ

共通タブの画面はこのようになっています。




この画面の設定項目の大半はサイト情報のメインのデータであるGroup_テーブルに含まれている情報です。
(このテーブルも最後に"_"がついてます。)
サイトなのにGroup_という名前になっているので、注意してください。
実は、Group_テーブルには、この記事で取り扱っている"サイト"以外にも
いろいろな"サイト"的なものを登録するテーブルになっていて、
"サイト"自体は、Group_の一部という取扱いになっています。
Group_テーブルの定義は、前回でも確認しましたが、以下のようになっています。
Group_テーブル
+-------------------------------------+------------------+---------+---------+----------+-------+
| Field                                     | Type              | Null     | Key    | Default | Extra |
+-------------------------------------+------------------+---------+---------+----------+-------+
| mvccVersion                        | bigint(20)        | NO     |           | 0           |          |
| uuid_                                    | varchar(75)    | YES   | MUL   | NULL    |          |
| groupId                                 | bigint(20)       | NO     | PRI     | NULL   |          |
| companyId                           | bigint(20)        | YES  | MUL    | NULL   |          |
| creatorUserId                       | bigint(20)        | YES  |            | NULL   |          |
| classNameId                        | bigint(20)        | YES  | MUL    | NULL   |          |
| classPK                                | bigint(20)        | YES  |            | NULL   |          |
| parentGroupId                      | bigint(20)        | YES  |            | NULL    |         |
| liveGroupId                           | bigint(20)        | YES  | MUL   | NULL   |          |
| treePath                                | longtext          | YES  |            | NULL   |          |
| groupKey                              | varchar(150)  | YES  |            | NULL   |          |
| name                                     | longtext         | YES  |             | NULL   |         |
| description                            | longtext          | YES  |            | NULL    |         |
| type_                                     | int(11)            | YES  | MUL    | NULL    |         |
| typeSettings                          | longtext         | YES  |             | NULL    |         |
| manualMembership              | tinyint(4)        | YES  |             | NULL    |         |
| membershipRestriction         | int(11)            | YES  |            | NULL    |          |
| friendlyURL                           | varchar(255)  | YES  |            | NULL    |          |
| site                                        | tinyint(4)         | YES  |            | NULL    |          |
| remoteStagingGroupCount   | int(11)            | YES  |            | NULL    |          |
| inheritContent                        | tinyint(4)        | YES  |            | NULL    |          |
| active_                                   | tinyint(4)        | YES  |            | NULL    |          |
+--------------------------------------+------------------+-------+----------+-----------+--------+

さて、共通タブの項目とデータベースでの設定値との対応についてみていきましょう。

●詳細セクション
・サイトID:groupIdカラム
この値がサイトのプライマリキーになります。 
・説明: descriptionカラム
・メンバーシップタイプ:type_カラム
各設定に対応する値は下記のようになります。
公開
制限付き 2
非公開 3
・手動メンバーシップ管理を許可する:manualMembershipカラム
対応する値は
はい 1
いいえ 2
・親サイト:parentGroupIdカラム 
親サイトを指定した場合は親サイトのサイトID(groupIdカラムの値)が入ります。

●ページセクション

・公開ページ、非公開ページ
ページが存在する場合は、公開ページと非公開ページへのリンクが表示されます。
ページが存在しない場合は、サイトテンプレートを指定できるようになっていて、
それで保存すると、サイトテンプレートに従ってページが作成されます。
ページとサイトの関係については、後日詳しくみることにしましょう。

●カテゴリの設定セクション

・タグ
この設定値はAssetEntries_AssetTagsテーブルに登録されます。
入力したタグが生成されて、tagIdを割り当てらます。
サイトに対しては、アセットとしてみた場合のentryIdが割り当てられており、それを使ってタグとの関連情報が登録されます。
AssetEntries_AssetTagsテーブル
+---------------+-------------+------+-------+-----------+-------+
| Field           | Type        | Null | Key   | Default | Extra |
+---------------+-------------+------+-------+-----------+-------+
| companyId | bigint(20) | NO  | MUL | NULL    |          |
| entryId        | bigint(20) | NO  | PRI  | NULL    |          |
| tagId           | bigint(20) | NO  | PRI  | NULL    |          |
+---------------+-------------+------+-------+-----------+-------+
アセットの情報については
AssetEntryテーブルで確認できます。

●サイトURLセクション

・フレンドリURL:friendlyURLカラム
サイト作成時にはサイト名からfriendlyURLは自動生成されますが、
この設定で変更することができます。
・バーチャルホストの公開ページと非公開ページ
この設定値はVirtualHostテーブルに登録されます。
VirtualHostテーブル
+-----------------+------------------+-------+------+-----------+-------+
| Field             | Type              | Null  | Key  | Default | Extra |
+-----------------+------------------+-------+------+-----------+-------+
| mvccVersion | bigint(20)      | NO    |        | 0           |          |
| virtualHostId | bigint(20)       | NO   | PRI  | NULL    |         |
| companyId   | bigint(20)       | YES | MUL | NULL    |         |
| layoutSetId   | bigint(20)       | YES |         | NULL    |         |
| hostname     | varchar(200)  | YES | UNI  | NULL   |          |
+-----------------+------------------+-------+-------+----------+-------+
layoutSetIdカラムの値がサイトの公開ページセットのIDおよび非公開ページセットのIDになっており、
hostnameカラムに設定した値が登録されます。

以下の項目はいずれもtypeSettingsカラムで登録されます。
・ディレクトリのインデックスを有効にする
・このサイトでアセットの自動タグ付けを有効にする
・共有
それぞれの設定方法は次のとおりです。
directoryIndexingEnabled=false   
assetAutoTaggingEnabled=true
sharingEnabled=true 


2.ソーシャルタブ

ソーシャルタブの画面はこのようになっています。



●評価セクション

ここでは、サイトのコンテンツの評価方法を設定できます。
項目とデータベースの設定値との対応は以下の様になっています。
「高評価」:like
「スター(縦方向)」:stacked-stars
「スター」:stars
「評価」:thumbs
それぞれの設定情報は
Group_テーブルのtypeSettingsカラムに以下のようなに登録されます。
com.liferay.blogs.model.BlogsEntry_RatingsType=stars
com.liferay.document.library.kernel.model.DLFileEntry_RatingsType=thumbs
com.liferay.journal.model.JournalArticle_RatingsType=thumbs
com.liferay.knowledge.base.model.KBArticle_RatingsType=stacked-stars
com.liferay.message.boards.model.MBDiscussion_RatingsType=like
com.liferay.wiki.model.WikiPage_RatingsType=thumbs

●コメントセクション

・他ユーザーへのメンションを許可する。
これの設定も、typeSettingsカラムで下記のように登録されます。
mentionsEnabled=true


3.言語タブ

言語タブの画面はこのようになっています。


ここでは、サイトのデフォルト言語と切り替え可能な言語を設定できます。
「デフォルト言語オプションを使用します」のラジオボタンが選択されている場合は、
インスタンス設定の"ローカライズ"で設定されている項目が引き継がれます。
「このサイトでのデフォルトの言語と指定可能な言語を定義してください」にラジオボタンを変更すると
デフォルト言語と選択可能が言語の設定が行えます。
ここの部分の設定情報でデータベースでは、
Group_テーブルのtypeSettingsカラムに登録されます。
まず、ラジオボタンの情報が
inheritLocales=true
のような形で設定されています。
「デフォルト言語オプションを使用します」を選択している場合は true
「このサイトでのデフォルトの言語と指定可能な言語を定義してください」を選択している場合は false
になります。
デフォルトの言語は
languageId=en_US
利用可能な言語は
locales=en_US,nl_NL,ja_JP
のように登録されています。
ただし、この設定情報は「デフォルト言語オプションを使用します」を選択すると
初期設定に戻ってしまうのでラジオボタンを戻したときにまた、一から選択しなおす必要があるので注意してください。


4.詳細設定タブ

詳細設定タブの画面はこのようになっています。



このタブの設定項目は全てtypeSettingsカラムに登録されます。
項目と登録方法を一緒に確認していきましょう。

●デフォルトの関連付けセクション

・サイトロール」
defaultSiteRoleIds=34520
・チーム
defaultTeamIds=37534

●分析セクション

・Google アナリティクスID
googleAnalyticsId=XXXXXX
・Piwik
analytics_piwik=XXXXXXX

●地図セクション

・OpenStreetMap
MAP_PROVIDER_KEY=OpenStreetMap
・Google マップおよび「Google Maps API キー (オプション)」
MAP_PROVIDER_KEY=GoogleMaps
googleMapsAPIKey=XXXXXXXX
ラジオボタンでの設定なので
MAP_PROVIDER_KEYはどちらか一方が登録されます。

●ゴミ箱セクション

・ゴミ箱を有効にする
trashEnabled=true
・ゴミ箱内エントリーの最大保存日数
trashEntriesMaxAge=43200

●コンテンツセクション

・このサイトから子サイトの内容を表示できるようにする。
contentSharingWithChildrenEnabled=-1
値については以下のようになっています。
デフォルト値(有効):-1
有効:3
無効:0

まとめ

今回はサイト設定の項目とデータベースとの対応を確認しました。
サイトの情報は比較的Group_テーブルにまとまって登録されています。
特にtypeSettingsカラムに、サイトに固有のさまざまな設定値が登録されます。
また、一部はAssetEntries_AssetTagsテーブルやVirtualHostテーブルにも登録されているデータがありました。

それではまた、次回は別の設定項目を見ていきたいと思います。




No comments: