配信したすべてのメルマガをMYページで表示する。
管理画面上で削除したメルマガは表示されない。
1 メルマガ一覧を表示するかしないかをmtb_constantsテーブルに登録する。
——————————————-
id:MAILMAGA_SHOW
name:on
rank:1249(←適宜)
remarks:メルマガ一覧ページの表示 on/表示する off/表示しない
——————————————-
★システム設定>パラメーター設定を開き、「この内容で登録する」をクリック。
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>
2 メルマガ一覧ページとバックナンバープレビューページを新規作成
(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'; /** * メール配信履歴 のページクラス. * * @package Page * @author LOCKON CO.,LTD. * @version $Id: LC_Page_Mypage_Mailmaga.php 20911 2011-05-04 19:29:41Z Seasoft $ */ 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'; $this->tpl_pager = 'pager.tpl'; } /** * Page のプロセス. * * @return void */ function process() { parent::process(); } /** * Page のアクション. * * @return void */ function action() { //データ取得 $objQuery =SC_Query_Ex::getSingletonInstance(); $this->arrRet = array(); $arrRet = $objQuery->select("*", "dtb_send_history", "del_flg = 0 order by start_date DESC"); //データベースからデータの取得ができたか if(isset($arrRet)){ $this->arrRet = $arrRet; } } /** * デストラクタ. * * @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
「ポップアップウィンドウを中央に表示する」を適用している。
http://www.itoben.com/blog/168.html
<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}--> <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> <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> </div> <!--{else}--> <div id="complete"> <div class="contents"> <div class="message"> メルマガバックナンバーはありません。 </div> </div> </div> <!--{/if}--> </div>
(8)■data/Smarty/templates/default/mypage/mailmaga_view.tpl
<!--{if $mail.mail_method eq 2}--><!--{$mail.body|h|nl2br}--><!--{else}--><!--{$mail.body}--><!--{/if}-->
3 ナビメニューに追加する
■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}-->
4 データベースにページを登録
(1) メルマガ一覧
———————————-
テーブル:dtb_pagelayout
device_type_id:10
page_id:30 ←既存page_idの続き
page_name:MYページ/メルマガ一覧
url:mypage/mailmaga.php
filename:mypage/mailmaga
header_chk:1
footer_chk:1
edit_flg:2
author:NULL
description:NULL
keyword:NULL
update_url:NULL
create_date:作成日
update_date:作成日
———————————-
(2) バックナンバープレビュー
———————————-
テーブル:dtb_pagelayout
device_type_id:10
page_id:31 ←既存page_idの続き
page_name:MYページ/バックナンバープレビュー
url:mypage/mailmaga_view.php
filename:mypage/mailmaga_view
header_chk:1
footer_chk:1
edit_flg:2
author:NULL
description:NULL
keyword:NULL
update_url:NULL
create_date:作成日
update_date:作成日
———————————-
5 メルマガ一覧ページにブロックを配置