質問 > フロント機能 > 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について |
フロント機能
| 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
DigiLove |
投稿日時: 2011/3/31 2:45
対応状況: −−−
|
半人前 登録日: 2009/1/7 居住地: 熊本 投稿: 24 |
2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について [EC-CUBE] 2.11.0
[レンタルサーバ] ローカルサーバ [OS] Windows7 32bit [PHP] 5.2.9 [データベース] MySQL 5.1.33-community [WEBサーバ] XAMPP [ブラウザ] Firefox、3.6.16 [現象] 現在ver.2.3.4で運営中ですが、2.11.0が正式に発表されたので近々サイトをリニューアルする予定でしたので、ローカルサーバでテストしています。 アップデートと言うより新規で再構築しているのでデータの移行は現在問題ないのですが、カテゴリ毎に説明文や画像の表示をしたいと思ってカスタマイズしようとしたのですが、根本的にファイルが違ったので何処をどういじればいいかわからない状態です。 2.3.4で行ったLC_Page_Admin_Products_Category_Ex.phpとLC_Page_Products_List_Ex.phpを参考にしたのですが、該当関数が様々なファイルに分散?又は名前が変更されているようです。 様々なファイルが大幅に変更されていますが、どのようにすればいいでしょうか? 分かる方がいればよろしくお願いします。 |
tanaca |
投稿日時: 2011/4/21 15:29
対応状況: −−−
|
仙人 登録日: 2010/11/28 居住地: 福岡県 投稿: 332 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について 便乗で失礼します。
今までVer2.4でいろいろと出来ていたカスタマイズが2.11では通用しなくなったので2.11の導入を躊躇しています。 どなたか分かる方がいらっしゃいましたら、宜しくお願いします。
|
AMUAMU |
投稿日時: 2011/4/26 20:02
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について 前提として、2.11系からはリファクタリングされた関係から、2.4系のテンプレ化されたようなカスタマイズ内容やコードのコピー&ペーストではそのまま動きません。
といってもロジック的には近いところを探せばある程度の応用で対応可能です。 やろうとしていることについては、まずLC_Page_Admin_Products_Category_Ex.php について 2.11で修正する部分はdoEdit、doRegister、initParam、registerCategoryと分かれています。 数は多く見えますが、LC_Page_Admin_Products_Category.phpを元にして1−3行程度の修正または追記程度でいけるはずです。 実際に修正する内容はカテゴリ自体の情報構造は殆ど変わっていないので、2.4系と同じ内容だと思います。 LC_Page_Products_List_Ex.phpについても同じように元のLC_Page_Products_List.php を確認すると良いと思います。 2.4系でカスタマイズ指示が良く入っていた部分は、lfGetPageTitleに分離されていて、ここだけを2.4系と同様にカスタマイズするだけで期待される結果が得られるのでは無いかと思います。
|
tanaca |
投稿日時: 2011/5/24 7:15
対応状況: −−−
|
仙人 登録日: 2010/11/28 居住地: 福岡県 投稿: 332 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について AMUAMU様 ご返信ありがとうございます。
そして、確認が遅くなってしまいたいへん失礼しました。 お教えいただいた内容をもとになんとか管理画面内だけでカテゴリ説明文を入力したものが保存されるようになりました! ありがとうございます。 しかし、カテゴリをあたらしく追加登録しようとすると、下記エラーが表示されます。 ==================== システムエラーが発生しました。 大変お手数ですが、サイト管理者までご連絡ください。 ==================== また、/data/logs/site.log を確認すると、 2011/05/24 06:22:32 [/admin/products/category.php] access : user=user auth=0 sid=0amgcvir4s48s6irncmjr01qk0 from 125.201.172.142 FATAL Error(256) /var/www/vhosts/ドメイン/subdomains/ec/data/class/SC_Query.php:903 http://ドメイン/admin/products/category.php? SERVER_ADDR: 175.45.141.190 REMOTE_ADDR: 125.201.172.142 USER_AGENT: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24 SQL: INSERT INTO dtb_category(category_name,parent_category_id,create_date,update_date,creator_id,rank,level,category_id) VALUES ($1,$2,Now(),Now(),$3,$4,$5,$6) MDB2 Error: invalid number _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE mdb2_statement_pgsql_9806e14a358641e364232ca567d52eb86c5292601 ('だんご', '1', '団子三兄弟', '5', 2, 13)] [Native message: ERROR: invalid input syntax for integer: "団子三兄弟"] /var/www/vhosts/ドメイン/subdomains/ec/httpdocs/admin/products/category.php 34:LC_Page_Admin_Products_Category_Ex->process /var/www/vhosts/ドメイン/subdomains/ec/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.php 56:LC_Page_Admin_Products_Category_Ex->action /var/www/vhosts/ドメイン/subdomains/ec/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.php 79:LC_Page_Admin_Products_Category_Ex->doRegister /var/www/vhosts/ドメイン/subdomains/ec/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.php 319:LC_Page_Admin_Products_Category_Ex->registerCategory /var/www/vhosts/ドメイン/subdomains/ec/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.php 479:SC_Query->insert /var/www/vhosts/ドメイン/subdomains/ec/data/class/SC_Query.php 478:SC_Query->query /var/www/vhosts/ドメイン/subdomains/ec/data/class/SC_Query.php 735:SC_Query->execute /var/www/vhosts/ドメイン/subdomains/ec/data/class/SC_Query.php 888:MDB2_Statement_Common->execute /var/www/vhosts/ドメイン/subdomains/ec/data/module/MDB2.php 4152:MDB2_Statement_pgsql->_execute /var/www/vhosts/ドメイン/subdomains/ec/data/module/MDB2/Driver/pgsql.php 1474:MDB2_Driver_pgsql->_doQuery /var/www/vhosts/ドメイン/subdomains/ec/data/module/MDB2/Driver/pgsql.php 673:MDB2_Driver_Common->raiseError /var/www/vhosts/ドメイン/subdomains/ec/data/module/MDB2.php 1497:PEAR->raiseError /var/www/vhosts/ドメイン/subdomains/ec/data/module/PEAR.php 557:MDB2_Error->MDB2_Error /var/www/vhosts/ドメイン/subdomains/ec/data/module/MDB2.php 1009:PEAR_Error->PEAR_Error と表示されておりましたが、どこを修正すればよいのかが分かりませんでしたので、ご存知の方がいらっしゃいましたら、ご教授のほど宜しくお願いします。 現時点で行ったことは、 1:データベースに2つのカラムを追加。 category_info データ型: text info_flg データ型: smallint 2:/data/Smarty/templates/default/admin/products/category.tplを編集 3:LC_Page_Admin_Products_Category_Ex.phpの編集 までで、 4:LC_Page_Products_List_Ex.phpの編集 5:list.tpl(商品一覧ページテンプレート)の編集 は、まだ手をつけていません。 LC_Page_Admin_Products_Category_Ex.phpの入力内容に不備があるのではないかと思いますが カテゴリ新規登録だけが受け付けてくれない原因がどの部分なのかが分からない状況です。
|
fukap |
投稿日時: 2011/5/29 17:35
対応状況: −−−
|
仙人 登録日: 2009/7/7 居住地: 滋賀県 投稿: 907 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について レスが付かないようなので、浅学ながらわかる範囲で。
引用: [Last executed query: EXECUTE mdb2_statement_pgsql_9806e14a358641e364232ca567d52eb86c5292601 ('だんご', '1', '団子三兄弟', '5', 2, 13)] これを読む限り、integer(整数値)を取るべきところに、"団子三兄弟”という文字列を挿入しようとしたために、DBエラーが返されているように見えます。 このエラーの元を辿ると、おそらく ./data/class/pages/admin/products/LC_Page_Admin_Products_Category.php 490行目の以下の部分に起因していると思います。
あとは、$objQuery->insert() に代入しようとしている $arrCategory 配列の中身を var_dump() しながら、 挿入しようとされたコードと、不整合がないかを1つ1つさかのぼっていけば、解決に近づくと思います。 |
tanaca |
投稿日時: 2011/5/30 3:17
対応状況: −−−
|
仙人 登録日: 2010/11/28 居住地: 福岡県 投稿: 332 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について fukap 様
いつもありがとうございます。 アドバイスいただいた内容は理解できましたが、不整合がないかを1つ1つさかのぼっていくのが、私のレベルではちょっと困難で「わかりました!」と報告できるまでに時間がかかりそうでしたので、取り急ぎ報告させていただきます。 新規カテゴリ登録する際にカテゴリ説明文の情報までは含めないように変更したことで、とりあえずカテゴリ登録はできるようになりました。 なので、先にカテゴリ名だけを登録した後でカテゴリ説明文を入力すれば保存されます。 (カテゴリ説明文も含めて登録しようとするとシステムエラーのままなので根本的な解決にはなっておりません。) ただ、この後の作業で 4:LC_Page_Products_List_Ex.phpの編集 5:list.tpl(商品一覧ページテンプレート)の編集 もやって、管理画面でカテゴリ説明文が保存されているカテゴリページを表示させようとしてみましたが、そこでもシステムエラーとなってしまいました。 原因はおそらく、4:LC_Page_Products_List_Ex.phpの編集内容が大きく間違っているからです。 道のりはまだ長いですが、進捗がありましたら報告させていただきます。
|
fukap |
投稿日時: 2011/5/30 8:57
対応状況: −−−
|
仙人 登録日: 2009/7/7 居住地: 滋賀県 投稿: 907 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について 引用:
なので、先にカテゴリ名だけを登録した後でカテゴリ説明文を入力すれば保存されます。 どこでこの分岐が発生しているのか見たところ、以下のところで行われていると思います。 ./data/class/pages/admin/products/LC_Page_Admin_Products_Category.php の85行目付近
ここで $category_id の値の有無によって、処理を分岐しています。 tanaca様の現象を聞く限り、$this->doEdit() はうまく処理されていると思いますが、 $this->doRegister() の内容に問題がありそうに思えます。 |
tanaca |
投稿日時: 2011/5/30 11:04
対応状況: −−−
|
仙人 登録日: 2010/11/28 居住地: 福岡県 投稿: 332 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について fukap 様
ありがとうございます。 >$this->doRegister() の内容に問題がありそうに思えます。 $this->doRegister() の内容とはおそらく276行目にある function doRegisterのことではないかと思いますが、内容は以下のとおりで 私にはどこがダメなのかさっぱりです。 ===================================================================== * カテゴリの登録を実行する. * * 下記の場合は, 登録を実行せず、エラーメッセージを表示する * * - カテゴリ登録数の上限を超える場合 * - 階層登録数の上限を超える場合 * - カテゴリ名がすでに使用されている場合 * * @param SC_FormParam $objFormParam * @return void */ function doRegister(&$objFormParam) { // 入力項目チェック $arrErr = $objFormParam->checkError(); if (count($arrErr) > 0) { $this->arrErr = $arrErr; $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); $this->arrForm['category_info'] = $objFormParam->getValue('category_info'); $this->arrForm['info_flg'] = $objFormParam->getValue('info_flg'); return; } // 登録数上限チェック $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = "del_flg = 0"; $count = $objQuery->count("dtb_category", $where); if ($count >= CATEGORY_MAX) { $this->arrErr['category_name'] = "※ カテゴリの登録最大数を超えました。<br/>"; $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); return; } // 階層上限チェック if ($this->isOverLevel($objFormParam->getValue('parent_category_id'))) { $this->arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); return; } // 重複チェック $where = "parent_category_id = ? AND category_name = ?"; $count = $objQuery->count("dtb_category", $where, array($objFormParam->getValue('parent_category_id'), $objFormParam->getValue('category_name'))); if ($count > 0) { $this->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); return; } // カテゴリ登録 $this->registerCategory($objFormParam->getValue('parent_category_id'), $objFormParam->getValue('category_name'), $objFormParam->getValue('category_info'), $objFormParam->getValue('info_flg'), $_SESSION['member_id']); } /** * カテゴリの表示順序を上へ移動する. ===================================================================== (上記内容は/data/class/pages/admin/products/LC_Page_Admin_Products_Category.phpから /data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.phpへ コピペした内容の一部です。) ちなみに前回アドバイスをいただきました、 引用: integer(整数値)を取るべきところに、"団子三兄弟”という文字列を挿入しようとしたために、DBエラーが返されているように見えます。 ですが、カテゴリ新規登録時に、カテゴリ説明文(category_info)の入力欄へ半角数字を入力しておけば、システムエラーが表示されずにカテゴリ登録できる事が分かりました。 しかし、その入力した半角数字は保存されておりません(涙。 なので、カテゴリ説明文(category_info)の入力欄へ半角数字以外の文字を入力した場合や、未入力でもシステムエラーが出ないようにする事と、入力した内容が保存されるようにしなければなりません。
|
fukap |
投稿日時: 2011/5/30 11:32
対応状況: −−−
|
仙人 登録日: 2009/7/7 居住地: 滋賀県 投稿: 907 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について あまり自信はありませんが、乗りかかった船なので。
間違っていたら誰か突っ込んでくれるでしょう。 ./data/class/pages/admin/products/LC_Page_Admin_Products_Category.php の458行目付近、 もしくは ./data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.php の該当箇所で、
を
と書き換えたら、どうなりますか? registerCategory() の中がちょっと怪しいです。 |
tanaca |
投稿日時: 2011/5/30 12:37
対応状況: −−−
|
仙人 登録日: 2010/11/28 居住地: 福岡県 投稿: 332 |
Re: 2.11.0以上でカテゴリ毎に説明文や画像を載せる追加機能について fukap様
感謝です! ありがとうございます。 上記項目を変更したら、新規カテゴリ登録においてカテゴリ説明文を入力しても未入力でも登録できるようになりました。 現状、管理画面内で解決できていない問題は、子カテゴリを登録する際に親カテゴリのカテゴリ説明文を引き継ぐというチェックボックスにチェックを入れても、親カテゴリの説明文を引き継げていないという問題だけになりました。 ここは新規登録、登録済みカテゴリの更新ともにできておりません。 たいへんあつかましい書き込みだとは思いますが、もし、こちらの内容でもご教授いただける個所がございましたらどうぞ宜しくお願いします。 425行目 ============================================ * カテゴリを更新する * * @param integer $category_id 更新対象のカテゴリID * @param array 更新する カラム名 => 値 の連想配列 * @return void */ function updateCategory($category_id, $arrCategory) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->begin(); $where = "category_id = ?"; //追記:親の設定を引き継ぐ時 if($sqlval['info_flg']) { $parent_category_id = $objQuery->get("dtb_category", "parent_category_id", $where, array($category_id)); $sqlval['category_info'] = $this->lfGetParentInfo($objQuery, $parent_category_id); } $objQuery->update("dtb_category", $arrCategory, $where, array($category_id)); $objQuery->commit(); } ============================================ 476行目 ============================================ // 自分のレベルを取得する(親のレベル + 1) $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1; $arrCategory = array(); $arrCategory['category_name'] = $category_name; $arrCategory['parent_category_id'] = $parent_category_id; $arrCategory['create_date'] = "Now()"; $arrCategory['update_date'] = "Now()"; $arrCategory['creator_id'] = $creator_id; $arrCategory['rank'] = $rank; $arrCategory['level'] = $level; $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); //追記:親の設定を引き継ぐ時 if($sqlval['info_flg']) { $sqlval['category_info'] = $this->lfGetParentInfo($objQuery, $parent_category_id); } $objQuery->insert("dtb_category", $arrCategory); $objQuery->commit(); // トランザクションの終了 } /** * カテゴリの階層が上限を超えているかを判定する * * @param integer 親カテゴリID * @param 超えている場合 true */ function isOverLevel($parent_category_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $level = $objQuery->get('level', "dtb_category", "category_id = ?", array($parent_category_id)); return $level >= LEVEL_MAX; } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } // 追記:親のcategory_infoを取得する function lfGetParentInfo($objQuery, $pid) { $where = "category_id = ?"; $parent_info = $objQuery->get("dtb_category", "category_info", $where, array($pid)); return $parent_info; } } ?> ============================================
|
(1) 2 3 4 ... 7 » |
| 新しいものから | 前のトピック | 次のトピック | トップ |