2010年2月16日火曜日

「何の用事」から見た中日友好

(あるおもしろい作文を見つけました、みんなで一緒に読んでみよう。)

「何の用事」

  何の変哲もない一言だ。

  ある日、私は日本人の友達に、翌日の約束の時間について、確認の電話をかけた。

  「明日のバスケット、何時からだっけ」「朝九時。でも、ごめん。俺ちょっと用事があって、行けそうにないんだ」そこで、私は無意識にこう言った。

  「えっ、用事って、何の用事」

  「ちょっと…」

  彼は言いさして、黙り込んだ。私は、多分言い辛いことがあるのだろうと、少し気になったが、電話のやり取りには、特に違和感を覚えなかった。

  しかし、数日後、突然彼に尋ねられた。

  「俺の電子辞書に書いてあるんだけれど…」

  彼の話だと、日本人は誘いや約束などを断る時、「ごめん、ちょっと用事があって…」と言うのが普通だ。しかし、それは中国人にとって誠意のない理由に聞こえ、自分が相手に大事にされてないと感じてしまう。それで、中国人はたまらず「何の用事」かと聞く。

  「許さん、これ、どう思う」

  その時、私は、先日の電話を思い出した。確かに自分も「何の用事」かと聞いた。もしや、それは、私が彼の返事に誠意がないと思ったと誤解されたのではないか。不安に思った私は、自分の気持ちを精一杯説明した。

  「違うよ。そんなつもりで『何の用事』と聞いたんじゃなくて、それはいわゆる中国人の習慣みたいなものでさ…」

  それを聞いた彼は、少々驚いたようだった。

  「えっ、習慣。でも、日本人はあまり聞かないよ。プライバシーに関わることだから。聞くことは、余計なお世話になるし」

  その話を聞いて、私はやっと分った。自分が無意識に口にした「何の用事」に、彼はきっと違和感を覚え、ずっと気にしていて、それで、私にわざわざ聞いたのだろう。

  相手のことを大事に思っているからこそ、中国人は「何の用事」かと聞く。だが、本気でその「用事」の詳しい説明を求めているわけでは ない。「もし相手が困っているなら、力になりたい」という思いやりが、この「何の用事」という言葉に潜んでいる。そして、そう聞くことは、中国人の習慣に なっている。

  ところが、日本人は、その言葉の背景にある中国人の思いやりの気持ちに気づかない。なぜなら、また、相手のプライバシーを侵害しな いように、また、相手を困らせないように、いつも心がけているからだ。つまり、相手が誘いや約束を断った理由を「聞かない」ことが、日本人なりの思いやり なのだ。

  結局、「何の用事」かと聞くのも、聞かないのも、どちらも相手のことを思いやる上での行動だ。しかし、その正反対の行動の背景について、私たちはあまり深く考えない。私はこの一件で、両国の行動、つまり習慣の違いの大きさをつくづく感じた。

  確かに両国の習慣は、大きく異なるところがある。だが、その習慣の違いは、実は同じ気持ちから来るものなのだ。たとえ正反対の行動で あっても、どちらも同じ思いやりの気持ちがあることを知れば、お互いの交流もより円滑に進むはずだ。そのため、習慣の違いにある背景を、両国の人々に伝え なければならない。私は日本語学習者の一人として、自分の習った日本語、学んだ日本文化を生かし、両国の人々のための「伝道師」になりたい。「そうか、そ うだったのか。行動は違うけど、気持ちは一緒だよね」

  私の説明を聞いて、彼はうなずいてくれた。

  彼と同じように、一人でも多くの人々に、「中国人と日本人、行動違えど、気持ちは同じ」ということを理解してほしい。そうすれば、中日友好には明るい未来が必ずあるものと信じている。

2010年2月10日水曜日

EC-CUBEでオススメ商品を3D回転させる!!

変更ファイル
\data\Smarty\templates\default\bloc\best5.tpl
\html\user_data\packages\default\css\index.css
追加ファイル
\html\user_data\packages\default\js\ mootools-1.2.4-core-nc.js
\html\user_data\packages\default\js\mooVRotatingMenu.js

1. mooVRotatingMenu.jsはmootoolsのプラグインで、mootools.jsが必要です。mooVRotatingMenu.jsとmootools-1.2.4-core-nc.jsをダウンロードします。

mootools.jsダウンロード
mooVRotatingMenu.jsダウン ロード

2. ダウンロードしたファイルを\html\user_data\packages\default\js\のフォルダへ追加します。

3. 次にオススメ商品のブロック(\data\Smarty\templates\default\bloc\best5.tpl)をのコードを以下のように変更します。

<!-- 画像回転用 -->
<script src="<!--{$TPL_DIR}-->js/mootools-1.2.4-core-nc.js" type="text/javascript"></script>
<script src="<!--{$TPL_DIR}-->js/mooVRotatingMenu.js" type="text/javascript"></script>
<!-- END -->
<!--{if count($arrBestProducts) > 0}-->
<div id="centerarea">
<div id="recomend_titlearea">
<h2>推荐信息</h2>
</div>
<div id="recomendarea">
<!-- 画像回転用 -->
<script type="text/javascript">
window.addEvent('domready', function(){
//menu horizontal
var myHorizontalToto = new mooVRotatingMenu($('rotatingMenu'), $$('.mooRotate'), {
maxWidth: 125,
maxHeight: 125
});
});
</script>
<!-- END -->
<ul id="rotatingMenu">
<!--{section name=cnt loop=$arrBestProducts}-->
<li class="mooRotate">
<!--{if $arrBestProducts[cnt].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrBestProducts[cnt].main_list_image`"}-->
<!--{else}-->
<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->
<a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrBestProducts[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path
sfRmDupSlash}-->&width=125&height=125" alt="<!--{$arrBestProducts[cnt].name
escape}-->" title="<!--{$arrBestProducts[cnt].name
escape}-->
<!--{assign var=price01 value=`$arrBestProducts[cnt].price01_min`}-->
<!--{assign var=price02 value=`$arrBestProducts[cnt].price02_min`}-->
<!--{if $price02 == ""}-->
<!--{$price01
sfPreTax:$arrInfo.tax:$arrInfo.tax_rule
number_format}-->
<!--{else}-->
<!--{$price02
sfPreTax:$arrInfo.tax:$arrInfo.tax_rule
number_format}-->
<!--{/if}-->元

" />
</a>
</li>
<!--{/section}-->
</ul>
</div>
</div>
<!--{/if}-->

4. 次に\html\user_data\packages\default\css\index.cssに以下のようにスタイルを設定します。

/*お気に入り商品3D回転
----------------------------------------------- */
#rotatingMenu {
width: 550px;
height: 200px;
position: relative;
}
#rotatingMenu .mooRotate a {
display: block;
width: 125px;
height: 125px;
}
/* recomendarea
----------------------------------------------- */
div#recomendarea {
margin: 0 auto;
font-size: 80%;
float: left;
width: 550px;
height:470px;
padding: 10px 10px 10px 10px;
border-right:solid 1px #ccc;
border-left:solid 1px #ccc;
border-bottom:solid 1px #ccc;
background-image: url(../image/best5_back.jpg);
}

div#recomend_titlearea{
width: 570px;
height:auto;
background: url("../image/titleback.gif") repeat-x;
border-top: solid 1px #ccc;
border-right:solid 1px #ccc;
border-left:solid 1px #ccc;
border-bottom:solid 1px #999999;
margin-top:15px;
}
div#recomend_titlearea h2{
padding: 0 0 0 15px;
}

以上でオススメ商品が3D回転します。

2010年2月4日木曜日

我们去了中国

日本電子専門学校高度処理科での卒業制作で中国の衣服卸売販売店へショッピングサイトの提供を行い、今回はサイトの操作方法を教育するため中国・上海からユーザーの住んでいる杭州へ行ってきました。

上海は想像以上に物価が高く、町並みは綺麗でした。

上海の新天地というとこで六本木ヒルズのようなとこ

さらに、ユーザーのおもてなしに驚きました。
ホテルを予約してくれていて食事は毎回すごく高級そうな店で上海蟹やらなんやらとすごい量でした。

帰りたくなかったです・・。


印象的だったのは誰か一人がたばこを吸うときには、
そこにいる全員にたばこを配ってから吸う習慣があるようで、
10分に1本のペースぐらいで たばこを吸ってくらくらでした。

あと、一回の食事で乾杯が50回くらいあったかなぁ。

杭州の方の卸売デパート


卸売デパートの中には千店舗以上ありそうでした。


サイトを提供した店舗にて林(店舗責任者)
 
工場社長室にて左から李(工場経営者)、林(店舗経営者)、田崎、姜


1日目にユーザー教育、2日目に工場見学と充実した内容でした。
店舗経営者は結構おしゃれでMonclerの ダウンやDSQUAREDのジーンズを履いていましたが、
店舗には日本では50代向けの様なセーターがいっぱいなのでなぜか聞いたら、
『好きなものと売っ て儲かるものは別だから』と名言をいただきました。

工場の経営者も、服を染める原料の調査をしたり、工場の無駄な電気を消してたり環境について気にし ているようで中国のイメージがかなり変わりました。

NEW! EC-CUBEカスタマイズ(検索フォームの追加)

サイドナビがある状態の時はヘッダーエリアに検索ブロックを表示する

変更ファイル
  • \data\class_extends\page_extends\frontpart\bloc\LC_Page_FrontParts_Bloc_SearchProducts_Ex.php
  • \data\class\pages\LC_Page.php
  • \data\Smarty\templates\default\header.tpl
  • \html\user_data\packages\default\css\main.css

1.LC_Page_FrontParts_Bloc_SearchProducts_Ex.phpにsetSearchProductsファンクションの追加
function setSearchProducts() {
        $arrSearch = array();    // 検索項目表示用
        $objDb = new SC_Helper_DB_Ex();
        // 選択中のカテゴリIDを判定する
        $this->category_id = $objDb->sfGetCategoryId($_GET['product_id'], $_GET['category_id']);
        // カテゴリ検索用選択リスト
        $arrRet = $objDb->sfGetCategoryList('', true, ' ');
        if(is_array($arrRet)) {
            // 文字サイズを制限する
            foreach($arrRet as $key => $val) {
                $arrRet[$key] = SC_Utils_Ex::sfCutString($val, SEARCH_CATEGORY_LEN, false);
            }
        }
        $this->arrCatList = $arrRet;
}


2.LC_Page.phpにLC_Page_FrontParts_Bloc_SearchProducts_Ex.phpの呼び出しとinit()の中にコードを追加

require_once(CLASS_EX_PATH . "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_SearchProducts_Ex.php");
function init() {
    $objSearchProducts = newLC_Page_FrontParts_Bloc_SearchProducts_Ex();
        $objSearchProducts->setSearchProducts();
    $this->category_id_header = $objSearchProducts->category_id;
    $this->arrCatList_header = $objSearchProducts->arrCatList;
}

3.header.tpl の#header内に追加

<!--▼搜索条件由此开始-->
<!--{if $arrPageLayout.LeftNavi|@count > 0}-->
    <div id="main_searcharea">
      <!--搜索框-->
        <form name="search_form" id="search_form" method="get" action="<!--{$smarty.const.URL_DIR}-->products/list.php">
        <div id="mainsearchtxt">
          <input type="hidden" name="mode" value="search" />
            <select name="category_id" class="searchcmbbox">
              <option label="从商品分类来选" value="">从商品分类来选</option>
              <!--{html_options options=$arrCatList_header selected=$category_id_header}-->
            </select>
           
            <input type="text" name="name" class="searchtxtbox" maxlength="50" value="<!--{$smarty.get.name|escape}-->" />
        </div>
            <div id="mainsearchbtn"><input type="image" onmouseover="chgImgImageSubmit('<!--{$TPL_DIR}-->image/mainsearchbtn_on.jpg',this)" onmouseout="chgImgImageSubmit('<!--{$TPL_DIR}-->image/mainsearchbtn.jpg',this)" src="<!--{$TPL_DIR}-->image/mainsearchbtn.jpg" class="mainsearchbtn" alt="搜索" name="search" />
            </div>
        </form>
    </div>
<!--{/if}-->
<!--▲搜索条件到此为止-->

4.main.css に最後に追加

/* メイン検索main_searcharea
----------------------------------------------- */
div#main_searcharea {
    float:left;
    clear:both;
    width: 950px;
    height:50px;
    margin: 0 auto;
    background:no-repeat url("../image/mainsearchback.jpg");
    padding-top: 10px;
    padding-right: 10px;
    padding-left: 10px;
}
div#main_searcharea .searchcmbbox {
    width: 140px;
    border:inset 1px #bbbbbb;
    margin-left:80px;
}
div#main_searcharea .searchtxtbox {
    width: 360px;
    height:20px;
    border-top:2px solid #aaaaaa;
    border-right:1px solid #cccccc;
    border-left:2px solid #aaaaaa;
    border-bottom:1px solid #cccccc;
    margin-left:15px;
    background: #fff none;
}
div#main_searcharea #mainsearchtxt {
    float:left;
    width: 610px;
}
div#main_searcharea #mainsearchbtn {
    float:left;
}

2010年1月30日土曜日

オープンソースカンファレンス2010 Tokyo/Springへ出展

オープンソースカンファレンス2010 Tokyo/Springへの出展を行います。出展内容はEC-CUBEの中国語バージョンをライトニングトークと展示ブースにて発表します。

日程:2010年2月26日(金)・27日(土) 10:00-17:00


会場:明星大学日野キャンパス 26号館(多摩モノレール 「中央大学・明星大学駅」から大学まで直結。会場まで徒歩5分)
内容:オープンソースに関する最新情報の提供
・展示 - オープンソースコミュニティ、企業・団体による展示
・セミナー - オープンソースの最新情報を提供
主催オープンソースカンファレンス実行委員会

EC-CUBEで新規のテンプレート変数と値の割り当て方

初歩的な内容ですが一応。
data\class\SC_View.phpの中にテンプレートに値を割り当てるfunctionが用意されているのでこちらのfunctionを呼び出してテンプレート変数と値の割り当てを行います。
    function assign($val1, $val2) {
        $this->_smarty->assign($val1, $val2);
    }
まず、はじめに新規のテンプレート変数と値の割り当てを行いたいPHPファイルの中で以下コードを追加します。ここでは入力した名前を変数$nameに格納したものをテンプレート変数NAMEの値として割り当てています。
$objView  =  new SC_SiteView();
$name  =  “EC-CUBE”
$objView->assign("NAME", $name);
第一引数に任意の変数名、第二引数に値を指定します。
続いてテンプレートファイルに参照したい変数名を$this->tpl_mainpage = '';で指定されている Tplファイルへ追加します。   
<!--{$ NAME }-->さんこんにちは。
次のように表示されます。
EC-CUBEさんこんにちは。

EC-CUBEの商品カテゴリを全て表示

EC-CUBEのデフォルトでは商品カテゴリが折りたたまれているので常に全てが見えるように変更します。
例えば服であれば女性用、男性用をカテゴリに設定してその階層の下にTシャツのカテゴリがある場合、 女性用、男性用のみの表示になっています。男性用をクリックすると下の階層が見えるのですが、常にカテゴリ全てが見えていても邪魔にならないカテゴリの量なので変更します。

修正ファイル:\data\Smarty\templates\default\bloc\category.tpl

変更前:
<!--{if $arrTree[cnt].display == 1}-->
<!--{assign var=level value=`$arrTree[cnt].level`}-->
<!--{assign var=levdiff value=`$level-$preLev`}-->
<!--{if $levdiff > 0}-->
<ul>
<!--{elseif $levdiff == 0 && $firstdone == 1}-->
</li>
<!--{elseif $levdiff < 0}-->
<!--{section name=d loop=`$levdiff*-1`}-->
</li>
</ul>
<!--{/section}-->
</li>
<!--{/if}-->
<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>
<!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}-->
<!--{assign var=preLev value=`$level`}-->
<!--{/if}-->

 変更後:
    <!--{assign var=level value=`$arrTree[cnt].level`}-->
    <!--{assign var=levdiff value=`$level-$preLev`}-->
      <!--{if $levdiff > 0}-->
          <ul>
      <!--{elseif $levdiff == 0 && $firstdone == 1}-->
          </li>
      <!--{elseif $levdiff < 0}-->
        <!--{section name=d loop=`$levdiff*-1`}-->
            </li>
          </ul>
        <!--{/section}-->
        </li>
      <!--{/if}-->
    <li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>
    <!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}-->
    <!--{assign var=preLev value=`$level`}-->