1 名前:nobodyさん [2009/07/04(土) 13:03:59 ID:20ztUasx] 柔軟性の高いテンプレートとプラグインで高度なネットショップが比較的安価に構築できる CAFEMILK SHOPPING CART V5 について。 ○ 公式 cafemilk.milkcafe.to/ サンプル cafemilk.milkcafe.to/v5s001/main ○ 価格 購入 50,000円 リース 1,000円/月 10,000円/年 OEMによる二次販売のプランあり カスタマイズパッケージプラン 300,000円 30万円で50万円までのカスタマイズ作業を行うというお得なプラン。ただし先払い。
38 名前:nobodyさん mailto:sage [2009/07/27(月) 12:47:23 ID:???] ルールの意味をわかりやすく説明するサンプルコード my $userdata = {}; $userdata->{test} = 1; ← @ 格納した情報を require 'test.pl' Test::testsub ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, }); print $userdata->{test}; ← 出力は 2 C サブルーチン内で書き換えた内容がちゃんと保持されている exit; sub test { my $argument = shift; my $config = $argument->{config}; my $userdata = $argument->{userdata}; ← A サブルーチン内のローカル変数に格納して my $log_error = $argument->{log_error}; my $log_alert = $argument->{log_alert}; my $status = $argument->{status}; $userdata->{test} = 2; ← B 書き換えているが }
39 名前:nobodyさん mailto:sage [2009/07/27(月) 12:57:27 ID:???] ■ CGIモジュール モジュールCGI.pmは以下のようにして呼び出される $userdata->{cgi_query} = CGI->new(); こうすることでCGIオブジェクトはdieしなくなるので、どこからでも呼び出して利用できる (CGI.pmはフォーム関連の環境変数を消してしまうので2度のuseができない) [例] my @param_list = $userdata->{cgi_query}->param();
40 名前:nobodyさん mailto:sage [2009/07/27(月) 13:01:32 ID:???] >>38 の訂正 ちょっとだけ require 'test.pl' > require 'test.pl'; sub test > sub testsub
41 名前:nobodyさん mailto:sage [2009/07/27(月) 13:04:51 ID:???] >>39 ちょっとだけ 2度のuse > 2度のnew
42 名前:nobodyさん mailto:sage [2009/07/27(月) 20:55:02 ID:???] このスレの書き込み、なにがしたいんだ?
43 名前:nobodyさん mailto:sage [2009/07/28(火) 00:49:04 ID:???] 誰かがプログラム解析して情報載せてるんだろ どこかwikiでも紹介したらそちらに行くんじゃ?
44 名前:nobodyさん mailto:sage [2009/07/28(火) 01:10:47 ID:???] ここはWEBプログラミング板だったよな
45 名前:nobodyさん mailto:sage [2009/07/28(火) 18:06:54 ID:???] ■ データベース 独自のモジュールを使う CSV形式 エクセルに対応してるらしい カラム名を指定して操作する 2種類 通常 商品や会員などを扱う ログ レコードの操作があまりできない 読込と追記専門 ローテーションする → 古いレコードは消えていく データベース操作の方法が特殊で、SQLインジェクションのような脆弱性は考えにくい
46 名前:nobodyさん mailto:sage [2009/07/28(火) 18:08:15 ID:???] 基本的な使い方 my $database = Cafemilk_database_basic->connect ← オブジェクト方式connectで呼び出す ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', ← カラム名の情報 column_separator => ',', database_filename => 'database/item.csv.cgi', ← データベース本体 database_separator => ',', database_mode => '+<', database_flock => $flock, ← ファイルロックはFLOCK }); $database->get_record_all(); ← データベースの情報をすべて取得(予約) my @lines = $database->get_extract_database(); ← 取得(予約)した情報を取り出し このへんにいろいろと処理 undef $database; ← 終了
47 名前:nobodyさん mailto:sage [2009/07/28(火) 18:15:04 ID:???] レコードのマッチングをしたいとき $database->get_record_all(); $database->match_database ({ column_name => 'カラム名', match_word => '値', }); my @lines = $database->get_extract_database(); レコードのサーチをしたいとき $database->get_record_all(); my @columns = ( "サーチしたいカラム1", "サーチしたいカラム2", "サーチしたいカラム3", ); $database->search_database ({ search_column => \@columns, ← 複数のカラムをまたがって検索できる search_words => $words, ← 半角スペースで区切って複数語検索が可能 character_mode => '1', ← 大文字小文字の区別をしない場合 }); my @lines = $database->get_extract_database();
48 名前:nobodyさん mailto:sage [2009/07/28(火) 18:24:32 ID:???] レコードのソートをしたいとき $database->get_record_all(); $database->sort_database ({ column_name => 'カラム名', reverse_mode => '0', ← reverseしない sort_mode => 'number_quick', ← number_quickかcharacter_quick }); my @lines = $database->get_extract_database(); 特定のレコードを差し替えたいとき $database->replace_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 records => \%record, ← 特定されたレコードに\%recordが書き込まれる }); → 差し替えは予約になるのでこのあとoverwriteが必要
49 名前:nobodyさん mailto:sage [2009/07/28(火) 18:28:03 ID:???] 特定のレコードを削除したいとき $database->delete_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 }); → 削除は予約になるのでこのあとoverwriteが必要 操作したデータベースを格納(予約) $database->set_extract_database ({ extract_database => \@lines, }); 格納(予約)したものを上書き $database->overwrite(); → 格納(予約)しなければmatch search sort replaceされたものを上書き 追記したいとき $database->postscript(\%record); → 予約せずに、また予約があってもそれを無視して追記を行う
50 名前:nobodyさん mailto:sage [2009/07/29(水) 13:10:49 ID:???] 特定のレコード(1件)の抽出 my $extract_database = $database->extract_last_record ({ extract_column_name => 'カラム名', extract_column_value => '値', }); → 通常では最初の該当レコードが、ログでは最後の該当レコードが帰ってくる レコードの内容の取得 →レコードの内容をいろいろ操作するために必要 my @lines = $database->get_extract_database(); foreach my $line (@lines) { my %target_values = $database->get_values_argument ({ database_values => $line, }); いろいろ処理 # print $target_values{hoge}; ← カラム名で値を参照できる # レコードの内容を変えたい場合 # $target_values{hoge} += 1000; ← 値を変更 # $database->replace_record ← 差し替え ← あとでoverwriteが必要なので注意 # ({ # extract_column_name => 'カラム名', # extract_column_value => '値', # records => \%target_values, # }); }
51 名前:nobodyさん mailto:sage [2009/07/29(水) 13:14:27 ID:???] その他 get_stack ← レコードの数を返す double_sort_database ← ダブルソート set_write_forbid ← (何か問題があったときなど)書込禁止命令 merge_database ← 重複のあるログの統合 (ry
52 名前:nobodyさん [2009/07/30(木) 12:02:02 ID:9vO1Ag/1] DUMMY接続 データベースの待ち時間の低減や多重なアクセスによるロックを防ぐための DUMMY接続ができる my @lines = $database->get_extract_database(); undef $database; ← いったんデータベースへの接続を閉じて my $database = Cafemilk_database_basic->dummy ← ダミー接続を開始する ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', column_separator => ',', database_separator => ',', }); $database->set_extract_database ({ extract_database => \@lines, });
53 名前:nobodyさん mailto:sage [2009/07/30(木) 16:03:06 ID:???] ■ データベースの動作速度と商品点数 CSVでデータベースを運用しているのでソートが遅い つまり運用可能な商品点数はソートの性能で決まる → ソートをまともに使用するなら商品点数は1000点くらいが限度のよう そこで商品のソートは設定で制限されている $config->{item_category}{item_sort}{limit} = '100'; ← デフォルトは100点 → これで5000点くらいまで大丈夫のようだ
54 名前:nobodyさん mailto:sage [2009/08/01(土) 00:36:22 ID:???] 2009.07.31 スキン製作例を掲載しました。
55 名前:nobodyさん [2009/08/04(火) 16:09:04 ID:8qC9FCVp] ■ 携帯に対応するには 標準では未対応となっているのですが、実は超簡単です。 1. main.cgiの以下のコメントをはずす # 端末を判定します。ケータイ端末かPC端末かということを判定します。 # 判定には川崎有亮(かわさきゆうすけ)氏の phone.pl を使用します。 # phone.pl はなるべく最新版を使用するように心がけてください。 # phone.pl 配布元 : www.kawa.net/works/perl/phone/pnews.html # require './pl/kawasaki/phone.pl'; # $userdata->{agent_type} = &phone_info(); 2. あとはスキンを作るだけ スキンは以下のディレクトリに作成 [cgi-bin/shop/]skin/user/cgi/default/mobile/japanese/yen/default/
56 名前:nobodyさん mailto:sage [2009/08/06(木) 05:54:07 ID:???] キャリア別に表示するには? 1. config_basicの以下の部分に追記 $config->{list}{device_type} = [qw(web mobile)]; ↓ $config->{list}{device_type} = [qw(web mobile ezweb docomo jphone)]; 2. cafemilk_cookie.plの以下の部分を修正 if (!$userdata->{agent_type}{type}) { $userdata->{device_type} = $config->{default}{device_type}; } else { $userdata->{device_type} = "mobile"; } ↓
57 名前:nobodyさん mailto:sage [2009/08/06(木) 05:56:20 ID:???] if (!$userdata->{agent_type}{type}) { $userdata->{device_type} = $config->{default}{device_type}; } elsif ($userdata->{agent_type}{type} eq 'docomo') { $userdata->{device_type} = "docomo"; } elsif ($userdata->{agent_type}{type} eq 'ezweb') { $userdata->{device_type} = "ezweb"; } elsif ($userdata->{agent_type}{type} eq 'jphone') { $userdata->{device_type} = "jphone"; } else { $userdata->{device_type} = "mobile"; } 3. スキン作る [cgi-bin/shop/]skin/user/cgi/default/ezweb/japanese/yen/default/ [cgi-bin/shop/]skin/user/cgi/default/docomo/japanese/yen/default/ [cgi-bin/shop/]skin/user/cgi/default/jphone/japanese/yen/default/
58 名前:nobodyさん mailto:sage [2009/08/06(木) 06:13:59 ID:???] マルチ端末の話が出たのでおまけ やろうとおもえば PCのディスプレイ解像度に合わせた表示もできます たとえば $config->{list}{device_type}に PC800 PC1000 PC1200 PC1600 PC1900 といった値を追加して webスキンからjavascriptでディスプレイの幅を飛ばし 幅の情報から$userdata->{device_type}を設定するようにする という具合でたぶんOK。(無保証)
59 名前:nobodyさん mailto:sage [2009/08/06(木) 06:24:27 ID:???] さらにおまけ 同じような感覚でマルチ言語もできるはず $userdata->{language_type}を使う 同じような感覚でマルチスキンを使って表示の切り替えも(ry $userdata->{template_type}を使う 季節ごととか時間ごととかてきとうに
60 名前:nobodyさん mailto:sage [2009/08/07(金) 00:46:32 ID:???] なにげに拡張性高杉
61 名前:nobodyさん mailto:sage [2009/08/09(日) 03:10:27 ID:???] ■ OEM販売 独自カスタマイズ品を自社製品として販売することが可能というもの。 「諸事情」のある企業向けだということ。 価格表がすごい 数量 価格 単価 1 100,000 100,000 2 180,000 90,000 3 240,000 80,000 4 280,000 70,000 5 300,000 60,000 10 500,000 50,000 100 1,000,000 10,000 1000 2,000,000 2,000
62 名前:nobodyさん mailto:sage [2009/08/09(日) 03:14:33 ID:???] ■ 現在まで判明している製品のバグ カート内容の復活 カートをクリアしたあと会員ログインを行うか会員登録を行うか問い合わせ を行うとカートの内容が復活してしまうことがある。 メールのデコード処理 自動発行メールにて顧客が入力した“&”の文字が“&”になるなど、 一部文字についてデコード処理が行われていない。 商品の数量単位の表示 商品の在庫を指定しなかった場合に数量単位が表示されない sendまね〜るでのサーバーエラー Windowsサーバにてsendまね〜るを使ったメール送信が短時間に連続する とサーバーエラーが表示されることがある。
63 名前:nobodyさん mailto:sage [2009/08/09(日) 03:16:35 ID:???] 全角に訂正 自動発行メールにて顧客が入力した“&”の文字が“&amp;”になるなど、 一部文字についてデコード処理が行われていない。
64 名前:nobodyさん [2009/08/09(日) 14:59:00 ID:mmb4vJxL] 1000個買って立派なスキン載せて1万で売ったら800万の利益……
65 名前:nobodyさん mailto:sage [2009/08/09(日) 15:20:19 ID:???] これって 中小のWEB制作会社が自社開発のふりをして顧客に納品するんだろうな
66 名前:nobodyさん mailto:sage [2009/08/13(木) 13:20:43 ID:???] V5.1.5リリースの準備がほぼ終わったところです。 簡易バックアップの実装に加えて、ブログがHTMLエディタに対応します。
67 名前:nobodyさん [2009/08/14(金) 17:54:35 ID:HASTvfEn] 本日、V5.1.5をリリースしました。 簡易バックアップの機能を実装しました ブログがHTMLエディタ対応になって編集しやすくなりました。 これはopenWYSIWYGを使ってますね
68 名前:nobodyさん mailto:sage [2009/08/16(日) 06:56:02 ID:???] 本人なのか第三者なのか、わからん口調だなぁ・・・
69 名前:nobodyさん mailto:sage [2009/08/16(日) 14:58:22 ID:???] リリース情報は公式からのコピペだよ
70 名前:nobodyさん [2009/08/19(水) 14:05:16 ID:E4giVJcR] V5.1.6ではおもに以下のような変更が予定されています。 1. ケータイ端末への対応
71 名前:nobodyさん [2009/08/20(木) 01:44:28 ID:ay9S4Px5] いちいち報告しなくていいよ
72 名前:nobodyさん [2009/08/29(土) 12:11:44 ID:kpDWlVo+] カスタマイズ性は高そうだけど、勉強コストが死ぬほど掛かりそうだな。 「業者が小規模ECをOEMで大量に請け負う」という用途に特化すると活躍しそうだけど、 ちょっとカスタマイズしてみるというのは荷が重いなぁ。
73 名前:nobodyさん mailto:sage [2009/08/29(土) 14:09:49 ID:???] そんなあなたにはEC-CUBEですよ!
74 名前:nobodyさん mailto:sage [2009/08/29(土) 15:41:52 ID:???] これは何だ? cafemilk.milkcafe.to/shogi/
75 名前:nobodyさん mailto:sage [2009/09/01(火) 17:57:46 ID:???] 何この明らかな宣伝スレ
76 名前:nobodyさん [2009/09/02(水) 17:18:58 ID:/bsIaaKn] 発想を変えるんだ! >>1-63 はテンプレに違いない!
77 名前:nobodyさん [2009/09/05(土) 10:02:07 ID:YIqkwmYO] タイトル : Re: [開発]V5.1.6関連の情報 記事No : 93 [関連記事] 投稿日 : 2009/09/05(Sat) 00:11 投稿者 : cafemilk 本日、V5.1.6をリリースしました。 ケータイ端末に対応しました。 ケータイ端末への対応は、これまで無効にしていた端末判定の処理を有効に し、そこにケータイ用のスキンを追加しただけで実現しており、V5製品の基 本性能の高さを証明するものとなっています。
78 名前:nobodyさん mailto:sage [2009/09/05(土) 10:40:57 ID:???] 宣伝きめえ必死だな
79 名前:nobodyさん mailto:sage [2009/09/07(月) 03:09:45 ID:???] これはひどいw
80 名前:nobodyさん [2009/09/08(火) 01:54:12 ID:RMrK+puP] 携帯用スキンに問題があったようですね 早速差分が出てます しかし告知はされていないような
81 名前:nobodyさん mailto:sage [2009/09/08(火) 03:30:58 ID:???] 告知がなければ貼ることもできないという壮大な罠
82 名前:nobodyさん mailto:sage [2009/09/08(火) 14:10:51 ID:???] ワロタ
83 名前:nobodyさん [2009/09/25(金) 15:00:44 ID:zCB6UQag] > 2009.09.25 公認マニュアルサイトを掲載しました。 www29.atwiki.jp/cafemilk/
84 名前:nobodyさん mailto:sage [2009/09/27(日) 04:14:07 ID:???] もういいよこの宣伝スレ。 誰か使ってる奴いるの?
85 名前:nobodyさん mailto:sage [2009/09/27(日) 11:58:46 ID:???] とりあえず設置してみたところ(画像以外の)ファイル数が2300ってどうよ?
86 名前:nobodyさん mailto:sage [2009/09/27(日) 22:08:05 ID:???] >>83 公認ってまさか作者以外の人間が作ったの? >公式の情報より圧倒的に詳しい内容。 www29.atwiki.jp/cafemilk/pages/15.html 作者の自演が酷すぎて泣けてくる
87 名前:nobodyさん mailto:sage [2009/09/29(火) 12:46:26 ID:???] 作者ともう一人か二人お手伝いさんがいそうな感じ