GDPR(EUの一般データ保護規則)に対応したSiteテーマのカスタマイズ


この記事では、Ver.3.0以降のSiteテーマですでに実装されているCookieの取得と利用に同意するポップアップの使い方について紹介します。

GDPRとは?

GDPRとは、一般データ保護規則(General Data Protection Regulation)の略称です。2018年よりEU(ノルウェー・アイスランド・リヒテンシュタインを加えたEEA)にて施行されました。 明示的な合意のない個人情報の使用を禁止されており、欧州に在住している方の個人情報を取得するためにはウェブサイト訪問者の事前同意が必要です。
GDPRでは、以下のような項目が個人情報に含まれます。

  • 氏名
  • Eメールアドレス
  • 個人の画像・映像・音声
  • GPS・IPアドレス・Cookie識別子

GDPRが適用される対象

GDPRは、EU域内の事業者だけでなくEU域外の事業者にも適用されます。EU内の個人に商品やサービスを提供する場合、世界中のすべてのウェブサイト、会社及び組織に適用されます

Siteテーマでの利用について

この記事では、Siteテーマでは実装しているWebサイトで使用されるCookie識別子の同意及び利用に同意するための仕組みについて紹介します。

デフォルトはオフになっているので、必要であればこの記事を読んで機能をオンにしてください
機能をオンにすると、画面右下にCookieの取得と利用に同意するためのポップアップが表示されます。


画面右下にCookieの取得と利用に同意するためのポップアップが表示されているスクリーンショット

Siteテーマでポップアップを有効にしている様子


主な関連するファイル

  • /include/body-start.html
  • /include/body-start/cookie-consent.html
  • /src/scss/_cookieconsent.scss
  • /admin/blog/field-script.html

使用しているJavaScriptプラグイン

cookieconsentというプラグインを導入しています。


基本的な使い方

  1. 管理画面>ブログ管理の順にページを移動し、「EU購入者のためのデータ収集の有効化」を有効化する(有効化すると、/include/body-start.htmlに記述されている/include/body-start/cookie-consent.htmlが読み込まれます)
  2. クッキーを使用しているJavaScriptのscript要素に type="text/plain"data-cookiecategory="<category>" を追記してください(<category>にはcookie-consent.htmlのtoggleオブジェクトのvalueプロパティと同じ値を設定します)
  3. /include/body-start/cookie-consent.html に制御したいカテゴリーを toggle オブジェクトの value プロパティに追加します

※ Ver.3.0.5以前 に同梱のSiteテーマは、1の工程でさらに/include/body-start.htmlに記述されている/include/body-start/cookie-consent.htmlのコメントアウトを外す必要があります

製品情報のCookieの出しわけ機能に適用する

管理画面>ブログ管理の順にページを移動し、「EU購入者のためのデータ収集の有効化」を有効化してください。
有効化した時点で、製品情報ページで使用しているCookieによるコンテンツの出しわけ機能は閲覧者から同意を得てから実行されるようになります。
(※製品情報のCookieの出しわけのJavaScript自体は/include/head/js.htmlに記述されています)

GAに適用する

管理画面>ブログ管理のページで、Google Analyticsを設定します。

クッキーの同意ポップアップを使用する際は、Google Analytics のコードのscript要素に type="text/plain"data-cookiecategory="<category>" を追記してください( <category> にはcookie-consent.htmlの toggle オブジェクトの value プロパティと同じ値を設定します)。
通常であればJSにもカテゴリーの設定をしますが、cookie-consent.htmlでanalyticsカテゴリーが事前に設定されているので、以下のようにカスタムフィールドに設定します。

記述例)管理画面>ブログ管理のページで、Google Analyticsを設定する

<!-- Global site tag (gtag.js) - Google Analytics -->
<script type="text/plain" data-cookiecategory="analytics" async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script type="text/plain" data-cookiecategory="analytics">
    window.dataLayer = window.dataLayer || [];
    function gtag(){window.dataLayer.push(arguments);}
    gtag('js', new Date());

    gtag('config', 'GA_MEASUREMENT_ID');
</script>

外観

vanilla-cookieconsentを使うと、下記のようなポップアップがページの右下部分に表示されます。



「選択する」リンクをクリックした後の画面


「パフォーマンスと分析のクッキー」のトグルをクリックした後の画面


その他いろいろな設定

スタイルを修正したい

デフォルトではは赤色がプライマリーカラーとなっていますが、CSS(またはSCSS)を調整することで変更可能です。
スタイルを修正したい場合には、site.cssまたは/src/scss/cookie-consent.scssを使って修正してください。

文言を修正したい

文言を修正する時は、/include/body-start/cookie-consent.htmlに書かれているJavaScriptの部分を修正します。
言語ごとのオブジェクトを増やせば多言語対応することも可能です。

訪問者がいつでも設定を変更できるようにする

GDPRの第7条で、同意の撤回は同意を与えるのと同じように、容易なものでなければならないとされています。
以下のボタンをページ内のどこかに設置すれば、いつでも訪問者が設定を変更できます。

<a href="javascript:void(0);" aria-label="View cookie settings" data-cc="c-settings">Cookie Settings</a>

規約を変更したので再度モーダルを表示したい

規約を変更した場合は、revision プロパティの値を変更することで、一度同意した訪問者に再度ポップアップを表示することが可能です。

cc.run({
  .. 省略 ..
  revision: 1,  // default: 0
});

その他詳しい設定について

その他の詳しい設定については公式ドキュメントをご覧ください。


最後に

記事で紹介した内容は a-blog cms zoom up 2022/02 でご紹介する予定です。
ご紹介する内容は実装面が中心になるため本記事とほぼ同じ内容になりますが、ご興味ある方はよければ a-blog cms zoom up のほうもご参加ください。


Ver. 3.0.6 リリースのお知らせ


この記事では、2022年1月27日にリリースした Ver. 3.0.6 の修正内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

Ver. 3.0.6 リリースノート

  • CMS-5847 GoogleMapユニット新規追加時に、JavaScriptが動作せず、位置選択UIが動作しない問題を修正
  • CMS-5845 静的書き出しを改修・不具合修正
  • CMS-5849 エントリーやモジュールのブログ間移動で500エラーが出てしまう問題を修正
  • CMS-5850 リストア時やブログのインポート時にキャッシュがクリアされるように修正
  • CMS-5851 php8.0 で、CSVインポートが実行できない場合がある問題を修正
  • CMS-5854 モジュールIDの引数設定でPHPエラーやラベルが表示されない場合がある不具合を修正
  • CMS-5855 ブログのインポートでモジュールIDのブログ引数の値は変更しないように変更
  • CMS-5857 SiteテーマのGDPR対応をチェックボックスのON/OFFだけでコントロールできるように変更

主なリリースノートの詳細な内容

CMS-5855 ブログのインポートでモジュールIDのブログ引数の値は変更しないように変更

Ver. 3.0.6 以前は、ブログのインポート時に、インポートしたブログのモジュールIDの引数に、インポート先のブログIDと異なるブログIDが指定されていた場合、インポート先のブログIDにモジュールIDの引数を変更するという仕様でした。

しかし、主に開発時などでは、ブログIDの設定をそのままにインポートしたいという場面が多いことをふまえ、ブログのインポート時にモジュールIDの引数にブログIDの指定がされていた場合、インポートしたブログの設定を変更せず、引き継がれるように修正いたしました。

CMS-5857 SiteテーマのGDPR対応をチェックボックスのON/OFFだけでコントロールできるように変更

先日リリースされた、Ver. 3.0.0 から追加された SiteテーマでのGDPR対応のカスタマイズが管理画面のチェックボックスから ON/OFF を簡単に切り替えられるようになりました。

詳細については下記のブログに記載されていますので、GDPR対応にお困りの方は下記のブログをご一読ください。


最後に

この度はご迷惑をおかけしてしまい申し訳ございませんでした。該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。 また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいりますので、よろしくお願いいたします。

オリジナルインストーラーの作り方

site や beginner のテーマからサイトを作り始めるのではなく、自社でベースのテーマ準備しているという方もいらっしゃると聞いています。 そんな方のために、オリジナルのインストーラーの作り方をご紹介します。

標準のインストーラーを確認

setup/bin ディレクトリをチェックしてみると以下の画像のようになります。


site テーマの場合には、site ディレクトリの中に site.yaml と media ディレクトリが存在ます。 その media ディレクトリの中にはインストール後の media ディレクトリと同様に 001 とブログID毎のディレクトリがあり、そこに画像ファイルが格納されています。

site.yaml の準備の仕方は?

管理画面のブログのエクスポート機能を使って(エクスポート)ボタンをクリックしてみてください。


ブログのエクスポート機能を使うことで、上記の bin の中に必要なファイルが入手できる事になります。 実際には、site.yaml ではなく data.yaml というファイル名になっていますが、今後作るオリジナルのテーマインストーラーの名前に後で変更してください。


オリジナルテーマのインストールデータを作成

今回は square というテーマを作る際の準備するファイルをまとめてみます。



bin/square ブログ管理画面からのエクスポートデータ
img/square.jpg テーマのイメージファイル 260x290 px
plugins/ 拡張アプリを同梱したい場合に
themes/square オリジナルのテーマ一式
tpl/install.html インストーラーのHTMLを変更

これらを テーマ名_バージョンや日付.zip のような命名規則で square_202202.zip のように圧縮ファイルを用意します。

簡単セットアップを利用してオリジナルテーマを自動設置

インストール環境を準備するために使われている「簡単セットアップ」ですが、2.11.x までは ionCube Loader や php.ini の設定、PHP のバージョンによって違うパッケージを選択など役割が多くありましたが、3.0 がリリースされインストールパッケージも1つになり、ionCube や php.ini の設定も必要がなくなりました。

そんな「簡単セットアップ」に新しい役目として、オリジナルテーマの自動セットアップする機能を組み込みました。



上記の画面は、リリースされていない準備中の画面になります。

その setup.php のファイルの中に、以下のように設定することで、自動で標準のインストーラーを上書きして特製のインストーラーとして動作するようにできるようになります。

$theme_zip_file = "square_202202.zip"; // (例)

これまでよりもエラーメッセージの表示などを分かりやすいものにして、はじめてインストールする人が困らないようなものに改良を進めていこうと思っております。

実際のオリジナルテーマで用意するデータ

例としては square という近日リリース予定の ECテーマを例にします。 用意するテーマ名のフォルダ square の中には、bin / img / plugin / themes / tpl のフォルダがあります。


bin フォルダ

標準の setup/bin と同じ構成で


img フォルダ

テーマ選択のところで使われる画像 ( 260 x 290 px )を用意します。


tpl フォルダ

インストーラー用の HTML ファイルを置き換えるためのファイルを用意します。


themes フォルダ

sqaure テーマファイル一式を用意します。


plugin フォルダ

そのテーマで利用する拡張アプリも一緒にインストールできます。


詳しくは、square のテーマがリリースされた際の zip ファイルを参考にしてください。

マルチブログインストーラー

最後に、マルチブログのインストールについて紹介しておきます。

現在は、bid:1 のブログのみインストールできますが、自社である程度初期段階の部分を構築済みのテーマを用意しようと思うと、マルチブログ環境になっているものが最初からインストールできたらと考えることでしょう。将来的には、そこもしっかり対応できたらと考えています。

<input name="select_theme" type="radio" value="site[news|lp]"/>

上記の tpl/install.html の中の記述で、select_theme をする際の value に [] で子ブログを設定します。

site[news]とすると、bid:1 = site / bid:2 = news のように子ブログをインストールでき、site[news|lp] とすると、bid:1 = site / bid:2 = news / bid:3 = lp となります。

メディア機能が用意される前から実装されていた機能のようで、現状は、子ブログ自体は作れるが、メディア部分の対応ができておりません。全て media/001 に保存されてしまうようです。 インストーラーの改修をして、より便利に使えるようにしたいと考えています。