概要
EC?CUBEの学校の穂満先生の授業「カテゴリ毎に異なる説明文や画像を表示する」を参考に、カテゴリページに画像と文字コンテンツを登録できるようにしたいと思います。
20090127追記
この記事の不備をコメント欄でymさんにご指摘いただき、何点か加筆させていただきました。
ymさん、超感謝&リスペクトです!ありがとうございます。
修正項目は以下のとおり
- /admin/products/category.tplにJavaScript の selectAll() 関数を追加
- 同じく/admin/products/category.tplにhidden”image_key”を追加
穴だらけの記事でごめんなさいm_ _m
注意
私劣等生でございますゆえ先生の授業をそのままではなくアレンジを加えて作業しています。
ですので、もし参考にするのであれば先生の授業をよく読んで理解した上でここを読んでください。
正直いって私のソース汚いです。。。テストもほとんどしてないのでバグもあろうかと思います。
ですので、ここに書いてあることをやって、その結果何が起こっても僕は責任持てませんのであしからず。
先生ならきっともっと上手にやるんだろうなぁ…。
コメント
トラックバックありがとうございます&反映が遅くなってしまって申し訳ないです(まさかトラックバックされているとは夢にも思わず、確認を怠っておりました)
こうやって感化されて広がっていくのって、オープンソースらしくていいなーと感じているところです。僕もまだまだ勉強の途中なので、一緒にEC-CUBEを盛り上げていきましょうね♪
ソースも見やすくていいサイトですね^^
おぉ!先生!
いつも大変お世話になっております。
お褒めいただき大変恐縮です。
思いやりが足りないせいか先生のように見る人に優しい記事は書けずにいるのですが、先生を見習って精進したいと思っております。
これからもご指導のほどよろしくお願いいたします。
私も微力ながらこのBLOGでEC-CUBEを盛り上げる一助となれば幸いです。
わざわざどうもありがとうございました!
こんにちは。とても参考にさせていただいております。
上記のカスタマイズの件ですが、そのままコピーした状態ではファイルのアップロードができないようです。(アップロードボタンしても反応しない)
非常に有用なカスタムだと思いますので、ぜひ実装したいです。
宜しくお願いします。
Side8810さん、こんにちは 🙂
コメントありがとうございます。
アップロードボタンが反応しないとのことですので、おそらくは
<input type="button" name="btn" onclick="selectAll(‘category_id’); fnModeSubmit(‘upload_image’, ‘image_key’, ‘<!–{$key}–>’)" value="アップロード">
ボタンをonclickしたときのfnModeSubmit();呼び出しに失敗しているんじゃないかと思うんですが、すぐには原因の特定が難しいです。
そのうちまとまった時間が取れたらこちらで検証してみたいと思いますので、今しばらくお時間ください。
ちなみに、僕がこの記事を書くのに参考にさせていただいた穂万先生の記事
http://www.eccube-school.jp/products/detail43.html
の方法でもuploadフォルダにアップした画像を表示することが可能です。
もしお急ぎでしたら先生の方法をご利用になることをお薦めします。
この記事の内容を実装するには少なくともPHPの知識がある程度ないと正直難しいと思います。まずは穂万先生に習って、ただコピペするのではなくソースを理解しながら実装して、それから僕の方法にチャレンジしてもらうと理解も進んでいいんじゃないかなと思います。
最後に余計な事とは思いつつ…
僕もつい1,2年前まではPHPの事は何もわからない素人でした。
なので、Webで見つけたコードをそのままコピペしてカスタマイズとかしてましたが、それだと何か想定外のことが起こると対応できないのですよね。
ですので時間がかかってもそこに書かれたコードが何を意味するのか理解する努力をしてみるといいと思います。そうこうするうち今まで読めなかったソースが読めるようになって、楽しくなってくる。そうすると今度は自分で作ってみたくなる。どんどん上達するにつれて、実践でも活用できるようになりSide8810さんのお仕事の役にも立つと。
一朝一夕というわけにはいきませんがぜひ頑張ってみてくださいね。
通りすがりのものです。
数日前に EC-CUBE を使い始めました。
アップロードできない件ですがアップロードボタンにはりついている
JavaScript の selectAll() 関数が未定義のようでした。
(これは product.tpl からコピペ)
あと、アップロード直後にファイル名を入れておく
hidden フィールドも足りないような気がします。
v2.3.3 で確認しました。
単にカテゴリーに画像を貼るだけなのに、こんなに面倒とは。。
このあたり想定できる機能なので標準でいれてほしいですよね。
もしくはもっと簡単に拡張できないと。
HTML タグで貼るのもなぁという気がします。
ymさん、はじめまして 🙂
拙い僕の記事をフォローをしていただきましてありがとうございます!
仰るとおり、このカスタマイズかなり苦労した覚えがありまして、見直すのは難儀だなぁと…なかなか手をつけられずにおりまして…(言い訳)
ご指摘いただき大変助かりました。
EC-CUBEは一筋縄ではいかないですね^^;
特に管理画面は使い勝手にやや難がある上にカスタマイズが大変ということもあって、不便さを解消するためにCakePHPベースで管理機能を作って、そっちでDB操作をするようになりました(笑)
商品の一括変更とか一覧からフラグを切り替えたりとか簡単なものばかりですけど重宝します 🙂
EC-CUBEがCakePHP(他のフレームワークでもいいけど)ベースで作られてたら、もっと盛り上がるし開発も進むような気がするんですけどねぇ…なんて無責任な独り言でした。
さっそく反映していただきましてありがとうございます。
hidden フィールドですがもう一つ必要かもしれません。
$arrHidden にセットされるものです。クラスのほうを
ちゃんと確認してませんので、これで本当に良いのかどうか
わかりませんが、category.tpl の先頭数行は次のようにしました。
(v2.3.3 で確認したので他のバージョンには合わないかもしれません)
———————-8<————————-
// target の子要素を選択状態にする
function selectAll(target) {
$(‘#’ + target).children().attr({selected: true});
}
<form name=”form1″ id=”form1″ method=”post” action=”” enctype=”multipart/form-data”>
<input type=”hidden” name=”parent_category_id” value=”“>
<input type=”hidden” name=”category_id” value=”“>
<input type=”hidden” name=”” value=”“>
———————-8<————————-
あと、v2.3.3 では管理画面のテンプレートだけは常に default のほうが
使われるみたいですね。。これを理解するのにずいぶん時間が掛かってしまいました ^^;)
ymさん、本当にありがとうございます!ミスばかりで大変恐縮です >_< 仰るとおり、foreach で $arrHiddenを回す記述を忘れてました^^; 早速記事に反映させていただきますね 😉 ご迷惑ばかりおかけしますが、これからもご指導のほどよろしくお願いいたします。