質問 > 管理機能 > 商品登録画面に商品画像とは別の画像登録機能を追加したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
sksn |
投稿日時: 2017/8/28 16:19
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
商品登録画面に商品画像とは別の画像登録機能を追加したい [EC-CUBE] 3.0.11
[レンタルサーバ] heteml [OS] Linux [PHP] 7.0.15 [データベース] MySQL 5.6.13-log [WEBサーバ] Apache [現象] 標題について、教えて頂けますでしょうか。 商品登録画面に商品画像を登録するアップロード機能があるかと思いますが、これとは別の画像を登録するための機能を追加したいです。 各ファイルの商品画像登録用と思われるソースをコピーしてなんとかできないものかとやってみたのですが、上手く行かず、、、。 どなたか教えていただけると大変助かります。 今まで行ったことは以下です。 ①DB作成 「dtb_product_image」をコピーして、「dtb_product_subinfo01_image」を作成。構造は全く同じで、中身のデータは空っぽ。 ②src/Eccube/Entity/Product.php編集 以下追加 public function __construct() { $this->ProductSub01Image = new ArrayCollection(); } public function copy() { $Images = $this->getProductSub01Image(); $this->ProductSub01Image = new ArrayCollection(); foreach ($Images as $Image) { $CloneImage = clone $Image; $this->addProductSub01Image($CloneImage); $CloneImage->setProduct($this); } } private $ProductSub01Image; /** * Add ProductSub01Image * * @param \Eccube\Entity\ProductSub01Image $productSub01Image * @return Product */ public function addProductSub01Image(\Eccube\Entity\ProductSub01Image $productSub01Image) { $this->ProductSub01Image[] = $productSub01Image; return $this; } /** * Remove ProductSub01Image * * @param \Eccube\Entity\ProductSub01Image $productSub01Image */ public function removeProductSub01Image(\Eccube\Entity\ProductSub01Image $productSub01Image) { $this->ProductSub01Image->removeElement($productSub01Image); } /** * Get ProductSub01Image * * @return \Doctrine\Common\Collections\Collection */ public function getProductSub01Image() { return $this->ProductSub01Image; } public function getMainFileName() { if (count($this->ProductSub01Image) > 0) { return $this->ProductSub01Image[0]; } else { return null; } } ちなみに、/**Get ProductSub01Image*/の部分があるとエラーになります。 この部分を外すとエラー自体は出ません。(登録はできませんが) ③Eccube/Entity/ProductSub01Image.php新規作成 中身はProductImage.phpと同じ ④Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml編集 以下追加 oneToMany: ProductSub01Image: targetEntity: Eccube\Entity\ProductSub01Image mappedBy: Product orderBy: rank: ASC ⑤Eccube/Form/Type/Admin/ProductType.php編集 以下追加 public function buildForm(FormBuilderInterface $builder, array $options) { ->add('product_subinfo01_image', 'file', array( 'label' => 'サブ情報01画像', 'multiple' => true, 'required' => false, 'mapped' => false, )) } ⑥app/template/admin/Product/product.twig編集 以下追加 <div id="detail_box__image" class="form-group"> <label class="col-sm-2 control-label" for="admin_product_product_subinfo01_image"> {{ form.product_subinfo01_image.vars.label }}<br> <span class="small">620px以上推奨</span> </label> <div id="detail_files_box" class="col-sm-9 col-lg-10"> <div class="photo_files" id="drag-drop-area"> <svg id="icon_no_image" class="cb cb-photo no-image"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cb-photo"></use></svg> <ul id="thumb" class="clearfix"></ul> </div> </div> </div> <div class="form-group marB30"> <div id="detail_box__file_upload" class="col-sm-offset-2 col-sm-9 col-lg-10 "> <div id="progress" class="progress progress-striped active" style="display:none;"> <div class="progress-bar progress-bar-info"></div> </div> {{ form_widget(form.product_subinfo01_image, { attr : { accept : 'image/*', style : 'display:none;' } }) }} <a id="file_upload" class="with-icon"> <svg class="cb cb-plus"> <use xlink:href="#cb-plus" /></svg>ファイルをアップロード </a> </div> </div> 以上になります。 ECCUBEのカスタマイズは初めてで、 そもそものやり方も間違っているかもしれませんが、 何かおわかりになればご教授ください。 よろしくお願いいたします。 |
468 |
投稿日時: 2017/8/29 12:26
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい 新しくテーブルを追加されていますので、Entityだけでなく、
以下のファイルもコピーして追加する必要があると思います。 Eccube.Entity.ProductSub01Image.dcm.yml ProductSub01ImageRepository.php あと、\src\Eccube\ServiceProvider\EccubeServiceProvider.php 166行目付近で $appにリポジトリを登録する?必要があるのではないかと思います。 多分、これらのファイルや記述が無いとEntityとDBが紐づかないと思います。 あとは、ドラッグ&ドロップで画像をコントローラーにajaxでリクエストしている所(product.twigの129行目付近)と、 それを受け取ってサーバ上にファイルを保存する処理(ProductController.addImage())をコントローラー側に追記すれば良いのではないかと思います。
|
sksn |
投稿日時: 2017/8/29 15:04
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい 返信頂きありがとうございます!
>>以下のファイルもコピーして追加する必要があると思います。 >>Eccube.Entity.ProductSub01Image.dcm.yml >>ProductSub01ImageRepository.php こちらコピーして作成しました。 >>あと、\src\Eccube\ServiceProvider\EccubeServiceProvider.php 166行目付近で >>$appにリポジトリを登録する?必要があるのではないかと思います。 こちらも追記しました。 >>あとは、ドラッグ&ドロップで画像をコントローラーにajaxでリクエストしている所(product.twigの129行目付近)と、 >>それを受け取ってサーバ上にファイルを保存する処理(ProductController.addImage())をコントローラー側に追記すれば良いのではないかと思います。 おそらくここが上手く機能していません。 現状は、管理画面の「ファイルをアップロード」ボタンをクリックしてもアップローダーが起動せず、何も起こりません。 まずは、product.twig 129〜176行目をコピーし、以下のソースを追記しました。 $('#{{ form.product_sub01_image.vars.id }}').fileupload({ url: "{{ url('admin_product_image_add') }}", type: "post", dataType: 'json', done: function (e, data) { $('#progress').hide(); $.each(data.result.files, function (index, file) { var path = '{{ app.config.image_temp_urlpath }}/' + file; var $img = $(proto_img.replace(/__path__/g, path)); var $new_img = $(proto_add.replace(/__name__/g, count_add)); $new_img.val(file); $child = $img.append($new_img); $('#thumb').append($child); count_add++; }); hideSvg(); updateRank(); }, fail: function (e, data) { alert('アップロードに失敗しました。'); }, always: function (e, data) { $('#progress').hide(); $('#progress .progress-bar').width('0%'); }, start: function (e, data) { $('#progress').show(); }, acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, maxFileSize: 10000000, maxNumberOfFiles: 10, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .progress-bar').css( 'width', progress + '%' ); }, processalways: function (e, data) { if (data.files.error) { alert("画像ファイルサイズが大きいか画像ファイルではありません。"); } } }); // 画像アップロード $('#file_upload').on('click', function () { $('#{{ form.product_sub01_image.vars.id }}').click(); }); その後、 >>サーバ上にファイルを保存する処理(ProductController.addImage())をコントローラー側に追記すれば この処理を追記しようと思い、以下ファイルを編集しました。 ・ProductController.php 287〜293行目をコピーし、以下のソース追記 // ファイルの登録 $images = array(); $ProductSub01Images = $Product->getProductSub01Image(); foreach ($ProductSub01Images as $ProductSub01Image) { $images[] = $ProductSub01Image->getFileName(); } $form['images']->setData($images); このソースを追記後アップすると、HTTP500エラーとなってしまいます。 書き方がまずいのでしょうか? もしくは他ファイルにも追記しないといけないのかと思い、 ・AdminControllerProvider.php も見てみたのですが、よくわからず、、、 恐れ入りますが、何かおわかりになりますでしょうか?? よろしくお願いいたします。 |
468 |
投稿日時: 2017/8/29 17:42
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい エラーの原因については、エラーログを見ていただくしかないかと思います。
(分かりにくいかもしれませんが) 該当の・ProductController.php 287〜293行目をコピーし、以下のソース追記 されてのエラーですので、 $Product->getProductSub01Image()か、 $ProductSub01Image->getFileName()でエラーになっているのではないでしょうか? (多分Eccube.Entity.ProductSub01Image.dcm.yml等追加されたファイルのどこかに間違いがあるのだと思います) 因みにproduct.twigに追記されたエリアですが、 ドラッグ&ドロップでは画像アップロードは何も起きませんか?
|
sksn |
投稿日時: 2017/8/30 9:55
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい ご返信ありがとうございます!!
>>エラーの原因については、エラーログを見ていただくしかないかと思います。 こちら確認してみます。 >>因みにproduct.twigに追記されたエリアですが、 >>ドラッグ&ドロップでは画像アップロードは何も起きませんか? ドラッグ&ドロップすると、追加した箇所ではなく、商品画像登録エリアに画像がアップロードされてしまいました。 そして、一枚しかアップロードしていないのに、同じものが二枚アップロードされてしまいます。 元々の商品画像登録機能をコピーしてきたので、 新しく追加した処理ではなく商品画像登録機能のほうが 二回動いているようなことになってしまっているのかもしれません・・・。 エラーログ等確認して、もう少し色々試してみたいと思います。 |
sksn |
投稿日時: 2017/8/30 16:54
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい エラーログ等確認して引き続き進めていきました。
エラー内容は正直よくわからないものの、 どの部分が問題かは少しづつわかるようになってきました。 ありがとうございます。 画像アップローダーはひとまず動くようなりましたが、 商品情報を登録しようとするとエラーが発生してしまいました。 エラー内容は以下になります。 Fatal error: Uncaught Error: Call to a member function setRank() on null in /home/sites/heteml/users/i/m/p/improvideweb/web/tobest.improvide.co.jp/shop/src/Eccube/Controller/Admin/Product/ProductController.php:490 Stack trace: #0 [internal function]: Eccube\Controller\Admin\Product\ProductController->edit(Object(Eccube\Application), Object(Symfony\Component\HttpFoundation\Request), '10') #1 /home/sites/heteml/users/i/m/p/improvideweb/web/tobest.improvide.co.jp/shop/vendor/symfony/http-kernel/HttpKernel.php(144): call_user_func_array(Array, Array) #2 /home/sites/heteml/users/i/m/p/improvideweb/web/tobest.improvide.co.jp/shop/vendor/symfony/http-kernel/HttpKernel.php(64): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #3 /home/sites/heteml/users/i/m/p/improvideweb/web/tobest.improvide.co.jp/shop/vendor/silex/silex/src/Silex/Application.php(586): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #4 /home/sites/he in /home/sites/heteml/users/i/m/p/improvideweb/web/tobest.improvide.co.jp/shop/src/Eccube/Controller/Admin/Product/ProductController.php on line 490 該当の箇所、ProductController.phpの490行目あたりの記述は以下のようにしています。 $ranks = $request->get('rank_images'); if ($ranks) { foreach ($ranks as $rank) { list($filename, $rank_val) = explode('//', $rank); $ProductImage = $app['eccube.repository.product_image'] ->findOneBy(array( 'file_name' => $filename, 'Product' => $Product, )); $ProductImage->setRank($rank_val); (←ここが490行目) $app['orm.em']->persist($ProductImage); } } $app['orm.em']->flush(); この部分にProductSub01Imageに関する記述を加えたりしてみたのですが、 それを追記するしない関係なく、上記490行目でエラーになっているようです。 何が原因でしょうか? 何かおわかりになればご教授ください。 よろしくお願いします。 |
468 |
投稿日時: 2017/8/30 17:59
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい $ProductImage = $app['eccube.repository.product_image']
->findOneBy(array( 'file_name' => $filename, 'Product' => $Product, )); の結果がNULLになっているのだと思います。 検索条件に一致するデータが見つからない場合、 $ProductImageにNULLがセットされますので、 $ProductImageのメソッドを利用する前に if ($ProductImage) { }で結果がきちんと取得できているか自分で判定する必要があります。 このエラーメッセージの場合、メソッドを実行しようとしたオブジェクトがNULLだという事を指しています。 Call to a member function setRank() on nul ロジック的にデータが0件という事があるのかどうか分かりませんが、 必ずデータが取得できるはずなのであれば、 $filenameか、$Productが想定外の値、またはオブジェクトがセットされているのだと思います。
|
sksn |
投稿日時: 2017/8/31 17:10
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい 返信いただきありがとうございます!
上記のエラーですが、 product.twigの記述によってエラーが出たり出なかったりするので、 こっちが原因かなと思いました。 product.twigをデフォルトの状態にするとエラーは出ません。 product.twigに行った変更は以下です。 47〜177行目をコピーし、 「add_images」等の部分を「add_images_sub01」用の記述に変更 以下、少し長いですが47行目以降のソースを貼ります。 ///// $(function() { $("#thumb").sortable({ cursor: 'move', opacity: 0.7, placeholder: 'ui-state-highlight', update: function (event, ui) { updateRank(); } }); {% if has_class == false %} if ($("#{{ form.class.stock_unlimited.vars.id }}").prop("checked")) { $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val(''); } else { $("#{{ form.class.stock.vars.id }}").removeAttr("disabled"); } $("#{{ form.class.stock_unlimited.vars.id }}").on("click change", function () { if ($(this).prop("checked")) { $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val(''); } else { $("#{{ form.class.stock.vars.id }}").removeAttr("disabled"); } }); {% endif %} var proto_img = '' + '<li class="ui-state-default">' + '<img src="__path__" />' + '<a class="delete-image">' + '<svg class="cb cb-close">' + '<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cb-close"></use>' + '</svg>' + '</a>' + '</li>'; var proto_add = '{{ form_widget(form.add_images.vars.prototype) }}'; var proto_del = '{{ form_widget(form.delete_images.vars.prototype) }}'; {% for image in form.images %} var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_save_urlpath }}/{{ image.vars.value }}')); var $widget = $('{{ form_widget(image) }}'); $widget.val('{{ image.vars.value }}'); $("#thumb").append($img.append($widget)); {% endfor %} {% for add_image in form.add_images %} var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_temp_urlpath }}/{{ add_image.vars.value }}')); var $widget = $('{{ form_widget(add_image) }}'); $widget.val('{{ add_image.vars.value }}'); $("#thumb").append($img.append($widget)); {% endfor %} {% for delete_image in form.delete_images %} $("#thumb").append('{{ form_widget(delete_image) }}'); {% endfor %} var hideSvg = function () { if ($("#thumb li").length > 0) { $("#icon_no_image").css("display", "none"); } else { $("#icon_no_image").css("display", ""); } }; var updateRank = function () { $("#thumb li").each(function (index) { $(this).find(".rank_images").remove(); filename = $(this).find("input[type='hidden']").val(); $rank = $('<input type="hidden" class="rank_images" name="rank_images[]" />'); $rank.val(filename + '//' + parseInt(index + 1)); $(this).append($rank); }); } hideSvg(); updateRank(); // 画像削除時 var count_del = 0; $("#thumb").on("click", ".delete-image", function () { var $new_delete_image = $(proto_del.replace(/__name__/g, count_del)); var src = $(this).prev().attr('src') .replace('{{ app.config.image_temp_urlpath }}/', '') .replace('{{ app.config.image_save_urlpath }}/', ''); $new_delete_image.val(src); $("#thumb").append($new_delete_image); $(this).parent("li").remove(); hideSvg(); updateRank(); count_del++; }); var count_add = {{ form.add_images|length|default(0) }}; $('#{{ form.product_image.vars.id }}').fileupload({ url: "{{ url('admin_product_image_add') }}", type: "post", dataType: 'json', done: function (e, data) { $('#progress').hide(); $.each(data.result.files, function (index, file) { var path = '{{ app.config.image_temp_urlpath }}/' + file; var $img = $(proto_img.replace(/__path__/g, path)); var $new_img = $(proto_add.replace(/__name__/g, count_add)); $new_img.val(file); $child = $img.append($new_img); $('#thumb').append($child); count_add++; }); hideSvg(); updateRank(); }, fail: function (e, data) { alert('アップロードに失敗しました。'); }, always: function (e, data) { $('#progress').hide(); $('#progress .progress-bar').width('0%'); }, start: function (e, data) { $('#progress').show(); }, acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, maxFileSize: 10000000, maxNumberOfFiles: 10, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .progress-bar').css( 'width', progress + '%' ); }, processalways: function (e, data) { if (data.files.error) { alert("画像ファイルサイズが大きいか画像ファイルではありません。"); } } }); // 画像アップロード $('#file_upload').on('click', function () { $('#{{ form.product_image.vars.id }}').click(); }); }); <★←ここまでは何も変更していません。デフォルトの状態です。★> $(function() { $("#thumb_sub01").sortable({ cursor: 'move', opacity: 0.7, placeholder: 'ui-state-highlight', update: function (event, ui) { updateRank(); } }); {% if has_class == false %} if ($("#{{ form.class.stock_unlimited.vars.id }}").prop("checked")) { $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val(''); } else { $("#{{ form.class.stock.vars.id }}").removeAttr("disabled"); } $("#{{ form.class.stock_unlimited.vars.id }}").on("click change", function () { if ($(this).prop("checked")) { $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val(''); } else { $("#{{ form.class.stock.vars.id }}").removeAttr("disabled"); } }); {% endif %} var proto_img = '' + '<li class="ui-state-default">' + '<img src="__path__" />' + '<a class="delete-image">' + '<svg class="cb cb-close">' + '<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cb-close"></use>' + '</svg>' + '</a>' + '</li>'; var proto_add = '{{ form_widget(form.add_images_sub01.vars.prototype) }}'; var proto_del = '{{ form_widget(form.delete_images.vars.prototype) }}'; {% for image_sub02 in form.images_sub01 %} var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_save_urlpath }}/{{ image_sub02.vars.value }}')); var $widget = $('{{ form_widget(image_sub02) }}'); $widget.val('{{ image_sub02.vars.value }}'); $("#thumb_sub01").append($img.append($widget)); {% endfor %} {% for add_image_sub01 in form.add_images_sub01 %} var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_temp_urlpath }}/{{ add_image_sub01.vars.value }}')); var $widget = $('{{ form_widget(add_image_sub01) }}'); $widget.val('{{ add_image_sub01.vars.value }}'); $("#thumb_sub01").append($img.append($widget)); {% endfor %} {% for delete_image in form.delete_images %} $("#thumb_sub01").append('{{ form_widget(delete_image) }}'); {% endfor %} var hideSvg = function () { if ($("#thumb_sub01 li").length > 0) { $("#icon_no_image_sub01").css("display", "none"); } else { $("#icon_no_image_sub01").css("display", ""); } }; var updateRank = function () { $("#thumb_sub01 li").each(function (index) { $(this).find(".rank_images").remove(); filename = $(this).find("input[type='hidden']").val(); $rank_sub01 = $('<input type="hidden" class="rank_images" name="rank_images[]" />'); $rank_sub01.val(filename + '//' + parseInt(index + 1)); $(this).append($rank_sub01); }); } hideSvg(); updateRank(); // 画像削除時 var count_del = 0; $("#thumb_sub01").on("click", ".delete-image", function () { var $new_delete_image = $(proto_del.replace(/__name__/g, count_del)); var src = $(this).prev().attr('src') .replace('{{ app.config.image_temp_urlpath }}/', '') .replace('{{ app.config.image_save_urlpath }}/', ''); $new_delete_image.val(src); $("#thumb_sub01").append($new_delete_image); $(this).parent("li").remove(); hideSvg(); updateRank(); count_del++; }); var count_add = {{ form.add_images_sub01|length|default(0) }}; $('#{{ form.product_sub01_image.vars.id }}').fileupload({ url: "{{ url('admin_product_sub01_image_add') }}", type: "post", dataType: 'json', done: function (e, data) { $('#progress_sub01').hide(); $.each(data.result.files, function (index, file) { var path = '{{ app.config.image_temp_urlpath }}/' + file; var $img = $(proto_img.replace(/__path__/g, path)); var $new_img = $(proto_add.replace(/__name__/g, count_add)); $new_img.val(file); $child = $img.append($new_img); $('#thumb_sub01').append($child); count_add++; }); hideSvg(); updateRank(); }, fail: function (e, data) { alert('アップロードに失敗しました。'); }, always: function (e, data) { $('#progress_sub01').hide(); $('#progress_sub01 .progress-bar').width('0%'); }, start: function (e, data) { $('#progress_sub01').show(); }, acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, maxFileSize: 10000000, maxNumberOfFiles: 10, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress_sub01 .progress-bar').css( 'width', progress + '%' ); }, processalways: function (e, data) { if (data.files.error) { alert("画像ファイルサイズが大きいか画像ファイルではありません。"); } } }); // 画像アップロード $('#file_upload_sub01').on('click', function () { $('#{{ form.product_sub01_image.vars.id }}').click(); }); }); ///// 以上になります。 何かおかしなところはあるでしょうか・・・? よろしくお願いいたします。 |
468 |
投稿日時: 2017/9/6 10:39
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい >「add_images」等の部分を「add_images_sub01」用の記述に変更
こちらの変更ですが、 {{ form_widget(form.add_images.vars.prototype) }} とあるように、formへの追加は処理されていますか? /src/Eccube/Form/Type/AdminProductType.php 143行目には add_imagesに関する記述があります。 多分、同じようにdelete_imagesも追加する必要があると思います。 デフォルトでは、商品編集画面でアップロードした画像のファイル名をadd_imagesに格納して、 更新ボタンを押した時にコントローラー側でadd_imagesから値を取り出してProductImageをしていると思いますので、 このあたりのロジックもコピーして変更する事になります。 (削除も同じかと思います) PHPだけでなく、javascriptも触る必要のある為、かなりややこしいですが、 デフォルトのロジックをしっかりと理解しながら進めていかないとなかなか難しいところかと思います。
|
sksn |
投稿日時: 2017/9/12 15:09
対応状況: −−−
|
新米 登録日: 2013/9/17 居住地: 投稿: 10 |
Re: 商品登録画面に商品画像とは別の画像登録機能を追加したい ご返信ありがとうございます!
>>PHPだけでなく、javascriptも触る必要のある為、かなりややこしいですが、 >>デフォルトのロジックをしっかりと理解しながら進めていかないとなかなか難しいところかと思います。 おそらく、このあたりの知識がまだ不足しているのだと思われます。 あまり時間をかけられない状態だったので、 有料のプラグインを入れて解決することにしました。 色々とアドバイス頂き、本当にありがとうございました。 ちなみに、商品登録に別画像登録機能を追加するって、 特殊なカスタマイズなのでしょうか・・・? 色々と調べたのですがあまり情報が出てこず、 こちらで質問もさせていただいたのですが、 初心者には難しそうだなと今回思いました。 こういうカスタマイズをすることが特殊なのか、 それともみなさん知識を持っているので難なく解決できることなのか、 ちょっと疑問に持ったので投げかけてみました。 どなたかeccubeにお詳しい方、教えていただけると嬉しいです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |