EC-CUBEのログアウトボタンを実装する【2.13.5】
記事内に商品プロモーションを含む場合があります
EC-CUBE2.13.5でログアウトボタンを実装したかったので実装してみました。
マイページやヘッダーメニューなど実装したいときがありますよね。
ログアウトボタンを実装する
今回はパラメータで「mode=logout」になった際に、ログイン情報を破棄しログインページにリダイレクトするようにします。
※必ずバックアップを取って作業してください。
変更箇所
「data/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php」を編集します。
※「data/class/pages/mypage/LC_Page_Mypage.php」でも実装は可能ですが、アップデートなどでデフォルトに上書きされてしまうので、アップデートされても対応できる「LC_Page_Mypage_Ex.php」を編集します。
「LC_Page_Mypage.php」内の「public function action()」内のコードをコピペし、56~60行を追記します。
class LC_Page_Mypage_Ex extends LC_Page_Mypage
{
/**
* Page を初期化する.
*
* @return void
*/
function init()
{
parent::init();
}
/**
* Page のプロセス.
*
* @return void
*/
function process()
{
parent::process();
}
public function action()
{
//決済処理中ステータスのロールバック
$objPurchase = new SC_Helper_Purchase_Ex();
$objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);
$objCustomer = new SC_Customer_Ex();
$customer_id = $objCustomer->getValue('customer_id');
//ページ送り用
$this->objNavi = new SC_PageNavi_Ex($_REQUEST['pageno'],
$this->lfGetOrderHistory($customer_id),
SEARCH_PMAX,
'eccube.movePage',
NAVI_PMAX,
'pageno=#page#',
SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE);
$this->arrOrder = $this->lfGetOrderHistory($customer_id, $this->objNavi->start_row);
switch ($this->getMode()) {
case 'getList':
echo SC_Utils_Ex::jsonEncode($this->arrOrder);
SC_Response_Ex::actionExit();
break;
default:
break;
}
// 支払い方法の取得
$this->arrPayment = SC_Helper_Payment_Ex::getIDValueList();
// 1ページあたりの件数
$this->dispNumber = SEARCH_PMAX;
// ログアウト実装
if ($_GET['mode'] == 'logout') {
$objCustomer->EndSession();
header('Location: index.php');
}
$this->json_payment = SC_Utils::jsonEncode($this->arrPayment);
$this->json_customer_order_status = SC_Utils::jsonEncode($this->arrCustomerOrderStatus);
}
}
あとはサーバにアップロードすれば下準備は完了です。
ログアウトボタンを実装したい部分に、
<a href="index.php?mode=logout" class="<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->">ログアウト</a>
このコードを追加してあげるとログアウトボタンの完成!
意外と簡単だね_(:3」∠)_
ABOUT ME