2012年10月11日カテゴリー:未分類

EC-CUBE2.12:メルマガのバックナンバーをMYページから閲覧

MYページで、過去に配信されたメルマガを閲覧できるようにする。
管理画面上で削除したメルマガは表示されない。

▼ここでのカスタマイズファイルをすべてダウンロードできます。
必要な箇所だけコピーしてご利用ください。
他のカスタマイズも含まれている場合がありますので、ファイルの上書きは絶対におやめください。
こちらから(facebookユーザーのみ)

1 メルマガ一覧をMYページに表示するかしないか、
会員自身に配信されたメルマガのみを表示するか、それともすべてのメルマガを表示するか、
以上の2点についてmtb_constantsテーブルに登録する。
[php]
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:すべてのメルマガを表示)’)
[/php]

★システム設定>パラメーター設定を開き、「この内容で登録する」をクリック。

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
[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;
}
[/css]

(3)■data/Smarty/templates/default/site_frame.tpl 追加
[php]

[/php]

3 メルマガ一覧ページとバックナンバープレビューページを新規作成

(1)■html/mypage/mailmaga.php
[php]
init();
$objPage->process();
?>
[/php]

(2)■html/mypage/mailmaga_view.php
[php]
init();
$objPage->process();
?>
[/php]

(3)■data/class_extends/page_extends/mypage/LC_Page_Mypage_Mailmaga_Ex.php
[php]

[/php]

(4)■data/class_extends/page_extends/mypage/LC_Page_Mypage_Mailmaga_view_Ex.php
[php]

[/php]

(5)■data/class/pages/mypage/LC_Page_Mypage_Mailmaga.php
[php]
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();
}

}
?>
[/php]

(6)■data/class/pages/mypage/LC_Page_Mypage_Mailmaga_view.php
[php]
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();
}
}
?>
[/php]

(7)■data/Smarty/templates/default/mypage/mailmaga.tpl

メルマガのビュー画面を開くのに、「ポップアップウィンドウを中央に表示する」が適用されている。
class=”popupwindow” rel=”windowReview” ← 適用しない場合は、削除し、target=”_blank”などと記述する。

[php]





  • 配信日
バックナンバー

  • メルマガ配信まで、もうしばらくお待ちください。
  • 現在メルマガバックナンバーはありません。

    [/php]

    (8)■data/Smarty/templates/default/mypage/mailmaga_view.tpl
    [php]

    [/php]

    4 ナビメニューに追加する
    ■data/Smarty/templates/default/mypage/navi.tpl 「会員状態」と「退会状態」の2カ所に追加
    [php]

  • ” class=” selected>
    メルマガ一覧


  • [/php]

    5 データベースにページを登録

    メルマガ一覧とバックナンバープレビュー
    [php]
    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)
    [/php]

    6 メルマガ一覧ページにブロックを配置