概要
クリエイティブファイルと設定ファイルの2つを使用して、ランディングページを作成するフルスクラッチのアプリケーションとなります。
例:
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/
環境
- サーバー環境
エックスサーバー(スタンダードプラン)
※SSH接続でgitの使用可能
参考:Laravelをエックスサーバー(Xserver)にデプロイしよう! - フレームワーク
Laravel 10 - データベース
MariaDB 10.5 - 本番環境
https://cev.macchialabel.com/ - デモ環境
https://st2.macchialabel.com/
※本番環境とデモ環境では一部ファイルの内容が異なるため、
全てのファイルが同一内容では無いという事を認識しておいてください。
要件定義書
アプリケーションの仕様についてまとめた定義書となります。
アプリケーションの構造については、下記定義書にてご確認ください。
E:\共有ドライブ\02.コンサル・制作事業\02.進行中案件\36.JIMOS様\02.MAC マキアレイベル\202308ddフェーズ2prj\参考資料\基本設計書『フェーズ2phpアプリケーション作成』 _240222.xlsx
アプリケーションの構造
laravelのフレームワークとしての仕組みに関する詳細は割愛させていただきますが、
大雑把な仕組みとして、下記の2種類のファイルでページが作成されてます。
- コントローラー(controller.php)
→アプリケーションのロジックについて記述するファイル
※裏側で実行されるシステム部分 - ブレード(blade.php)
→フロントに表示される内容を記述するファイル
※html要素など
クライアントからの依頼
JMC(ジモス メディアクリエイト部門)から来る
LP制作に関連する作業依頼は下記の4種類のいずれかとなります。
① LPのコピー
② リダイレクトの設定
③ 商品設定ファイルの編集
④ サンクスメールの追加、編集
バックログの依頼ごとに下記ディレクトリにフォルダを作成して、
先方から支給された資料等を残しておいてください。
E:\共有ドライブ\02.コンサル・制作事業\02.進行中案件\36.JIMOS様\05.JMC メディクリ\MAC マキアレイベル\00.LP展開
① LPのコピー
基本的に既存のLPをコピーして、別URLとして新しいLPページを作成するという作業内容となります。
LPページは下図①②のファイル群で構成されてます。
そのため、既存LPページの①②のファイル群を取得して、
「キャンペーンディレクトリ①」に該当するディレクトリ名を
指定された新しいLPの名称に変更してアップすればLPのコピーは完了です。
基本的にコピーしているので差分等は発生しない想定ですが、
予想していないエラー(ファイルコピー時のエラーや破損など)が発生している
可能性もあるため、念のため実際にテスト注文を入れて、
コピー元のLPと差分が発生していないか確認してください。
※ページの崩れや、注文確認メールの内容など

テストページ
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test
上記のページであれば、下記の2つのディレクトリ内のファイルで作成されてます。
① Laravelファイル(htmlのDOMや、LPページで購入させる商品情報ファイル)
/macchialabel.com/phase2/resources/views/ad/ls_8fsp8_5_kta_up_tei_gp3_test
② メディアファイル(画像やCSS、JSなど)
/macchialabel.com/phase2/public/ad/ls_8fsp8_5_kta_up_tei_gp3_test
② リダイレクトの設定
リダイレクトの設定は下記ファイルにて制御してます。
※全ページの関連するファイルのため、タグ欠け等には注意してください。
下記ファイルでエラーが起きると全てのページが閲覧不可になる可能性がございます。
/macchialabel.com/phase2/routes/web.php
リダイレクトを追加する時は、上記のファイルに下記のコードを適宜変更して追加してください。
Route::get('リダイレクト元の相対パス', function (Request $request) {
return LPRedirectHelper::redirectWithQueryString('リダイレクト元の相対パス', 'リダイレクト先の相対パス', $request);
});
例:
リダイレクト元:https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3/
リダイレクト先:https://cev.macchialabel.com/ad/mbl_ya_s_89_teu_2_fm/
Route::get('/ad/ls_8fsp8_5_kta_up_tei_gp3', function (Request $request) {
return LPRedirectHelper::redirectWithQueryString('/ad/ls_8fsp8_5_kta_up_tei_gp3', '/ad/mbl_ya_s_89_teu_2_fm', $request);
});
③ 商品設定ファイルの編集
先方からエクセルで商品IDや商品名が記載されたファイルが提供されるので、
その内容に沿って商品設定ファイルの内容を変更してください。
商品情報は下図赤線が引いてあるLaravel設定ファイルで管理してます。

参考ページ:https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/
- 「item_confirm1.blade.php」は下記のページで表示される商品の情報を設定
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/confirm1
※上記ページの事を先方では「入口1」と表現される事が多い。
上記のページは基本的に単品商品で使用する事が多い。
- 「item_confirm2.blade.php」は下記のページで表示される商品の情報を設定
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/confirm2
※上記ページの事を先方では「入口2」と表現される事が多い。
上記のページは基本的にセット商品で使用する事が多い。
- 「item_upsell.blade.php」は下記のページで表示される商品の情報を設定
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/upsell_confirm
※上記ページの事を先方では「アップセル」もしくは「引き上げ」と表現される事が多い。
上記のページは通常のセット商品と定期商品の2種類で構成されているページになる。
上記のページは「confirm1」もしくは「confirm2」で下図のような緑色のボタンを押すと遷移する

- 「item_crosssell.blade.php」は下記のページで表示される商品の情報を設定
https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/cross_confirm
※上記のページは購入完了ページ(「finish」もしくは「upsell_finish」)で、
ついで買い(クロスセル)を設定しているLPで表示される。
上記のページで設定されている商品は様々(単品・セット・定期のいずれか)
設定ファイルの一例(【単品設定】item_confirm1.blade.php)
商品設定を行う場合は、下記の2カ所を支給される設定ファイルに基づき編集する
①「$arrCart」の配列の中身 → 商品情報
②「@section(‘note’)」で囲まれている範囲の文言 → 確認ページ(confirm)で実際に表示される注意文
{{-- ▼ 設定(編集不可) ▼ --}}
@include('lib.cartArrayData')
@php
// バリデーション済みデータの受け取り
$arrForm = session('arrForm',[]);
// 設定値の取得
$lpAttr = session('lpAttr',[]);
$haisoList = session('haisoList',[]);
@endphp
{{-- ▲ 設定(編集不可) ▲ --}}
@php
//商品情報(confirm1-単品)
$arrCart = [
'shn' => [
4 => [
'type' => '1', // 1:通常、2:定期
'haisoHohoHaisoksya' => '7', // 1:宅急便 7:メール便
'shn' => [
[
'shn_id' => 'SC118404',// 親商品ID
'shn_attr' => isset($arrForm['arrAttrId']) && !empty($arrForm['arrAttrId']) ? $arrForm['arrAttrId'] : '00', // 親色番
'shnKanjiNme' => '1/2薬用クリアエステヴェール13mL', // 親商品名
'attrNme' => isset($lpAttr['colorList']) && !empty($lpAttr['colorList']) ? $lpAttr['colorList'][$arrForm['arrAttrId']] : '', // 親色名
// 単品のときは0
'shn_kbn_cde' => '0', // 親商品区分 0:組合せ商品以外 1:親 2:子
'price_inctax' => 1980,
'price_notax' => 1800,
'jtyQty' => 1,
'total_inctax' => 1980,
],
],
'arrAmt' => [
'totalSubAmount' => 1980,
'totalNoTaxSubAmount' => 1800,
'delivFee' => 0,
'totalAmount' => 1980,
],
],
],
];
@endphp
@section('note')
<p class="confirm-note">
返品は未開封(商品箱を開封していないもしくは、封印シールを貼ってある状態)の商品のみ、商品到着後8日以内。<br>
返送料は弊社負担。事前にご連絡ください。<br>
返品受付ダイヤル:<a href="tel:{{ $DEFINE_RETURNTEL }}">{{ $DEFINE_RETURNTEL }}</a> {{ $DEFINE_RETURNTELTIME }}<br>
キャンペーン期間外のお客様都合による返品の場合、送料・返送料はお客様負担。<br>
</p>
<p class="confirm-note">
返品、交換はお一人様一回まで。
</p>
<p class="confirm-note">
セット商品の一部を返品される場合は単品商品の通常価格でのお支払いとなります。<br>
</p>
<p class="confirm-note">
商品お届け時期、お支払い方法、返品・交換について(本ページ下部の「特定商取引法に基づく表記」を参照)。<br>
</p>
<p class="confirm-note">
株式会社JIMOSの会社情報(本ページ下部を参照)。
</p>
@endsection
{{-- ▼ 設定(編集不可) ▼ --}}
@php
//データ成形
cartArrayData($arrCart, $arrForm, $lpAttr, $haisoList, $selfName, $DEFINE_PRMCODE);
@endphp
{{-- ▲ 設定(編集不可) ▲ --}}
「$arrCart」の配列の中身
設定ファイルの中にも注釈が入ってますが、主な変更箇所に関わるルールは下記の通りです。
shn直下の数字 | 4:単品、2:セット、6:定期、8:クロスセル |
type | 1:通常、2:定期 |
haisoHohoHaisoksya | 配送方法を設定するキー 1:宅急便、7:メール便 |
shn_id | 親商品ID ※セット商品の場合、親品番にぶら下がる構造で複数の子品番の設定が必要になります |
shn_attr | 販売している商品が複数のSKUを持つ商品の場合は、下記の変数を設定。 isset($arrForm[‘arrAttrId’]) && !empty($arrForm[‘arrAttrId’]) ? $arrForm[‘arrAttrId’] : ’00’ 例:https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/ 販売している商品がSKUを持たない場合は、下記の固定値を設定 ’00’ 例:https://cev.macchialabel.com/ad/mbl_ya_s_89/ |
shn_kbn_cde | 0:組合せ商品以外(単品)、1:セット親、2:セット子 |
shnKanjiNme | 商品名 |
attrNme | 販売している商品が複数のSKUを持つ商品の場合は、下記の変数を設定。 isset($lpAttr[‘colorList’]) && !empty($lpAttr[‘colorList’]) ? $lpAttr[‘colorList’][$arrForm[‘arrAttrId’]] : ” 例:https://cev.macchialabel.com/ad/ls_8fsp8_5_kta_up_tei_gp3_test/ 販売している商品がSKUを持たない場合は、空を固定値として設定 ” 例:https://cev.macchialabel.com/ad/mbl_ya_s_89/ |
price_inctax | 税込み価格 |
price_notax | 税別価格 ※税別価格は提出資料には記載されないことが多いので、自分で割り返して算出する。小数点が出た場合は切り捨て。 https://keisan.casio.jp/exec/system/1346316660 |
jtyQty | 数量 |
total_inctax | 合計金額 ※price_inctaxの価格と同じ。 |
totalSubAmount | 小計の税込み価格 ※基本的にprice_inctaxの価格と同じ。 |
totalNoTaxSubAmount | 小計の税別価格 ※基本的にprice_notaxの価格と同じ。 |
delivFee | 送料 ※基本的に「0」が多い。 |
totalAmount | 送料含めた総計の税込み価格 ※基本的に送料は「0」が多いため、price_inctaxの価格と同じ。 |
設定ファイルの一例(【定期設定】item_upsell.blade.php)
定期の場合は、定期用の商品設定(teiki_shn)も追加されます。
親品番にぶら下がる子品番がある場合は、「subProduct」として商品を追加していく。
「teiki」も「subProduct」も1アイテムごとの設定キーの構造は大体同じです。
@php
//商品情報(upsell-定期)
$arrCart = [
'shn' => [
6 => [
'type' => '2', // 1:通常、2:定期
'haisoHohoHaisoksya' => '1', // 1:宅急便 7:メール便
'shn' => [
[
'shn_id' => 'MB300504',
'shn_attr' => '00',
'shnKanjiNme' => '【定期】超浸透潤いセット',
'attrNme' => '',
'shn_kbn_cde' => '1', // 0:単品、1:セット親、2:セット子
'price_inctax' => 1980,
'price_notax' => 1800,
'jtyQty' => 1,
'total_inctax' => 1980,
'subProduct' => [
[
'subShn_id' => 'SB300659',
'subShn_attr' => '00',
'subShn_kbn_cde' => '2',
'subShnKanjiNme' => '薬用マイクロバブルローション(ワンタッチ)',
'subAttrNme' => '',
'subJtyQty' => 1,
'subPrice_inctax' => 0,
],
],
],
],
'teiki_shn' => [
'shn' => [
[
'shn_id' => '300630',
'shn_attr' => '00',
'shn_kbn_cde' => '0',
'shnKanjiNme' => '薬用マイクロバブルローション(ワンタッチ)',
'attrNme' => '',
'periodicCycle' => '03',
'jtyQty' => 1,
'price_inctax' => 4600,
],
[
'shn_id' => '123009',
'shn_attr' => '00',
'shn_kbn_cde' => '0',
'shnKanjiNme' => 'アクティブミクロンウォーター+つめかえ用',
'attrNme' => '',
'periodicCycle' => '03',
'jtyQty' => 1,
'price_inctax' => 4600,
],
],
],
'arrAmt' => [
'totalSubAmount' => 1980,
'totalNoTaxSubAmount' => 1800,
'delivFee' => 0,
'totalAmount' => 1980,
],
'arrAmtTeiki' => [
'totalSubAmount' => 9200,
'delivFee' => 0,
'totalAmount' => 9200,
],
],
],
];
@endphp
「$arrCart」の配列の中身
teiki_shn | 定期用の商品を設定するキー |
subProduct | 子品番の商品を設定するキー |
subPrice_inctax | 固定値で「0」を入れる |
periodicCycle | 定期のサイクルを設定するキー 01=>15日、02=>30日、03=>45日、04=>60日、 05=>75日、06=>90日、07=>105日、08=>120日、09=>150日、 10=>165日、11=>180日、12=>255日、13=>270日 |
arrAmtTeiki | 定期用の総計を設定するキー |
arrAmtTeiki=>totalSubAmount | 定期商品のprice_inctaxの合計値 |
arrAmtTeiki=>delivFee | 定期商品の送料 ※基本的に「0」が多い。 |
arrAmtTeiki=>totalAmount | 定期商品の送料含めた総計の税込み価格 ※基本的に送料は「0」が多いため、arrAmtTeiki=>totalSubAmountの価格と同じ。 |
④ サンクスメールの追加、編集
購入完了時に送信されるサンクスメールはLPもしくは、
購入する商品毎に異なる内容を設定できるようになっております。
依頼としては下記のいずれかになると思います。
- 既存のサンクスメールの編集
- 新しいサンクスメールの追加・LPへの設定
サンクスメールは下記①②の2種類ファイルで構成されてます。
①サンクスメールのテンプレート
→下記ディレクトリで一元管理しており、商品毎にメール内の文言が異なる
/macchialabel.com/phase2/resources/views/assets/mails/
※「数字-text.blade.php」がメールのテンプレート
②LPページ毎の「base.blade.php」
→購入される商品毎に送られるサンクスメールのテンプレートの設定
base.blade.phpの仕様については下記ファイルの「仕様-baseファイル」にて記載
E:\共有ドライブ\02.コンサル・制作事業\02.進行中案件\36.JIMOS様\02.MAC マキアレイベル\202308ddフェーズ2prj\参考資料\フェーズ2_LP仕様書_231115.xlsx
既存のサンクスメールの編集
先方から指定があったテンプレートの文言調整を行う。
編集した後は、実際にテスト注文を入れてみてサンクスメールを受け取り、
正しく変更されているか確認してください。
メールテンプレート一例
下記赤文字の部分に対して文言調整の依頼が来ることが多い。
それ以外の個所は、システム側で動的に表示内容を置き換えているので基本的に編集しない。
※置き換え部分は全メールテンプレートで同一内容となってます。
{{-- YCEVアップセル定期注文完了/定期1980円 --}}
{{ $arrForm['name01'] }} {{ $arrForm['name02'] }}様
このたびは、
薬用クリアエステヴェールと、プロテクトバリアリッチのセットを
ご注文いただき、ありがとうございます。
@php
$selectShnSeq = $arrForm['select_shn_seq'];
$mailContent = $mailForm['content'][$selectShnSeq];
$mailStringLength = 0;
foreach ($mailContent as $content) {
$mailStringLength += mb_strlen($content, 'UTF-8');
}
@endphp
@if ( (isset($arrForm['mail_template_id_force']) && !empty($arrForm['mail_template_id_force'])) || $mailStringLength === 0 )
{{-- ▼デフォルトのメール本文▼ --}}
美容液成分がたっぷり入ったファンデーション『薬用クリアエステヴェール』と
相性ぴったりのオールインワンジェル『プロテクトバリアリッチ』で
24時間ずーっとスキンケアできるセットです。
今回は相性の良いパウダーもあわせてお届けします。
24時間スキンケアの後に
ファンデーションをのせたときの化粧のりや、
翌朝に顔を洗うときのお肌のなめらかさを、
ぜひご自身のお肌でご実感ください。
{{-- ▲デフォルトのメール本文▲ --}}
@else
{{-- ▼baseファイル内に設定が有れば出力▼ --}}
@foreach ($mailForm['content'][$selectShnSeq] as $content)
{{ $content }}
@endforeach
{{-- ▲baseファイル内に設定が有れば出力▲ --}}
@endif
今回ご注文いただきました商品は下記の通りです。
ご注文内容をご確認ください。
@if(!empty($txnId))
【注文番号】
{{ $txnId }}
@endif
【ご注文内容】
@php
if (count($cartItems) > 0) {
foreach ($cartItems[1] as $item) {
$attrNme = $item['attrNme'];
if(isset($item['subProduct'])){
foreach ($item['subProduct'] as $subproduct) {
if ($subproduct['subAttrNme']) {
$attrNme = $subproduct['subAttrNme'];
}
}
}
if ($item['shn_id'] == 115991 || $item['shn_id'] == 116864) {
$body_text[] = 'お買い上げ商品 ' . $item['shnKanjiNme'];
$body_text[] = ' L 薬用クリアエステヴェール(' . $attrNme . ')';
$body_text[] = ' L プロテクトバリアリッチb';
} else if ($attrNme) {
$body_text[] = 'お買い上げ商品 ' . $item['shnKanjiNme'] . '(' . ($attrNme ? $attrNme : '') . ')';
} else {
$body_text[] = 'お買い上げ商品 ' . $item['shnKanjiNme'];
}
$body_text[] = '';
$body_text[] = '単価(税込) ' . number_format($item['price_inctax']) . '円';
$body_text[] = '個数 ' . number_format($item['jtyQty']) . '個';
$body_text[] = '小計 ' . number_format($item['total_inctax']) . '円';
$body_text[] = '';
}
}
@endphp
@foreach ($body_text as $text)
{{ htmlspecialchars($text) }}
@endforeach
商品価格合計 {{ number_format($arrAmt['totalSubAmount']) }}円
送料 {{ number_format($arrAmt['delivFee']) }}円
--------------------------------
合計 {{ number_format($arrAmt['totalAmount']) }}円
※ 明細書には、システムの仕様上、定期便のお届け予定の記載はされません
※ 2回目以降は、薬用クリアエステヴェールとプロテクトバリアリッチのセットを、
通常価格から20%OFFの6,464円でお届けします。
【お届けサイクル】
定期お届けは45日間サイクルでお届けします。
お申込後、いつでもお電話で変更できます。
~ご案内~
初回お届け商品をご使用いただき、返品をご希望の場合は商品到着後30日以内にご連絡ください。
定期便の変更・解約は定期便お届け予定日の10日前までにご連絡をお願いいたします。
(FAX・郵送・メールでのご連絡の場合は15日前までにお願いします)
【お支払い方法】
{{ $paymentList[$arrForm['pay_kbn']] }}
@if ($arrForm['pay_kbn'] == 3)
※PayPay請求書払い、d払い請求書払い、au PAY(請求書支払い)、LINE Pay請求書支払い、コンビニ支払、 郵便振替
※弊社会社規定により後払いにてお届けできない場合は、代金引換にてお届けさせていただきます。
@endif
【配送方法】
宅配便またはメール便 {{ $haisoList[1][$arrForm['haiso_ksya_tme_sitei_cde']] }}
※メール便でお届け可能な商品はメール便にてお届けをいたします。
また、時間指定をされた場合はご希望の時間帯にお届けすることができかねます。
※郵便受けに商品が入らない場合は、対面でのお渡しとなります。
ご不在の際は「不在票」を郵便受けに投函いたします。
【配送先】
〒{{ $arrForm['zipcode'] }} {{ $arrForm['addr01'] }}{{ $arrForm['addr02'] }}{{ $arrForm['addr03'] }}
{{ $arrForm['name01'] }} {{ $arrForm['name02'] }}様
【配送先電話番号】
{{ $arrForm['tel'] }}
【ご登録メールアドレス】
{{ $arrForm['mail_addr'] }}
それでは、24時間うるおいセットが
お手元に届くまで、楽しみにお待ちくださいませ。
なお、このご注文にお心当たりのない場合は、
お手数ですが下記お問い合わせ窓口までご連絡をお願いいたします。
{{-- 共通のお知らせ内容 --}}
@include('assets.mails.common.infomation')
{{-- メールフッター --}}
@include('assets.mails.common.footerMail')
[1]
新しいサンクスメールの追加・LPへの設定
・新しいサンクスメールの追加
サンクスメールについては上記で触れたように、
メールテンプレートにて管理しておりますので、
ファイルをリネームする形で複製し、
指示書に従い、文章を変更してください。
新規でメールテンプレートを作成する場合は、
メールテンプレート下部の、[](カギカッコ)で囲まれた数字部分を
新規で作成したメールテンプレートの数字に書き換えるのを忘れないでください。

【メールテンプレート下部の番号について】
メールテンプレートの下に記載されている番号は、システム上の動作には影響しませんが、相手方が管理しやすいように付けられています。必ず、使用するテンプレートの番号と一致させてください!
・LPへの設定
サンクスメールはLPの商品毎に設定を行っているので、
配信設定したいLPページのbase.blade.phpを開いて、
下図の設定値を配信したいメールテンプレートの数字で設定する。

テスト注文を入れる際の注意点
テスト注文を入れる際は必ず、「お名前」「フリガナ」に
テスト テスト
と入れる。
上記の名称であれば、テスト注文として処理されて実際の受注にはならない。
【テストメールの確認方法】
既存のメールテンプレートを修正する際は、必ずテストメール機能を使って確認してください。
※テストを行わずに編集すると、本番用テンプレートに影響が出てしまう可能性があります。
<テストメールの使い方>
1. フォームの「お名前」欄に
→ テスト メール と入力してください。
2. 入力すると、テスト用のテンプレートが表示されます。
3. テストメールのテンプレートは、以下のディレクトリに格納されています:
→ /macchialabel.com/phase2/resources/views/assets/mails_test
テストメールの場合は、赤線部のテストメール確認が表示され、見た目で判断できます。

受注テーブルの詳細
受注テーブル
・ txn_orders(通常商品の受注)
・ periodic_orders(定期の受注)
・ testuser_orders ←テスト用(フォームの「お名前」欄に 「テスト」 と入力すると、データが保存される)
・ testuserperiodic_orders←テスト用(フォームの「お名前」欄に 「テスト」 と入力すると、データが保存される)