バージョン選択

フォーラム

メニュー

オンライン状況

62 人のユーザが現在オンラインです。 (50 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 61
saadchohan もっと...

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > 管理機能 > v2.13 画像のアップロードにつきまして

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ma-ma
投稿日時: 2017/5/10 12:42
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 54
v2.13 画像のアップロードにつきまして
▼テンプレート
[EC-CUBE] 2.13.5、新規インストール
[レンタルサーバ] zenlogic
[PHP] PHP 5.6.21
[データベース] MySQL 5.1.73
[カスタマイズの有無] 無し

お世話になります。
現在、管理画面の商品登録の画像アップロードの機能を
カテゴリ登録にも作りたいと考えています。
LC_Page_Admin_Products.php
を確認してみたのですが、
画像をアップロードされている箇所がわかりませんでした。
画像アップロードの記述は別のファイルに記載があるのでしょうか?

ご教示頂ければ幸いです。
karin
投稿日時: 2017/5/10 13:18
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 618
Re: v2.13 画像のアップロードにつきまして
ma-ma 様

LC_Page_Admin_Products_Product.phpを確認してみてください。


----------------

468
投稿日時: 2017/5/10 14:27
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 712
Re: v2.13 画像のアップロードにつきまして
以下のカテゴリを画像に置き換えるプラグインの2系版を
ちょうど開発しております。
http://www.ec-cube.net/products/detail.php?product_id=1389

karinさんのおっしゃられるようにLC_Page_Admin_Products_Product.phpの
188行目~217行目付近や175行目に画像アップロードに関する記述があります。

処理の流れとして、商品詳細画面のアップロードボタンで、画像を一時ディレクトリに保存して、
商品確認画面から商品登録完了画面への流れの中で
画像データを一時ディレクトリから本番ディレクトリに移動させています。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/5/11 12:39
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 54
Re: v2.13 画像のアップロードにつきまして
karin様
468様

ご教示頂きありがとうざいました。
LC_Page_Admin_Products_Product.phpを参考に下記コードを追加いたしまたが、
正常に動作ができませんでした。
(下記コードで使用しているメソッドはそのままコピーしています。)
javascript上で
ReferenceError: fnInitSelect is not defined
のエラーが出ているのですが、どうすればよろしいのでしょうか?
お手数をおかけいたしますが、ご教示頂ければ幸いです。

------------
追加コード(function action()内)


// アップロードファイル情報の初期化
$objUpFile = new SC_UploadFile_Ex(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR);
$objDownFile = new SC_UploadFile_Ex(DOWN_TEMP_REALDIR, DOWN_SAVE_REALDIR);
$this->lfInitFile($objUpFile);
$objUpFile->setHiddenFileList($_POST);
$mode = $this->getMode();

switch ($mode) {
case 'complete':

// 一時ファイルを本番ディレクトリに移動する
$this->lfSaveUploadFiles($objUpFile, $objDownFile, $product_id);

// 画像のアップロード
case 'upload_image':
case 'delete_image':
// パラメーター初期化
$this->lfInitFormParam_UploadImage($objFormParam);
$this->lfInitFormParam($objFormParam, $_POST);
$arrForm = $objFormParam->getHashArray();

switch ($mode) {
case 'upload_image':
// ファイルを一時ディレクトリにアップロード
$this->arrErr[$arrForm['image_key']] = $objUpFile->makeTempFile($arrForm['image_key'], IMAGE_RENAME);
if ($this->arrErr[$arrForm['image_key']] == '') {
// 縮小画像作成
$this->lfSetScaleImage($objUpFile, $arrForm['image_key']);
}
break;
case 'delete_image':
// ファイル削除
$this->lfDeleteTempFile($objUpFile, $arrForm['image_key']);
break;
default:
break;
}

// 入力画面表示設定
$this->arrForm = $this->lfSetViewParam_InputPage($objUpFile, $objDownFile, $arrForm);
// ページonload時のJavaScript設定
$anchor_hash = $this->getAnchorHash($arrForm['image_key']);
$this->tpl_onload = $this->lfSetOnloadJavaScript_InputPage($anchor_hash);
break;


}
}
------------

468
投稿日時: 2017/5/11 15:06
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 712
Re: v2.13 画像のアップロードにつきまして
商品編集画面の初期化用のJavascriptがセットされていると思いますので、以下ようにimage_keyだけ渡すようにすれば良いかと思います。
$this->tpl_onload = $this->lfSetOnloadJavaScript_InputPage($anchor_hash);

$this->tpl_onload = $anchor_hash;

以下のメソッドもコピーされていると思いますが、こちらは削除してもいいと思います。
(多分、利用する事は無いと思いますので)
public function lfSetOnloadJavaScript_InputPage($anchor_hash = '')
    {
        return "eccube.checkStockLimit('" . DISABLED_RGB . "');fnInitSelect('category_id_unselect'); fnMoveSelect('category_id_unselect', 'category_id');" . $anchor_hash;
    }


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/5/12 12:32
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 54
Re: v2.13 画像のアップロードにつきまして
468様

ご返信ありがとうございます。
ご教示いただた通り行ったところ、
Javascriptのエラーはなくなったのですが、
画像のアップロードが正常にできませんでした。
LC_Page_Admin_Products_Category.phpのfunction action()部分と追加メソッド部分と
category.tplの追記した部分を下記に載せさせて頂きますので、
大変恐れ入りますがご教示いただけませんでしょうか?
よろしくお願いいたします。

-------------
【LC_Page_Admin_Products_Category.php】

public function action()
{
$objFormParam = new SC_FormParam_Ex();
$objCategory = new SC_Helper_Category_Ex();
$objUpFile = new SC_UploadFile_Ex(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR);
$objDownFile = new SC_UploadFile_Ex(DOWN_TEMP_REALDIR, DOWN_SAVE_REALDIR);

// 入力パラメーター初期化
$this->initParam($objFormParam);
$objFormParam->setParam($_POST);
$objFormParam->convParam();
// アップロードファイル情報の初期化
$this->lfInitFile($objUpFile);
$objUpFile->setHiddenFileList($_POST);
$mode = $this->getMode();
switch ($this->getMode()) {
// カテゴリ登録/編集実行
case 'edit':
$this->doEdit($objFormParam);
break;
// 入力ボックスへ編集対象のカテゴリ名をセット
case 'pre_edit':
$this->doPreEdit($objFormParam);
break;
// カテゴリ削除
case 'delete':
$this->doDelete($objFormParam);
break;
// 表示順を上へ
case 'up':
$this->doUp($objFormParam);
break;
// 表示順を下へ
case 'down':
$this->doDown($objFormParam);
break;
// FIXME r19909 によってテンプレートが削除されている
case 'moveByDnD':
// DnDしたカテゴリと移動先のセットを分解する
$keys = explode('-', $_POST['keySet']);
if ($keys[0] && $keys[1]) {
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objQuery->begin();

// 移動したデータのrank、level、parent_category_idを取得
$rank = $objQuery->get('rank', 'dtb_category', 'category_id = ?', array($keys[0]));
$level = $objQuery->get('level', 'dtb_category', 'category_id = ?', array($keys[0]));
$parent = $objQuery->get('parent_category_id', 'dtb_category', 'category_id = ?', array($keys[0]));

// 同一level内のrank配列を作成
$objQuery->setOption('ORDER BY rank DESC');
if ($level == 1) {
// 第1階層の時
$arrRet = $objQuery->select('rank', 'dtb_category', 'level = ?', array($level));
} else {
// 第2階層以下の時
$arrRet = $objQuery->select('rank', 'dtb_category', 'level = ? AND parent_category_id = ?', array($level, $parent));
}
for ($i = 0; $i < sizeof($arrRet); $i++) {
$rankAry[$i + 1] = $arrRet[$i]['rank'];
}

// 移動したデータのグループ内データ数
$my_count = $this->lfCountChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0]);
if ($rankAry[$keys[1]] > $rank) {
// データが今の位置より上がった時
$up_count = $rankAry[$keys[1]] - $rank;
$decAry = $objQuery->select('category_id', 'dtb_category', 'level = ? AND rank > ? AND rank <= ?', array($level, $rank, $rankAry[$keys[1]]));
foreach ($decAry as $value) {
// 上のグループから減算
$this->lfDownRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id'], $my_count);
}
// 自分のグループに加算
$this->lfUpRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0], $up_count);
} elseif ($rankAry[$keys[1]] < $rank) {
// データが今の位置より下がった時
$down_count = 0;
$incAry = $objQuery->select('category_id', 'dtb_category', 'level = ? AND rank < ? AND rank >= ?', array($level, $rank, $rankAry[$keys[1]]));
foreach ($incAry as $value) {
// 下のグループに加算
$this->lfUpRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id'], $my_count);
// 合計減算値
$down_count += $this->lfCountChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id']);
}
// 自分のグループから減算
$this->lfDownRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0], $down_count);
}
$objQuery->commit();
}
break;
// カテゴリツリークリック時
case 'tree':
break;
// CSVダウンロード
case 'csv':
// CSVを送信する
$objCSV = new SC_Helper_CSV_Ex();

$objCSV->sfDownloadCsv('5', '', array(), '', true);
SC_Response_Ex::actionExit();
break;
default:
break;
}

$parent_category_id = $objFormParam->getValue('parent_category_id');
// 空の場合は親カテゴリを0にする
if (empty($parent_category_id)) {
$parent_category_id = 0;
}
// 親カテゴリIDの保持
$this->arrForm['parent_category_id'] = $parent_category_id;
// カテゴリ一覧を取得
$this->arrList = $this->findCategoiesByParentCategoryId($parent_category_id);
// カテゴリツリーを取得
$this->arrTree = $objCategory->getTree();
$this->arrParentID = $objCategory->getTreeTrail($parent_category_id);
// ぱんくずの生成
$arrBread = $objCategory->getTreeTrail($this->arrForm['parent_category_id'], FALSE);
$this->tpl_bread_crumbs = SC_Utils_Ex::jsonEncode(array_reverse($arrBread));



switch ($mode) {
case 'complete':

// 一時ファイルを本番ディレクトリに移動する
$this->lfSaveUploadFiles($objUpFile, $objDownFile, $product_id);

// 画像のアップロード
case 'upload_image':
case 'delete_image':
// パラメーター初期化
$this->lfInitFormParam_UploadImage($objFormParam);
$this->lfInitFormParam($objFormParam, $_POST);
$arrForm = $objFormParam->getHashArray();

switch ($mode) {
case 'upload_image':
// ファイルを一時ディレクトリにアップロード
$this->arrErr[$arrForm['image_key']] = $objUpFile->makeTempFile($arrForm['image_key'], IMAGE_RENAME);
if ($this->arrErr[$arrForm['image_key']] == '') {
// 縮小画像作成
$this->lfSetScaleImage($objUpFile, $arrForm['image_key']);
}
break;
case 'delete_image':
// ファイル削除
$this->lfDeleteTempFile($objUpFile, $arrForm['image_key']);
break;
default:
break;
}

// 入力画面表示設定
$this->arrForm = $this->lfSetViewParam_InputPage($objUpFile, $objDownFile, $arrForm);
// ページonload時のJavaScript設定
$anchor_hash = $this->getAnchorHash($arrForm['image_key']);
$this->tpl_onload = $anchor_hash;
break;
}
}

/*追記メソッド*/
/**
* アップロードファイルパラメーター情報の初期化
* - 画像ファイル用
*
* @param SC_UploadFile_Ex $objUpFile SC_UploadFileインスタンス
* @return void
*/
public function lfInitFile(&$objUpFile)
{
//$this->objUpFile->addFile('メイン画像', 'main_image', array('gif','jpeg','jpg','png'), IMAGE_SIZE, false, CLASS_IMAGE_WIDTH, CLASS_IMAGE_HEIGHT);

$objUpFile->addFile('メイン画像', 'main_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
}
/**
* パラメーター情報の初期化
* - 画像ファイルアップロードモード
*
* @param SC_FormParam_Ex $objFormParam SC_FormParamインスタンス
* @return void
*/
public function lfInitFormParam_UploadImage(&$objFormParam)
{
$objFormParam->addParam('image_key', 'image_key', '', '', array());
}
public function lfInitFormParam(&$objFormParam, $arrPost)
{

}
/**
* 縮小した画像をセットする
*
* @param SC_UploadFile_Ex $objUpFile SC_UploadFileインスタンス
* @param string $image_key 画像ファイルキー
* @return void
*/
public function lfSetScaleImage(&$objUpFile, $image_key)
{
$subno = str_replace('sub_large_image', '', $image_key);
switch ($image_key) {
case 'main_large_image':
// 詳細メイン画像
$this->lfMakeScaleImage($objUpFile, $image_key, 'main_image');
case 'main_image':
// 一覧メイン画像
$this->lfMakeScaleImage($objUpFile, $image_key, 'main_image');
break;
case 'sub_large_image' . $subno:
// サブメイン画像
$this->lfMakeScaleImage($objUpFile, $_POST['image_key'], 'sub_image' . $subno);
break;
default:
break;
}
}

/**
* 画像ファイルのコピー
*
* @param object $objUpFile SC_UploadFileインスタンス
* @return void
*/
public function lfCopyProductImageFiles(&$objUpFile)
{
$arrKey = $objUpFile->keyname;
$arrSaveFile = $objUpFile->save_file;

foreach ($arrSaveFile as $key => $val) {
$this->lfMakeScaleImage($objUpFile, $arrKey[$key], $arrKey[$key], true);
}
}

/**
* アンカーハッシュ文字列を取得する
* アンカーキーをサニタイジングする
*
* @param string $anchor_key フォーム入力パラメーターで受け取ったアンカーキー
* @return <type>
*/
public function getAnchorHash($anchor_key)
{
if ($anchor_key != '') {
return "location.hash='#" . htmlspecialchars($anchor_key) . "'";
} else {
return '';
}
}


/**
* 表示用フォームパラメーター取得
* - 入力画面
*
* @param SC_UploadFile_Ex $objUpFile SC_UploadFileインスタンス
* @param SC_UploadFile_Ex $objDownFile SC_UploadFileインスタンス
* @param array $arrForm フォーム入力パラメーター配列
* @return array 表示用フォームパラメーター配列
*/
public function lfSetViewParam_InputPage(&$objUpFile, &$objDownFile, &$arrForm)
{
// カテゴリマスターデータ取得
$objDb = new SC_Helper_DB_Ex();
list($this->arrCatVal, $this->arrCatOut) = $objDb->sfGetLevelCatList(false);

if (isset($arrForm['category_id']) && !is_array($arrForm['category_id'])) {
$arrForm['category_id'] = SC_Utils_Ex::jsonDecode($arrForm['category_id']);
}
$this->tpl_json_category_id = !empty($arrForm['category_id']) ? SC_Utils_Ex::jsonEncode($arrForm['category_id']) : SC_Utils_Ex::jsonEncode(array());
if ($arrForm['status'] == '') {
$arrForm['status'] = DEFAULT_PRODUCT_DISP;
}
if ($arrForm['product_type_id'] == '') {
$arrForm['product_type_id'] = DEFAULT_PRODUCT_DOWN;
}
if (OPTION_PRODUCT_TAX_RULE) {
// 編集の場合は設定された税率、新規の場合はデフォルトの税率を取得
if ($arrForm['product_id'] == '') {
$arrRet = SC_Helper_TaxRule_Ex::getTaxRule();
} else {
$arrRet = SC_Helper_TaxRule_Ex::getTaxRule($arrForm['product_id'], $arrForm['product_class_id']);
}
$arrForm['tax_rate'] = $arrRet['tax_rate'];
}
// アップロードファイル情報取得(Hidden用)
$arrHidden = $objUpFile->getHiddenFileList();
$arrForm['arrHidden'] = array_merge((array) $arrHidden, (array) $objDownFile->getHiddenFileList());

// 画像ファイル表示用データ取得
$arrForm['arrFile'] = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH);



return $arrForm;
}


【category.tpl】
<div style="float:left; width: 100px;">メイン画像:</div>
<span class="attention"><!--{$arrErr[$key]}--></span>
<!--{if $arrForm.arrFile[$key].filepath != ""}-->
<img src="<!--{$arrForm.arrFile[$key].filepath}-->" alt="<!--{$arrForm.name|h}-->" /> <a href="" onclick="eccube.setModeAndSubmit('delete_image', 'image_key', '<!--{$key}-->'); return false;">[画像の取り消し]</a><br />
<!--{/if}-->
<input type="file" name="main_image" size="40" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" />
<a class="btn-normal" href="java script:;" name="btn" onclick="eccube.setModeAndSubmit('upload_image', 'image_key', '<!--{$key}-->'); return false;">アップロード</a>

-------------
468
投稿日時: 2017/5/12 15:05
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 712
Re: v2.13 画像のアップロードにつきまして
返信ありがとうございます。

まず、先のコメントで記載させていただいた通り、
カテゴリ画像投稿プラグイン(2系)を有償プラグインとしての配布を予定している為、
この場ですべてをお応えする事が出来ないという
私の立場については、ご理解をいただきたいと思います。

>画像のアップロードが正常にできませんでした。
とありますが、
アップロードボタンを押した後、画面遷移は発生しましたか?
(画面が再読込される動き)
画像ファイル自体がサーバに送信されていないのか?
受け取ったaction()内で一時ディレクトリに保存されていないのか?
一時ディレクトリの保存後、カテゴリ画面を再度表示した時に画像が画面に表示されないのか?
どの段階で上手くいっていないのかは、1ステップずつデバッグしていくのが確実かと思います。

私はいつも、var_dump();exit;を多用して、
どこを処理が流れて、想定した値が入ってきているか確認していますので、

まずは、
1.以下のcaseの中に処理が入ってきているかどうか?
// 画像のアップロード
case 'upload_image':
case 'delete_image':

2.$objUpFileにアップロードした画像の情報がきちんとセットされいるか?

3.一時ディレクトリ(/html/upload/temp_image/)にアップロードした画像が保存されているか?

4.function lfSetViewParam_InputPage()の中で画像がセットされているかどうか?

の順番で確認されたほうが良いかと思います。


あと、ソースを見ると、action()に画像関連の処理を追記されたのだと思いますが、
カテゴリの処理の最後に、画像関連の追記では無く、
デフォルトの登録や削除などの処理の分岐をしている
switch ($this->getMode()) {
// カテゴリ登録/編集実行
・・・・・・
}
の中にcaseの分岐を追記する形で移植する必要があります。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/5/15 10:31
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 54
Re: v2.13 画像のアップロードにつきまして
468様

ご返信ありがとうございます。
468様の立場も考慮せず質問ばかりして、
申し訳ございません。
468様のお答え頂ける範囲内で問題ありませんので、
ご教示頂ければ幸いです。

ご教示頂いたデバックを行って、
改めてご連絡させて頂きます。

今のところですが、
caseのcase 'upload_image':には処理が入っているのですが、
画像データが取得できていないかと思われます。

category.tpl側で下記の<input>を記載しているのですが、
こちらがまちがっているのでしょうか?
--------
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="mode" value="edit" />
<input type="hidden" name="parent_category_id" value="<!--{$arrForm.parent_category_id|h}-->" />
<input type="hidden" name="category_id" value="<!--{$arrForm.category_id|h}-->" />
<input type="hidden" name="keySet" value="" />
<input type="hidden" name="image_key" value="" />

<input type="hidden" name="copy_product_id" value="<!--{$arrForm.copy_product_id|h}-->" />
<input type="hidden" name="anchor_key" value="" />
<input type="hidden" name="select_recommend_no" value="" />
<input type="hidden" name="has_product_class" value="<!--{$arrForm.has_product_class|h}-->" />
<input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" />
------

お手数をおかけいたしますが、
よろしくお願いいたします。
468
投稿日時: 2017/5/15 11:23
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 712
Re: v2.13 画像のアップロードにつきまして
copy_product_id, anchor_key, select_recommend_no, has_product_classのinputタグは不要ではないかと思います。

あと、最後のhiddenはループさせる必要があるのではないでしょうか?
<!--{foreach key=key item=item from=$arrForm.arrHidden}-->
<input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" />
<!--{/foreach}-->

あと、デバッグされて、画像データが取得できていないというのは、
$arrForm['image_key']
が空になっているという事でしょうか?

実際にサーバへのリクエストに、ファイルが送信されているかどうかは、
var_dump($_FILES)などで中身を確認すると良いかもしれません。
$_FILESの中身が無ければ、送信するhtml上のformに問題があると思いますので、
問題の切り分けが出来ると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/5/15 13:34
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 54
Re: v2.13 画像のアップロードにつきまして
468様
ご返信誠にありがとうございます!


>copy_product_id, anchor_key, select_recommend_no, >has_product_classのinputタグは不要ではないかと思います。
>あと、最後のhiddenはループさせる必要があるのではないでしょうか?
><!--{foreach key=key item=item from=$arrForm.arrHidden}-->
><input type="hidden" name="<!--{$key}-->" value="><!--{$item|h}-->" />
><!--{/foreach}-->
こちら削除、追記をさせていただきました。

画像データの件ですが、
switch ($mode) {
case 'upload_image':
内に
var_dump($arrForm['image_key']);
と記述すると、string(0) "" と表示がされます。

また、
switch ($mode) {
case 'upload_image':
内に
var_dump($_FILES);
と記述すると、
array(1) { ["main_image"]=> array(5) { ["name"]=> string(30) "test.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(19) "/data/tmp/phppmq2mH" ["error"]=> int(0) ["size"]=> int(620144) } }

と表示がされます。

こちらはHTML部分は問題ないということでしょうか?

申し訳ございませんが、よろしくお願いいたします。
(1) 2 3 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,118名です
総投稿数は82,932件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1644
4
yuh
1392
5
red
1066
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
712
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 618
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.