a-blog cmsで、特定のファイルを会員限定で閲覧できる機能を作ってみました

※当ページのリンクには広告が含まれています


こちらは、a-blog cms Advent Calendar 2016の13日目のエントリーです。a-blog cmsの秋合宿で発表させていただいた内容です。画像やソースの説明を少し詳しく解説しています。

最近、ノウハウなどのファイルを会員限定でダウンロードできるサイトを見かけるようになりました。
会員登録を促す目的、アクセス解析に活かす目的などいろいろあると思います。
そういう時に使えるカスタマイズを今回はご紹介します。

上の図のように、誰でもアクセスできるファイルと、会員(ログイン時)のみアクセスできるファイルが混在している場合を考えていきます。

こういう機能を実装します



「会員限定」アイコンのついているリンクをクリックすると、ファイルは開かずにログイン画面に移動します。
そこでログインするとログイン前のページに戻り、「会員限定」アイコンが消えた状態のリンクをクリックすると、ファイルがダウンロードできます。

a-blog cmsの「シークレットブログ機能」では実現が難しい



a-blog cmsでは、元々備わっている機能として「シークレットブログ」という機能があります。

管理画面→ブログ画面の「ステータス」を「シークレット」とすることで、その設定を行ったブログはログイン時のみ閲覧できるというものです。

ただ、この場合は指定したブログまるごとログインしていないときは見られないので、エントリー自体も表示されません。
できれば、どんなファイルがダウンロードできるかも見せて、ユーザーに「見たい」と思ってもらいたいですよね。

今回実装する機能

機能の概要は、大まかに以下のようになります。

  • エントリー(記事)自体は全体に公開
  • ファイルは会員限定と公開の
  • 両パターンが存在
  • 限定ファイルは、未ログイン時はログインページ
  • に誘導、ログイン時はファイルにリンク
  • 会員限定ファイルは複数ブログで使用する場合も考慮する

実装方法

実装方法は以下の図のように、誰でも見られるファイルは「ファイル」ユニットを、会員限定ファイルは「メディア」ユニットを使います。
使用するユニットを分ける理由は、ファイルユニットとメディアユニットで、保存される場所が別になるためです。会員限定ファイルが保存される/media/フォルダに検索避けの設定をすることが可能になります。

※この方法では、会員限定ファイルのアドレスが分かる場合はアクセスできてしまいます。
 完全に非公開にしたい場合は、別途アクセス制限をかける等が必要です。



  • 会員限定ファイルは「メディア」ユニットでアップ、
  • 限定以外のファイルは「ファイル」ユニットでアップ
  • unit.htmlの「メディア」部分を、ログイン時と
  • そうでない時で処理を分ける
  • /media/フォルダ内はrobots.txtで検索禁止に

unit.htmlの「メディア」部分を、ログイン時と
そうでない時で処理を分ける方法

include/unit.htmlをテーマフォルダに複製

system/include/unit.htmlをコピーして、テーマフォルダの中に複製します。 その複製したファイルに対して変更を行っていきます。

unit.htmlのメディアユニット部分を書き換え

メディアユニット部分を以下のように書き換えます。

書き換え前(90行目あたり)
<!-- BEGIN type#file -->
<a href="%{HTTP_ROOT}{path}"><!-- BEGIN_IF [{thumbnail}/nem/] -->
<img class="columnIcon" src="%{HTTP_ARCHIVES_DIR}{thumbnail}" alt="ファイルを開く" width="{x}" height="{y}"><!-- ELSE -->
<img class="columnIcon" src="%{ROOT_DIR}{icon}" alt="ファイルを開く" width="{x}" height="{y}"><!-- END_IF -->
</a><!-- BEGIN caption:veil -->
<p class="caption">{caption}</p><!-- END caption:veil --><!-- BEGIN text:veil -->
<p class="">{text}</p><!-- END text:veil -->
<!-- END type#file -->
書き換え後
<!-- BEGIN type#file -->
<!-- BEGIN_IF [%{SESSION_USER_ID}/nem/] -->
<a href="%{HTTP_ROOT}{path}" class="fileicon fileicon--{icon}[split('/', 4)|trim4ext('.gif')] type{attr}">{caption}[raw]</a>
<!-- ELSE  -->
<a href="login/" class="fileicon fileicon--{icon}[split('/', 4)|trim4ext('.gif')] type{attr}">{caption}[raw]<span class="icon-lock"><i class="fa fa-lock" aria-hidden="true"></i> 会員限定</span></a>
<!-- END_IF -->
<!-- END type#file -->

※この例は、アイコンにFont Awesomeを使用しています。導入方法は
 a-blog cmsのファイルアイコンにFont Awesomeを使ってみるを参考にしてください。

ログイン前のURLに戻る方法

基本的には上記のコピーで問題ないのですが、1つ便利な機能があるのでご紹介します。



ダウンロードしたい会員限定ファイルがあるのでログインしても、ログイン後にトップページに戻ってしまうと、またファイルのあるページに移動するのは面倒です。
a-blog cmsでは、エントリーURLの後ろに/login/を付けると、ログイン後にトップページに戻らずに、元々見ていたエントリーページに戻ることができます。

会員限定機能の使い方

今回は、ファイルを会員限定で見せるという方法をご紹介しました。

この他にも、工務店等のサイトであれば、施工事例の写真を3枚までは拡大表示できるけど、4枚目以降を拡大表示する場合は会員登録を促す、などのカスタマイズもできそうです。
適切に限定コンテンツを使って、マーケティングや解析等に役立ててください。


関連記事

この記事のハッシュタグ から関連する記事を表示しています。

a-blog cmsで、PR付きの検索結果を実装する

a-blog cmsでサイト構築時・公開時に確認しておきたいチェックリスト 2018年版

カレンダー表示の月送りをページ遷移せずに実装

a-blog cms Training Camp 2016 OKINAWA に参加しました

a-blog cmsのファイルアイコンにFont Awesomeを使ってみる

a-blog cms Training Camp 2015 Springに参加しました!

レスポンシブと最適化のいいとこどりができる?a-blog cmsでできる、マルチデバイス対応

Webridge Meeting SP17 で a-blog cmsのマルチデバイス対応についてお話しました

a-blog cmsでサイトを作成した際の、制作時・公開時・納品後のチェックリスト

a-blog cms 勉強会 in 高松 2012/07

ウェブ解析士マスター /上級SNSマネージャー/ a-blog cmsエバンジェリスト

香川県生まれ。1998年からウェブ制作に取り組む。制作会社にて企業・ECサイトのデザイン、ディレクション、CMS構築等を担当後、2015年7月に独立。

デジタルマーケティング・ウェブコンサルティング、UI、UX設計を主軸に戦略から考えるウェブサイト設計・構築を行う。

趣味は和太鼓演奏。香川県三豊市で活動する「和太鼓集団 響屋」メンバー。実家の桃農家も手伝う兼業農家。

最新記事

カテゴリー

アーカイブ

ハッシュタグ

【初心者向けから応用まで】
GA4を学ぶならこの本がオススメ