マルチブログ環境でのトピックパスの設定

site2014テーマで子ブログを作成しても子ブログを含んだ状態でトピックパスを表示するような設定をしてみましょう。既に「Topicpathモジュール」はモジュールIDの設定がしてあります。

マルチブログ環境でのトピックパスとは

ブログが階層化していても下階層の子ブログを閲覧しているときトピックパスが一番上のブログから開始していることを指しています。トピックパスをマルチブログ環境に対応していないと子ブログを起点に表示されてしまいます。

マルチブログ環境に対応している(親ブログが起点)

親ブログ名 > 子ブログ名 > 親カテゴリー名 > 子カテゴリー名 > エントリー名

マルチブログ環境に対応していない(子ブログが起点)

子ブログ名 > 親カテゴリー名 > 子カテゴリー名 > エントリー名

マルチブログ環境に対応させるには

まず、「Topicpathモジュール」にモジュールIDの設定してモジュールIDを作成しましょう。
モジュールIDの設定で「下の階層のブログが利用することを許可する 」にチェックをしてください。
カテゴリーID(cid)エントリーID(eid)の引数にチェックがあるか確認しましょう。引数にチェックが無いとエントリーの詳細ページなどでトピックパスが正しく表示されません。


階層のブログ「下階層のブログも含める ( descendant-or-self )」、カテゴリー「下階層のカテゴリーも含める ( descendant-or-self )」に設定しましょう。


モジュールの表示設定

ブログの階層の起点「ルート」、階層の数を空、カテゴリーの階層の起点「ルート」、階層の数を空にしてください。そうすることで全ての階層を上から表示することができます。
また、起点の代替ラベルを設定すると一番上の親ブログを「HOME」のような名称で表示することができます。



entry.htmlが404 NotFoundになるケース

ライセンスやユーザー権限、テンプレート設定などにも問題が見当たらないのに
http://ドメイン名/entry.html が404 Not Foundになるケースが報告されました。

原因

entry.html.LCK ファイルがhttpdocsの直下に存在しているのが原因でした。
LCKファイルとはAdobe DreamWeaverでチェックイン・チェックアウトのファイル編集時のロック機能を利用した場合に自動作成されるファイルです。

モジュールIDの設定

指定方法としては、テンプレート上のモジュールの BEGIN_MODULE モジュール名の後に id="モジュールID" のように指定をします。以下、Entry_Headlineに対して設定した場合で説明します。

<!-- BEGIN_MODULE Entry_Headline id="top_headline" -->
<ul>
<!-- BEGIN entry:loop -->
<li><a href="{url}">{title}</a></li>
<!-- END entry:loop -->
</ul>
<!-- END_MODULE Entry_Headline-->

モジュールID管理画面から[モジュールIDを作成]ボタンを押すとモジュールIDの条件設定画面に移動します。モジュールではIDを指定したモジュールを選択してください。idには「top_headline」など指定したIDを入力してください。名前はそのモジュールIDがどんな働きをしているのか分かりやすい名前にするとよいでしょう。


下階層の子ブログでもこのモジュールを利用できるようにする

グローバルの項目で下の階層のブログが利用することを許可するというチェックをすると自分より下階層の子ブログで同じモジュールIDをテンプレートに記述すると継承して使うことができます。ここにチェックを入れない場合はこのモジュールはこのブログだけに所属することになり、下階層の子ブログで使うことができません。

条件を指定する

引数にはブログID、カテゴリーID、エントリーID、ユーザーID、タグ、キーワード、カスタムフィールドなどさまざまな条件を指定することができます。

特定のカテゴリーで絞り込む

お知らせカテゴリーの一覧を表示したいときは、お知らせカテゴリーのIDを指定します。もしお知らせカテゴリーのカテゴリーIDが3の場合、入力フォームに3と入力してください。またID参照というリンクをクリックするとブログ、カテゴリー、ユーザーのIDを調べて選択するとIDを調べることができます。



特定のカスタムフィールドの値を持っているエントリーを表示する

特定のカスタムフィールドを持っているエントリーを一覧で表示することができます。

チェックボックスのカスタムフィールド(カスタムフィールド変数:pickup、値:true)でチェックしたエントリーだけ表示させる場合は、フィールド(field)のところに pickup/true と入力してください。(カスタムフィールド変数:pickup、値:true)を持っているエントリーのみ表示できます。

<label class="acms-form-checkbox" for="input-pickup-true"><input type="checkbox" name="pickup[]" value="true" id="input-pickup-true"{pickup:checked#true} /><i class="acms-ico-checkbox"></i> pickupする</label>
<input type="hidden" name="field[]" value="pickup" />


また演算子もエントリーの絞り込みに利用できます。 例えば、nem(値が空でないとき)を使うことで、pickupというカスタムフィールドに値が入っている場合にのみエントリーを表示することができます。 このフィールドで使用出来る演算子として以下のものがあります。

演算子条件意味
eq=等しい
neq!=等しくない
gt>より大きい
gte>=以上
lt<より小さい
lte<=以下
lkLIKE含まれる
nlkNOT LIKE含まれない
reREGEXP指定した正規表現に合致する
nreNOT REGEXP指定した正規表現に合致しない
emEMPTY値が空(何も入っていない)
nemNOT EMPTY値が空(何も入っていない)ではない

また、_or_ や _and_ といった演算子も使用可能です。
例えば、toho(徒歩)6分以下でprice(家賃)50000円以下の物件を表示したい場合は以下のような値がフィールドに入ります。
toho/lte/6/_and_/price/lte/50000

特定の日時のエントリーを表示させる

開始日時(start)や終了日時(end)に年月日と時分秒を入れて特定の期間内に該当するエントリーを表示させることができます。応用として、値の欄にグローバル変数を使うことで現在時刻を基準とした制御をすることもできます。この条件ではエントリーの日時を参照します。



下階層のデータを絞り込み

自分より下階層のブログやカテゴリーのデータも表示内容に含めるか選択することができます。

  • 下階層のブログを含めない場合は、自分自身のエントリーだけ表示します。
  • 下階層のブログも含める場合は、自分自身と下階層のブログのエントリーを含んだ内容を表示します。
  • 下階層のブログのみを対象とする場合は、自分の下階層のブログのエントリーだけ表示します。

MailChimp との連携機能


MailChimpとはマーケティングオートメーションツールで顧客に応じてメールマガジンを送ったりすることができます。

カスタマイズ

今回のハンズオンではsimple2017のお問い合わせフォームで登録された内容をMailChimpのリスト上に保存しましょう。

下準備

以下の3つのステップでa-blog cmsとMailChimpを連携します。

  1. MailChimpへの登録
  2. API key の取得
  3. a-blog cmsの拡張アプリ MailChimp にApi Keyを登録

1. MailChimpへの登録

MailChimpのアカウントをお持ちでない方はまずはMailChimpに登録してみましょう。無料で始めることができます。

2. API key の取得

下記のURLにて認証トークンを発行できます。 https://us8.admin.mailchimp.com/account/api/ 下の図のように「Create A Key」というボタンをクリックするとAPI keyが発行できるのでこのkeyを覚えておきましょう。


3. a-blog cmsの拡張アプリ MailChimpにAPI key を登録

管理ページ > 拡張アプリ より「拡張アプリ管理」のページに移動します。そのページより下の図のようにMailChimpをインストールします。


インストール完了後は、管理ページ > MailChimp よりMailChimpの管理ページに移動します。その後、「認証トークンの設定」という項目がありますので、その項目に先ほど覚えておいたAPI keyを入力します。 これでa-blog cmsとMailChimpを連携させる準備は整いました。

注意

config.server.phpでHOOKを有効にしておく必要があります。

define('HOOK_ENABLE', 1);

拡張アプリ MailChimpの使い方

  1. Formの権限設定
  2. MailChimpのカスタムフィールドの設定

1. Formの権限設定

フォームIDごとに、MailChimpのどのリストに対してInsert(データの挿入)及びUpdate(データの更新)ができるかを設定できます。例えば、下の画像の場合、フォームIDがcontactFormのフォームは、5124628dadのリストidに対して、Insert(データの挿入)及びUpdate(データの更新)ができるということになります。


2. MailChimpのカスタムフィールドの設定

次は、カスタムフィールドの設定です。ここではa-blog cmsのフォーム側の変数とMailChimp側のカスタムフィールドの紐付けを行います。例えば、一番最初の列では、emailの項目は、MailChimp側のリスト(5124628dad)のemail_addressに対応しています。


なお ListId を調べるにはMailChimpのリスト一覧ページ に移動し、下の画像のように下矢印のアイコンからメニューを表示し「Settings」をクリックして設定画面へ移動します。


そのページの一番下でリストIDが確認できます。



課題

simple2017のお問い合わせフォームから送信された内容をMailChimpの任意のリストに登録してみましょう。その時、メールアドレス(email_address)名前(FNAME)苗字(LNAME)が登録されるものとします。

ヒント

以下のようなHTMLをフォームに設置しておくことで、フォームから値が送信された段階で、送信者のメールアドレスに対して、MailChimpの「定期購読」のステータスが自動でONになります。

<input type="hidden" name="status" value="subscribed">
<input type="hidden" name="field[]" value="status">

サイトが表示されない、403エラーになってしまう

  • a-blog cmsをインストールしたけど、サイトが表示されないまたは、403エラーになってしまう場合は、設置先サーバーにindex.phpファイルが置いてあるかご確認ください。
  • 非公開状態のエントリーにアクセスしたときにログインしていないと403エラーになります。
  • またログアウトした状態で管理ページにアクセスすると403エラーになります。