MYページで、過去に配信されたメルマガを閲覧できるようにする。
管理画面上で削除したメルマガは表示されない。
▼ここでのカスタマイズファイルをすべてダウンロードできます。
必要な箇所だけコピーしてご利用ください。
他のカスタマイズも含まれている場合がありますので、ファイルの上書きは絶対におやめください。
こちらから(facebookユーザーのみ)
1 メルマガ一覧をMYページに表示するかしないか、
会員自身に配信されたメルマガのみを表示するか、それともすべてのメルマガを表示するか、
以上の2点についてmtb_constantsテーブルに登録する。
INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MAILMAGA_SHOW', 'true', 1426, 'MYページでのメルマガ一覧ページの表示(true:表示する,false:表示しない)'); INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MAILMAGA_CUSTOMER', 'false', 1427, '表示するメルマガ(true:会員自身に配信されたメルマガのみ表示 false:すべてのメルマガを表示)')
★システム設定>パラメーター設定を開き、「この内容で登録する」をクリック。
2 ページングに、jQuery Paginateを利用する。
http://th3silverlining.com/2010/04/15/pajination-a-jquery-pagination-plugin/
(1)上記アドレスより、jquery.pajinate.jsをダウンロードし、
■html/js/jquery.pajinateフォルダに置く。
(2)スタイルシートを(1)と同じフォルダに置く。
■html/js/jquery.pajinate/styles.css
div#paging_container .ellipse{ float: left; } div#paging_container .page_navigation { padding-bottom: 10px; } div#paging_container .page_navigation a { padding:3px 5px; margin:2px; color:white; text-decoration:none; float: left; font-family: Tahoma; font-size: 12px; background-color:#DB5C04; } div#paging_container .active_page{ background-color:white !important; color:black !important; } div.page_navigation { margin-bottom:30px; } div#paging_container ul#title { clear:both; } div#paging_container ul#title li { background-color:#EFEFEF; border: 1px solid #CCC; border-bottom:none; } div#paging_container .date { float:left; width:20%; text-align:center; padding:5px; border-right:#CCC 1px solid; } div#paging_container .backnumber { float:right; width:76%; padding:5px; } div#paging_container ul#title .backnumber { text-align:center; } div#paging_container ul.content { border:#CCC 1px solid; border-bottom:none; } div#paging_container ul.content li { border-bottom:#CCC 1px solid; }
(3)■data/Smarty/templates/default/site_frame.tpl 追加
<!--ページング--> <link media="screen" rel="stylesheet" href="<!--{$smarty.const.ROOT_URLPATH}-->js/jquery.pajinate/styles.css" /> <script type="text/javascript" src="<!--{$smarty.const.ROOT_URLPATH}-->js/jquery.pajinate/jquery.pajinate.js"></script>
3 メルマガ一覧ページとバックナンバープレビューページを新規作成
(1)■html/mypage/mailmaga.php
<?php // {{{ requires require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/mypage/LC_Page_Mypage_Mailmaga_Ex.php'; // }}} // {{{ generate page $objPage = new LC_Page_Mypage_Mailmaga_Ex(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); ?>
(2)■html/mypage/mailmaga_view.php
<?php // {{{ requires require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/mypage/LC_Page_Mypage_Mailmaga_view_Ex.php'; // }}} // {{{ generate page $objPage = new LC_Page_Mypage_Mailmaga_view_Ex(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); ?>
(3)■data/class_extends/page_extends/mypage/LC_Page_Mypage_Mailmaga_Ex.php
<?php // {{{ requires require_once CLASS_REALDIR . 'pages/mypage/LC_Page_Mypage_Mailmaga.php'; /** * メール配信履歴 のページクラス(拡張). * * LC_Page_Mypage_Mailmaga をカスタマイズする場合はこのクラスを編集する. * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Mypage_Mailmaga_Ex.php 20764 2011-03-22 06:26:40Z nanasess $ */ class LC_Page_Mypage_Mailmaga_Ex extends LC_Page_Mypage_Mailmaga { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } ?>
(4)■data/class_extends/page_extends/mypage/LC_Page_Mypage_Mailmaga_view_Ex.php
<?php // {{{ requires require_once CLASS_REALDIR . 'pages/mypage/LC_Page_Mypage_Mailmaga_view.php'; /** * メルマガプレビュー のページクラス(拡張). * * LC_Page_XXX をカスタマイズする場合はこのクラスを編集する. * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Mypage_Mailmaga_view_Ex.php 20764 2011-03-22 06:26:40Z nanasess $ */ class LC_Page_Mypage_Mailmaga_view_Ex extends LC_Page_Mypage_Mailmaga_view { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } ?>
(5)■data/class/pages/mypage/LC_Page_Mypage_Mailmaga.php
<?php // {{{ requires require_once CLASS_EX_REALDIR . 'page_extends/mypage/LC_Page_AbstractMypage_Ex.php'; /** * MyPage のページクラス. * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Mypage.php 21051 2011-07-27 04:51:21Z 468 $ */ class LC_Page_MyPage_mailmaga extends LC_Page_AbstractMypage_Ex { // {{{ properties /** ページナンバー */ var $tpl_pageno; // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); $this->tpl_subtitle = 'メルマガ一覧'; $this->tpl_mypageno = 'mailmaga'; } /** * Page のプロセス. * * @return void */ function process() { parent::process(); } /** * Page のAction. * * @return void */ function action() { $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getvalue('customer_id'); //データ取得 $objQuery =SC_Query_Ex::getSingletonInstance(); $this->arrRet = array(); $this->arrRetMulti = array(); //取得1 $arrRet = $objQuery->select("*", "dtb_send_history", "del_flg = 0 order by start_date DESC"); //データベースからデータの取得ができたか if(isset($arrRet)){ $this->arrRet = $arrRet; } //取得2 $arrRetMulti = $objQuery->select("*", "dtb_send_customer join dtb_send_history on dtb_send_customer.send_id=dtb_send_history.send_id", "dtb_send_history.del_flg = 0 AND dtb_send_customer.customer_id = $customer_id order by start_date DESC"); //データベースからデータの取得ができたか if(isset($arrRet)){ $this->arrRetMulti = $arrRetMulti; } } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } ?>
(6)■data/class/pages/mypage/LC_Page_Mypage_Mailmaga_view.php
<?php // {{{ requires require_once CLASS_EX_REALDIR . 'page_extends/mypage/LC_Page_AbstractMypage_Ex.php'; /** * メルマガプレビュー のページクラス. * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Mypage_Mailmaga_view.php 21250 2011-09-22 07:13:57Z nanasess $ */ class LC_Page_Mypage_Mailmaga_view extends LC_Page_AbstractMypage_Ex { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); $this->tpl_subtitle = 'バックナンバープレビュー'; $this->tpl_mainpage = 'mypage/mailmaga_view.tpl'; } /** * Page のプロセス. * * @return void */ function process() { $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { $objMailHelper = new SC_Helper_Mail_Ex(); switch ($this->getMode()) { case 'template': if (SC_Utils_Ex::sfIsInt($_GET['template_id'])){ $arrMail = $objMailHelper->sfGetMailmagaTemplate($_GET['template_id']); $this->mail = $arrMail[0]; } break; case 'history'; if (SC_Utils_Ex::sfIsInt($_GET['send_id'])){ $arrMail = $objMailHelper->sfGetSendHistory($_GET['send_id']); $this->mail = $arrMail[0]; } break; case 'presend'; $this->mail['body'] = $_POST['body']; default: } $this->setTemplate($this->tpl_mainpage); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } ?>
(7)■data/Smarty/templates/default/mypage/mailmaga.tpl
メルマガのビュー画面を開くのに、「ポップアップウィンドウを中央に表示する」が適用されている。
class=”popupwindow” rel=”windowReview” ← 適用しない場合は、削除し、target=”_blank”などと記述する。
<script type="text/javascript"> $(document).ready(function(){ $('#paging_container').pajinate({ num_page_links_to_display : 10, items_per_page : 10, nav_label_first : '最初', nav_label_last : '最後', nav_label_prev : '前へ', nav_label_next : '次へ' }); }); </script> <div id="mypagecolumn"> <h2 class="title"><!--{$tpl_title|h}--></h2> <!--{if $tpl_navi != ""}--> <!--{include file=$tpl_navi}--> <!--{else}--> <!--{include file=`$smarty.const.TEMPLATE_REALDIR`mypage/navi.tpl}--> <!--{/if}--> <div id="mycontents_area"> <h3><!--{$tpl_subtitle|h}--></h3> <!--{if count($arrRet) > 0}--> <div id="paging_container"> <div class="page_navigation"></div> <ul id="title"> <li> <div class="date">配信日</div> <div class="backnumber">バックナンバー</div> <div class="clear"></div> </li> </ul> <!--{if $smarty.const.MAILMAGA_CUSTOMER == "true"}--> <!--{if count($arrRetMulti) > 0}--> <ul class="content"> <!--{section name=cnt loop=$arrRetMulti}--> <li> <div class="date"><!--{$arrRetMulti[cnt].start_date|date_format:"%Y/%m/%d"|h}--></div> <div class="backnumber"><a class="popupwindow" rel="windowReview" href="./mailmaga_view.php?mode=history&send_id=<!--{$arrRetMulti[cnt].send_id|h}-->"><!--{$arrRetMulti[cnt].subject|h}--></a></div> <div class="clear"></div> </li> <!--{/section}--> </ul> <!--{else}--> <ul class="content"> <li style="padding:10px; text-align:center;"> メルマガ配信まで、もうしばらくお待ちください。 </li> </ul> <!--{/if}--> <!--{else}--> <ul class="content"> <!--{section name=cnt loop=$arrRet}--> <li> <div class="date"><!--{$arrRet[cnt].start_date|date_format:"%Y/%m/%d"|h}--></div> <div class="backnumber"><a class="popupwindow" rel="windowReview" href="./mailmaga_view.php?mode=history&send_id=<!--{$arrRet[cnt].send_id|h}-->"><!--{$arrRet[cnt].subject|h}--></a></div> <div class="clear"></div> </li> <!--{/section}--> </ul> <!--{/if}--> </div> <!--{else}--> <div id="complete"> <div class="contents"> <div class="message"> 現在メルマガバックナンバーはありません。 </div> </div> </div> <!--{/if}--> </div> </div>
(8)■data/Smarty/templates/default/mypage/mailmaga_view.tpl
<!--{if $mail.mail_method eq 2}--><!--{$mail.body|h|nl2br}--><!--{else}--><!--{$mail.body}--><!--{/if}-->
4 ナビメニューに追加する
■data/Smarty/templates/default/mypage/navi.tpl 「会員状態」と「退会状態」の2カ所に追加
<!--▼メルマガ一覧--> <!--{if $smarty.const.MAILMAGA_SHOW == on}--> <li><a href="mailmaga.php" class="<!--{if $tpl_mypageno == 'mailmaga'}--> selected<!--{/if}-->"> メルマガ一覧</a></li> <!--{/if}--> <!--▲メルマガ一覧-->
<!--▼メルマガ一覧--> <!--{if $smarty.const.MAILMAGA_SHOW == on}--> <li><a href="<!--{$smarty.const.TOP_URLPATH}-->" class="<!--{if $tpl_mypageno == 'mailmaga'}--> selected<!--{/if}-->> メルマガ一覧</a></li> <!--{/if}--> <!--▲メルマガ一覧-->
5 データベースにページを登録
メルマガ一覧とバックナンバープレビュー
INSERT INTO dtb_pagelayout (device_type_id, page_id, page_name, url, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (10, 30, 'MYページ/メルマガ一覧', 'mypage/mailmaga.php', 'mypage/mailmaga', 1, 1, 2, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); INSERT INTO dtb_pagelayout (device_type_id, page_id, page_name, url, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (10, 31, 'MYページ/バックナンバープレビュー', 'mypage/mailmaga_view.php', 'mypage/mailmaga_view', 1, 1, 2, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
6 メルマガ一覧ページにブロックを配置