Home > EC-CUBE

EC-CUBE Archive

EC-CUBE ポイント利用分も考えた金額を表示させる

Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829

こんにちは、山本です。

今日は普段『銀行の入金を確認している人』に朗報のカスタマイズかと。

ECサイトを運用する上で、入金確認をする人は
おそらくステータスを変更する画面を多用するかと思います。

「新規受付」「入金待ち」「入金済み」などのステータスですね。

管理画面では「受注管理」の「ステータス管理」なのですが・・・

ここの「購入金額」の値、ポイント分を考えていません。

つまりポイントを利用しているお客様は、ポイント利用分が引かれていない金額が表示されるので、
銀行に入金があった際に若干金額に誤差が生じてしまいます。

するとこのお客様はポイントを利用したのか、ということを
いちいち確認しなくてはいけません。

 
そこでちょっとしたカスタマイズを。

eccube-2.4.3/data/Smarty/templates/default/admin/order/status.tpl
128行目を以下に変更するだけ(total→payment_total)

	<!--{assign var=payment_id value=`$arrStatus&#91;cnt&#93;.payment_id`}-->
	<td align="center"><!--{$arrPayment&#91;$payment_id&#93;|escape}--></td>
	<td align="right"><!--{$arrStatus&#91;cnt&#93;.payment_total|number_format}--></td>
	<td align="center"><!--{if $arrStatus&#91;cnt&#93;.status eq 5}--><!--{$arrStatus&#91;cnt&#93;.commit_date|sfDispDBDate:false}--><!--{else}-->未発送<!--{/if}--></td>
	<td align="center"><!--{$arrORDERSTATUS&#91;$status&#93;}--></td>

これだけで、ポイントを引いた金額になります!

 
細かいことですが、普段EC-CUBEのサイトを運用している人にとっては
微妙な確認作業などが心理的に負担になったりします。

このようなカスタマイズは実際に運用してみないとわからない部分ですよね。

アジケはマイボトルパークを実際に運用しているので、
結構このような管理画面のカスタマイズもしています。

サイトができて終わりでなくて、やはり運用も大切ですからね!

簡単ですので是非お試しあれ!

では!

山本

EC-CUBEの売上集計でキャンセルや削除した受注も集計されてしまう

こんにちは、山本です。

EC-CUBEで売上集計というのがあるのですが
これキャンセルや削除した受注情報も集計されてしまいます。

なので今日はそれの修正方法を。

売上集計がリアルタイム集計かバッチモード集計かによって方法が異なります。

 
1.リアルタイム集計の場合
デフォルトではリアルタイム集計になっています。
特にソースを修正する必要はなくて以下のデータベースの中身を消すだけです。

dtb_bat_order_daily
dtb_bat_order_daily_age
dtb_bat_order_daily_hour

データベースが「MySQL」の場合は「phpMyAdmin」を
「PostgreSQL」の場合は「phpPgAdmin」を使った方が便利だと思います。

アジケは基本的に「PostgreSQL」なので、「phpPgAdmin」で・・・

簡単ですね!

 
2.バッチモード集計
次にバッチモード集計の場合ですが
どのようにバッチモード集計の設定をしたかによってやり方が異なります。

私は以下のサイトを参考にバッチモードの設定をしたので
今回はそのやり方でバッチモード設定した場合のやり方を説明します。
(といってもほとんど同じ流れだと思います。)

売上集計をバッチモード(DAILY_BATCH_MODE=true)でやるようにしたらサクサク動くようになった

簡単に流れを説明すると・・・

Cron(毎日朝の4時など)

集計プログラム(独自で作成)

data/class/batchSC_Batch_Daily.phpの「lfStartDailyTotal」の関数を実行

このようになります。

ここでlfStartDailyTotalの関数を呼び出す際に
「いつからいつまでの集計をするという期間」を設定するのですが
それをキャンセルや削除した受注日付まで含めればOKです。

つまり・・・

例えば、5月5日に受注があったけれども5月10日にキャンセルした受注情報があったとします。
で、今日が5月20日だとしたら、15日前(5月5日)まで集計するようにすればOKです!

 
EC-CUBEは細かいバグのようなものがたくさんありますが
少し調べれば結構簡単に修正できるので是非試してください。

では!

山本

EC-CUBEの受注管理で受注情報詳細を簡単に見る方法

Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829 Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829

こんにちは、山本です。

今日もEC-CUBEの小ネタカスタマイズを。

管理画面の受注管理で受注情報を検索した際に
このお客様どんな商品頼まれたのかなぁと詳細情報を見たいけれども、
わざわざ「編集」ボタンを押さなくてはいけなくてちょっと不便ですよね。

そこで調べていたらとても簡単な方法でできました。

同じ受注管理の「ステータス管理」で、「注文番号」をクリックすると詳細情報がポップアップで表示されますよね。
それをまんまパクりました。

eccube-2.4.3/data/Smarty/templates/default/admin/order/index.tpl

                        &lt;tr bgcolor=&quot;<!--{$arrORDERSTATUS_COLOR&#91;$status&#93;}-->" class="fs12n"&gt;
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.create_date|sfDispDBDate}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.order_id}--></td>
                            <td><!--{$arrResults&#91;cnt&#93;.order_name01|escape}--> <!--{$arrResults&#91;cnt&#93;.order_name02|escape}--></td>
                            <!--{assign var=payment_id value="`$arrResults&#91;cnt&#93;.payment_id`"}-->

441行目を以下に変更するだけ

                        &lt;tr bgcolor=&quot;<!--{$arrORDERSTATUS_COLOR&#91;$status&#93;}-->" class="fs12n"&gt;
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.create_date|sfDispDBDate}--></td>
                            <td align="center">&lt;a onclick=&quot;fnOpenWindow(&#039;./edit.php?order_id=<!--{$arrResults&#91;cnt&#93;.order_id}-->','order_disp','800','900'); return false;" href="/admin/order/status.php"&gt;<!--{$arrResults&#91;cnt&#93;.order_id}--></a></td>
                            <td><!--{$arrResults&#91;cnt&#93;.order_name01|escape}--> <!--{$arrResults&#91;cnt&#93;.order_name02|escape}--></td>
                            <!--{assign var=payment_id value="`$arrResults&#91;cnt&#93;.payment_id`"}-->

 
 
これで「注文番号」がリンクになったので、
それをクリックすると商品詳細情報がポップアップで表示されます!

 
簡単なカスタマイズで、地味に便利になりますので
是非お試しください。

では!

山本

EC-CUBEの受注情報の検索結果の項目を変更する方法

Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829 Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829

こんにちは、山本です。

今回は実際にお客様から要望があったEC-CUBEのカスタマイズなのですが
非常に簡単なので紹介します。

管理画面の『受注情報』にて受注情報の検索結果の項目を変更する方法です。
お客様から『お届け指定日』を表示させたいとのご要望があったので調べてみるとあっさりできました。

 
デフォルトだとこのような項目ですが・・・

このようにしました。

つまり、

受注日 注文番号 顧客名 支払方法 購入金額(円) 全商品発送日 対応状況 帳票 編集  メール  削除

この『削除』の項目を削除して『お届け予定日』を追加しただけです。

項目を削除するのは簡単だと思ったのですが、
追加ができるのかなぁということで、テンプレートを見てみると・・・

eccube-2.4.3/data/Smarty/templates/default/order/index.tpl

                        <!--{section name=cnt loop=$arrResults}-->
                        <!--{assign var=status value="`$arrResults&#91;cnt&#93;.status`"}-->
                        &lt;tr bgcolor=&quot;<!--{$arrORDERSTATUS_COLOR&#91;$status&#93;}-->" class="fs12n"&gt;
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.create_date|sfDispDBDate}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.order_id}--></td>
                            <td><!--{$arrResults&#91;cnt&#93;.order_name01|escape}--> <!--{$arrResults&#91;cnt&#93;.order_name02|escape}--></td>
                            <!--{assign var=payment_id value="`$arrResults&#91;cnt&#93;.payment_id`"}-->
                            <td align="center"><!--{$arrPayment&#91;$payment_id&#93;}--></td>
                            <td align="right"><!--{$arrResults&#91;cnt&#93;.total|number_format}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.commit_date|sfDispDBDate|default:"未発送"}--></td>
                            <td align="center"><!--{$arrORDERSTATUS&#91;$status&#93;}--></td>
                            <td align="center">&lt;a href=&quot;./&quot; onClick=&quot;fnOpenPdfSettingPage(&#039;pdf.php?order_id=<!--{$arrResults&#91;cnt&#93;.order_id}-->','pdf_input','500','650'); return false;"&gt;<span class="icon_class">帳票</span></a>&lt;input type=&quot;checkbox&quot; name=&quot;pdf_order_id[]&quot; value=&quot;<!--{$arrResults&#91;cnt&#93;.order_id}-->" &gt;
                            </td>
                            <td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnChangeAction('<!--{$smarty.const.URL_ORDER_EDIT}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults&#91;cnt&#93;.order_id}-->'); return false;"&gt;<span class="icon_edit">編集</span></a></td>
                            <td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnChangeAction('<!--{$smarty.const.URL_ORDER_MAIL}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults&#91;cnt&#93;.order_id}-->'); return false;"&gt;<span class="icon_mail">通知</span></a></td>
                            <td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnModeSubmit('delete_order', 'order_id', <!--{$arrResults&#91;cnt&#93;.order_id}-->); return false;"&gt;<span class="icon_delete">削除</span></a></td>
                        </tr>
                        <!--{/section}-->

うーん、ごちゃごちゃしてよくわかりませんが、
どうやらこの$arrResultsという変数にいろいろ値が入っているようです。

じゃあその$arrResultsという変数には
どんな値が入っているのかなぁと思って調べてみると・・・

‘order_id’ => ‘161’,
‘order_temp_id’ => ‘4bf4af8ba77a0R3np2zqf’,
‘customer_id’ => ’68’,
‘message’ => NULL,
‘order_name01’ => ‘山本’,
‘order_name02’ => ‘光彰’,
‘order_kana01’ => ‘ヤマモト’,
‘order_kana02’ => ‘ミツアキ’,
‘order_email’ => ‘info@ajike.co.jp’,
‘order_tel01′ => ’03’,
‘order_tel02’ => ‘1234’,
‘order_tel03’ => ‘3456’,
‘order_fax01’ => NULL,
‘order_fax02’ => NULL,
‘order_fax03’ => NULL,
‘order_zip01’ => ‘112’,
‘order_zip02’ => ‘1234’,
‘order_pref’ => ‘2’,
‘order_addr01’ => ‘てすと’,
‘order_addr02’ => ‘123’,
‘order_sex’ => ‘1’,
‘order_birth’ => NULL,
‘order_job’ => NULL,
‘deliv_name01’ => ‘山本’,
‘deliv_name02’ => ‘光彰’,
‘deliv_kana01’ => ‘ヤマモト’,
‘deliv_kana02’ => ‘ミツアキ’,
‘deliv_tel01′ => ’03’,
‘deliv_tel02’ => ‘1234’,
‘deliv_tel03’ => ‘3456’,
‘deliv_fax01’ => NULL,
‘deliv_fax02’ => NULL,
‘deliv_fax03’ => NULL,
‘deliv_zip01’ => ‘112’,
‘deliv_zip02’ => ‘1234’,
‘deliv_pref’ => ‘2’,
‘deliv_addr01’ => ‘てすと’,
‘deliv_addr02’ => ‘123’,
‘subtotal’ => ‘3255’,
‘discount’ => NULL,
‘deliv_fee’ => ‘500’,
‘charge’ => ‘0’,
‘use_point’ => NULL,
‘add_point’ => ’32’,
‘birth_point’ => ‘0’,
‘tax’ => NULL,
‘total’ => ‘3755’,
‘payment_total’ => ‘3755’,
‘payment_id’ => ‘3’,
‘payment_method’ => ‘銀行振込’,
‘deliv_id’ => ‘0’,
‘deliv_time_id’ => ‘0’,
‘deliv_time’ => NULL,
‘deliv_no’ => NULL,
‘note’ => NULL,
‘status’ => ‘1’,
‘create_date’ => ‘2010-05-20 12:42:14.75875’,
‘loan_result’ => NULL,
‘credit_result’ => NULL,
‘credit_msg’ => NULL,
‘update_date’ => ‘2010-05-20 12:42:11.329291’,
‘commit_date’ => NULL,
‘del_flg’ => ‘0’,
‘deliv_date’ => NULL,
‘conveni_data’ => NULL,
‘cell01’ => NULL,
‘cell02’ => NULL,
‘cell03’ => NULL,
‘memo01’ => NULL,
‘memo02’ => NULL,
‘memo03’ => NULL,
‘memo04’ => NULL,
‘memo05’ => NULL,
‘memo06’ => NULL,
‘memo07’ => NULL,
‘memo08’ => NULL,
‘memo09’ => NULL,
‘memo10’ => NULL,
‘campaign_id’ => NULL,

うわぁ~多いな!ってdtb_orderのデータベースまんまですね。
なので、ここにある項目なら全部使えそうです。

よって・・・

eccube-2.4.3/data/Smarty/templates/default/order/index.tpl

                        <tr bgcolor="#636469" align="center" class="fs12n">
                            <td width="100"><span class="white">受注日</span></td>
                            <td width="65"><span class="white">注文番号</span></td>
                            <td width="110"><span class="white">顧客名</span></td>
                            <td width="90"><span class="white">支払方法</span></td>
                            <td width="70"><span class="white">購入金額(円)</span></td>
                            <td width="75"><span class="white">発送日</span></td>
                            <td width="85"><span class="white">お届け指定日</span></td>
                            <td width="75"><span class="white">対応状況</span></td>
                            <td width="45"><span class="white">帳票</span><br />
                             </td>
                            <td width="45"><span class="white">編集</span></td>
                            <td width="45"><span class="white">メール</span></td>
                            &lt;!--<td width="45"><span class="white">削除</span></td>--&gt;
                        </tr>

                        <!--{section name=cnt loop=$arrResults}-->
                        <!--{assign var=status value="`$arrResults&#91;cnt&#93;.status`"}-->
                        &lt;tr bgcolor=&quot;<!--{$arrORDERSTATUS_COLOR&#91;$status&#93;}-->" class="fs12n"&gt;
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.create_date|sfDispDBDate}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.order_id}--></td>
                            <td><!--{$arrResults&#91;cnt&#93;.order_name01|escape}--> <!--{$arrResults&#91;cnt&#93;.order_name02|escape}--></td>
                            <!--{assign var=payment_id value="`$arrResults&#91;cnt&#93;.payment_id`"}-->
                            <td align="center"><!--{$arrPayment&#91;$payment_id&#93;}--></td>
                            <td align="right"><!--{$arrResults&#91;cnt&#93;.total|number_format}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.commit_date|sfDispDBDate|default:"未発送"}--></td>
                            <td align="center"><!--{$arrResults&#91;cnt&#93;.deliv_date}--></td>
                            <td align="center"><!--{$arrORDERSTATUS&#91;$status&#93;}--></td>
                            <td align="center">&lt;a href=&quot;./&quot; onClick=&quot;fnOpenPdfSettingPage(&#039;pdf.php?order_id=<!--{$arrResults&#91;cnt&#93;.order_id}-->','pdf_input','500','650'); return false;"&gt;<span class="icon_class">帳票</span></a>&lt;input type=&quot;checkbox&quot; name=&quot;pdf_order_id[]&quot; value=&quot;<!--{$arrResults&#91;cnt&#93;.order_id}-->" &gt;
                            </td>
                            <td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnChangeAction('<!--{$smarty.const.URL_ORDER_EDIT}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults&#91;cnt&#93;.order_id}-->'); return false;"&gt;<span class="icon_edit">編集</span></a></td>
                            <td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnChangeAction('<!--{$smarty.const.URL_ORDER_MAIL}-->'); fnModeSubmit('pre_edit', 'order_id', '<!--{$arrResults&#91;cnt&#93;.order_id}-->'); return false;"&gt;<span class="icon_mail">通知</span></a></td>
                            &lt;!--<td align="center">&lt;a href=&quot;<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnModeSubmit('delete_order', 'order_id', <!--{$arrResults&#91;cnt&#93;.order_id}-->); return false;"&gt;<span class="icon_delete">削除</span></a></td>--&gt;
                        </tr>

429と448行目に『お届け予定日』であるdeliv_dateを追加
『削除』435と454行目をコメントアウト

これだけです!

管理画面もちょっとしたことで非常に見やすく、使いやすくなりますからね。

簡単なので、是非やってみてください。

では!

山本

EC-CUBEでログインしているかログインしていないかを判断する方法

Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829 Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829

こんにちは、山本です。

EC-CUBEでログインしているかしていないかの判定をしたいときが
あると思いますが、今日はそのやり方を。

例えば・・・

・会員の人にだけ値段を表示させたい
・ログインしている時は「○○さん、こんにちは」のように名前を表示させたい

などなどいろいろ需要があるかと思います。

例えば、アジケ運営サイトのマイボトルパークでは
ヘッダーの部分で使用しています。

ログインしていない時

ログインしている時

 
このように使い分けができれば、お客様も使いやすくて
非常に便利ですよね。
 
 
で、さっそくそのやり方ですが、ここでは2つ紹介します。

まず1つめのやり方ですが、
PHPとテンプレート(xxx.tpl)の2つのファイルを弄ります。

 
PHP側でログイン判定、

// ログイン判定
$objCustomer = new SC_Customer();
if($objCustomer->isLoginSuccess()) {
	$this->tpl_login = true;
}

テンプレート(xxx.tpl)側で、

<!--{if $tpl_login}-->
 ログインしている時の処理
<!--{else}-->
 ログインしていない時の処理
<!--{/if}-->

これだけです。

これは「isLoginSuccess」という関数を利用してログイン判定をしているのですが、
せっかくのでその関数も見ておくと勉強になるかと思います。

 
eccube-2.4.3/data/class/SC_Customer.php

    // ログインに成功しているか判定する。
    function isLoginSuccess($dont_check_email_mobile = false) {
        // ログイン時のメールアドレスとDBのメールアドレスが一致している場合
        if(isset($_SESSION['customer']['customer_id'])
            && SC_Utils_Ex::sfIsInt($_SESSION['customer']['customer_id'])) {

            $objQuery = new SC_Query();
            $email = $objQuery->get("dtb_customer", "email", "customer_id = ?", array($_SESSION['customer']['customer_id']));
            if($email == $_SESSION['customer']['email']) {
                // モバイルサイトの場合は携帯のメールアドレスが登録されていることもチェックする。
                // ただし $dont_check_email_mobile が true の場合はチェックしない。
                if (defined('MOBILE_SITE') && !$dont_check_email_mobile) {
                    $email_mobile = $objQuery->get("dtb_customer", "email_mobile", "customer_id = ?", array($_SESSION['customer']['customer_id']));
                    return isset($email_mobile);
                }
                return true;
            }
        }
        return false;
    }

 
 
きちんとデーターベースまで見て判定しているのがわかりますね。

 
で、2つ目のやり方ですが、
テンプレート(xxx.tpl)の中で以下のようにします。

<!--{if $smarty.session.customer|@count &gt; 0}-->
 ログインしている時の処理
<!--{else}-->
 ログインしていない時の処理
<!--{/if}-->

たったこれだけです。

が、実はこのやり方、セッション変数を見ているだけなので
厳密なログイン判定とは少し異なっています。

あまりお勧めはできないのですが
1つ目のやり方ができない!という人は2つ目の方法でやってみてください。
 

ちなみに・・・
上記で使用されているセッション変数『customer』には何が入っているのか?
と思って調べてみました。

Array (
[customer_id] => 1
[name01] => 山本
[name02] => 光彰
[kana01] => ヤマモト
[kana02] => ミツアキ
[zip01] => 151
[zip02] => 0062
[pref] => 1
[addr01] => 東京都渋谷区元代々木町21-9
[addr02] => シルエット元代々木203号室
[email] => info@ajike.co.jp
[email_mobile] =>
[tel01] => 03
[tel02] => 1234
[tel03] => 1234
[fax01] =>
[fax02] =>
[fax03] =>
[sex] => 1
[job] =>
[birth] =>
[password] => fc5ecab977b4af13927700492952f7b7cebxxxxx
[reminder] => 1
[reminder_answer] => xxxx
[secret_key] => r4b946dca68bc3xxxxxxx
[first_buy_date] => 2010-03-08 12:24:30.261447
[last_buy_date] => 2010-05-19 12:33:03.059411
[buy_times] => 5
[buy_total] => 117456
[point] =>
[note] =>
[status] => 2
[create_date] => 2010-03-08 12:23:54.589482
[update_date] => 2010-03-08 12:23:54.589482
[del_flg] => 0
[cell01] =>
[cell02] =>
[cell03] =>
[mobile_phone_id] =>
[mailmaga_flg] => 1 )
 

なるほど~お客様情報がたんまり入ってるのですね。。。
 
以上、是非参考にして、やってみてください。

では!

山本

EC-CUBE 新着情報のRSSのバグ修正

Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829 Notice: get_settings の使用はバージョン 2.1.0 から非推奨になっています! 代わりに get_option() を使ってください。 in /var/www/html/wp-includes/functions.php on line 3829

こんにちは、山本です。

EC-CUBEでは新着情報のRSSの機能が標準搭載されているのですが
これがなんとバグありで、日付表示などがおかしいのです。

なのでそれの修正方法を書こうと思います。

対象は現時点で最新の正式版(最新安定版)2.4.3です。
(といっても結構昔からあるバグのようなので古いバージョンでも対象になるかと思います。)

ナイトリービルド版では修正済みとのことなので
それを参考に修正しました。

修正するファイルは2つです。

1.data/class/pages/rss/LC_Page_Rss.php
2.data/Smarty/templates/default/rss/index.tpl
——————————————

1.data/class/pages/rss/LC_Page_Rss.php
これは2箇所変更

 

        header("Content-type: application/xml");

        //新着情報をセット
        $this->arrNews = $arrNews;
        $this->timestamp = SC_Utils_Ex::sf_mktime("r", $arrNews[0]['hour'], $arrNews[0]['minute'], $arrNews[0]['second'], $arrNews[0]['month'], $arrNews[0]['day'], $arrNews[0]['year']);

        //店名をセット

まず71行目を削除

 

    /**
     * 新着情報を取得する
     *
     * @param SC_Query $objQuery DB操作クラス
     * @return array $arrNews 取得結果を配列で返す
     */
    function lfGetNews(&$objQuery){
        $col = "";
        $col .= "     news_id ";								//新着情報ID
        $col .= "     ,news_title ";							//新着情報タイトル
        $col .= "     ,news_comment ";							//新着情報本文

        if (DB_TYPE == "pgsql") {
            $col .= "     ,to_char(news_date, 'YYYY') AS YEAR ";	//日付(年)
            $col .= "     ,to_char(news_date, 'MM') AS MONTH ";		//日付(月)
            $col .= "     ,to_char(news_date, 'DD') AS DAY ";		//日付(日)
            $col .= "     ,to_char(news_date, 'HH24') AS HOUR ";	//日付(時間)
            $col .= "     ,to_char(news_date, 'MI') AS MINUTE ";	//日付(分)
            $col .= "     ,to_char(news_date, 'SS') AS SECOND ";	//日付(秒)
        }else if (DB_TYPE == "mysql") {
            $col .= "     ,DATE_FORMAT(news_date, '%Y') AS YEAR ";		//日付(年)
            $col .= "     ,DATE_FORMAT(news_date, '%m') AS MONTH ";		//日付(月)
            $col .= "     ,DATE_FORMAT(news_date, '%d') AS DAY ";		//日付(日)
            $col .= "     ,DATE_FORMAT(news_date, '%H') AS HOUR ";		//日付(時間)
            $col .= "     ,DATE_FORMAT(news_date, '%i') AS MINUTE ";	//日付(分)
            $col .= "     ,DATE_FORMAT(news_date, '%s') AS SECOND ";	//日付(秒)
        }
        $col .= "     ,news_url ";								//新着情報URL
        $col .= "     ,news_select ";							//新着情報の区分(1:URL、2:本文)
        $col .= "     ,(SELECT shop_name FROM dtb_baseinfo limit 1) AS shop_name  ";	//店名
        $col .= "     ,(SELECT email04 FROM dtb_baseinfo limit 1) AS email ";			//代表Emailアドレス
        $from = "dtb_news";
        $where = "del_flg = '0'";
        $order = "rank DESC";
        $objQuery->setorder($order);
        $arrNews = $objQuery->select($col,$from,$where);
        return $arrNews;
    }

次にこのlfGetNewsという関数を丸ごと以下に変更

    /**
     * 新着情報を取得する
     *
     * @param SC_Query $objQuery DB操作クラス
     * @return array $arrNews 取得結果を配列で返す
     */
    function lfGetNews(&$objQuery){
        $col = "";
        $col .= "news_id ";        // 新着情報ID
        $col .= ",news_title ";    // 新着情報タイトル
        $col .= ",news_comment ";  // 新着情報本文
        $col .= ",create_date ";     // 日付
        $col .= ",news_url ";      // 新着情報URL
        $col .= ",news_select ";   // 新着情報の区分(1:URL、2:本文)
        $col .= ",(SELECT shop_name FROM dtb_baseinfo limit 1) AS shop_name  ";    // 店名
        $col .= ",(SELECT email04 FROM dtb_baseinfo limit 1) AS email ";           // 代表Emailアドレス
        $from = "dtb_news";
        $where = "del_flg = '0'";
        $order = "rank DESC";
        $objQuery->setorder($order);
        $arrNews = $objQuery->select($col,$from,$where);
        
        // RSS用に変換
        foreach (array_keys($arrNews) as $key) {
            $row =& $arrNews[$key];
            // 日付
            $row['news_date'] = date('r', strtotime($row['create_date']));
        }
        
        return $arrNews;
    }

 
2.data/Smarty/templates/default/rss/index.tpl
これは一箇所だけ

		
			<!--{if $arrNews&#91;cnt&#93;.news_url == '' }-->
				 <!--{$smarty.const.SITE_URL}--> 
			<!--{else}-->
				 <!--{$arrNews&#91;cnt&#93;.news_url|escape}-->
			<!--{/if}-->
			<title> <!--{ $arrNews&#91;cnt&#93;.news_title|sf_mb_convert_encoding:$encode|escape }--> </title>
			<!--{$arrNews&#91;cnt&#93;.news_comment|truncate:256|sf_mb_convert_encoding:$encode|escape}-->
			&lt;!--{* <!--{"r"|sf_mktime:$arrNews&#91;cnt&#93;.hour:$arrNews&#91;cnt&#93;.minute:$arrNews&#91;cnt&#93;.second:$arrNews&#91;cnt&#93;.month:$arrNews&#91;cnt&#93;.day:$arrNews&#91;cnt&#93;.year}--> *}--&gt;
			<!--{$timestamp|escape}-->
		

上記の49と50行目を以下に変更

		
			<!--{if $arrNews&#91;cnt&#93;.news_url == '' }-->
				 <!--{$smarty.const.SITE_URL}--> 
			<!--{else}-->
				 <!--{$arrNews&#91;cnt&#93;.news_url|escape}-->
			<!--{/if}-->
			<title> <!--{ $arrNews&#91;cnt&#93;.news_title|sf_mb_convert_encoding:$encode|escape }--> </title>
			<!--{$arrNews&#91;cnt&#93;.news_comment|truncate:256|sf_mb_convert_encoding:$encode|escape}-->
			<!--{$arrNews&#91;cnt&#93;.news_date|escape}-->
		

 
以上です。

これできちんと時間などが表示されるようになると思います。

アジケ運営サイトではこんな感じです。

マイボトルパーク新着情報はこちら

 
調べてみると結構前のバージョンからのバグらしいですね・・・

気付いた人は是非修正してみてください。

では!

EC-CUBEで使われているSmartyって何?

こんにちは、山本です。

先日の勉強会の報告をします。
今回はEC-CUBEで使用されている「Smarty」の基礎について説明しました。

以下メモレベルですが是非ご参考ください。
 
 
●Smartyってなに?

PHPプログラムのテンプレートエンジン

●テンプレートエンジンって何?

PHPでWebプログラミングすると
HTMLコードにコードを埋め込むのでごっちゃになって、
保守性が低下する。

なのでテンプレートエンジンの登場!

ページのデザインと,ロジックのコーディングを分離している。

1.PHPのプログラムファイル
2.ページデザインテンプレートファイル

プログラマは1を、デザイナーは2をやる。

●テンプレートエンジンってSmarty以外にもあるの?

PHPで用いることができるテンプレートエンジンは,
実はSmarty以外にもたくさんある。

「Heyes Template Class」「FastTemplate」「ShellPage」
「STP Simple Template Parser」「OO Template Class」
「SimpleTemplate」「bTemplate」「Savant」

参考:
世界のPHPテンプレートエンジン、トップ25

●Smartyの特長は?

1.一番有名(わからないときに検索すれば引っかかりやすい)
2.処理パフォーマンスが高速
3.関数や修飾子、ライブラリが抱負
4.機能の拡張が容易
5.管理機能が充実
6.エラーメッセージがわかりやすい

など・・・

●では実際にEC-CUBEのソースを見てみる!
EC-CUBE Version 2.4.3(zip)を使用

■商品一覧ページ
デモサイトでの商品一覧ページ
1.PHPのプログラムファイル
  →dataclasspagesproductsLC_Page_Products_List.php

2.ページデザインテンプレートファイル
  →dataSmartytemplatesdefaultlist.tpl

■商品詳細ページ
デモサイトの商品詳細ページ
1.PHPのプログラムファイル
  →dataclasspagesproductsLC_Page_Products_Detail.php

2.ページデザインテンプレートファイル
  →dataSmartytemplatesdefaultdetail.tpl

————————————————
 
 
 
Smarty以外にもいろいろあるというのは知りませんでしたね。

最初はSmartyよくその良さがわかりませんでしたが
EC-CUBEを実際にカスタマイズしていると
Smartyの便利さがよくわかってきました。

慣れると本当に便利です。

是非何かの参考になればと。

では!

山本

ホーム > EC-CUBE

Search
Feeds
Meta

Return to page top