2012年02月 / 01月≪ 1234567891011121314151617181920212223242526272829≫03月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2012.02.29 (Wed)

EC-CUBEメモ

他のもん触ると絶対忘れるのでEC-CUBEの構造をざっとおさらいできるようのメモ

・/html
公開ファイル側
CSSやimg等ユーザー側か見るものは全部こっちへ
各ページは各クラスを呼び出すだけのphpファイル
・/data
内容処理・ページテンプレート・メールテンプレート置き場

・/data/class
クラスファイル群。ec-cube側なので基本的に追加以外はいじらない

・/data/class_extends
クラスファイルにカスタマイズを加える際に利用する。
クラスファイル階層と同じ構成でExファイルがあるのでそれに対して修正をくわえる。

・/data/config/config.php
サイトURLとかデータベースの設定とかコアな設定部分

ページ追加の基本ルール
とくに処理する必要ない表示だけのページであれば、管理画面からページ追加すればいい。
新しく機能を作成する場合は

  1. /data/class/pages/機能名/LC_Page_xxx.php
    本処理

  2. /data/class_extends/page_extends/機能名/LC_Page_xxx_Ex.php
    拡張用

  3. /data/Smarty/templates/デバイス/機能名/xxx.tpl
    表示テンプレート(PC、携帯、スマホで使うなら3か所)

  4. /html/機能名/xxx.php
    ユーザーからの呼び出しページ


のファイルが必要。
なるべくページ毎にクラスを作成するみたい。
一覧ページ、詳細ページ、完了ページとか別クラス。
管理画面のレイアウトからブロック配置やテンプレートを編集できるようにするには、
dtb_pagelayoutへの登録をする。
urlに呼び出しページphp、filenameにテンプレートファイル名(.tpl無し)を入れる。
デバイス数分レコード登録する必要がある
PC:device_type_id=10
携帯:device_type_id=1
スマホ:device_type_id=2
インストール時に登録したい場合は
html/install/sql/insert_data.sqlに追記

ブロック追加の基本ルール
ページ同様、表示のみなら管理画面から。
処理有なら

  1. /data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_xxx.php
    本処理

  2. /data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_xxx_Ex.php
    拡張用

  3. /data/Smarty/templates/frontparts/bloc/xxx.tpl
    表示テンプレート(PC、携帯、スマホで使うなら3か所)

  4. /html/frontparts/bloc/xxx.php
    ユーザーからの呼び出し用

  5. dtb_blocテーブルにデバイス分登録をする。
    tpl_path:xxx.tpl
    filename:xxx
    php_path:frontparts/bloc/xxx.php

のファイルが必要。

カスタマイズ時の注意
・基本的にinit,process,action,destroyの順で呼ばれ、本処理はactionに入れる。
・LC_Page_xxx_ExなどのExファイルにはinit,process,destroyが既に書かれているが、
actionは書かれていないのでactionをオーバーライドする場合はfunction action()で追加する。
うっかりprocessに処理入れちゃってちゃんと反映されないとかならないように注意。
parent::action()を書くかはオーバーライドする内容による。
・ブロックはpage>frontpartsの中

Smarty
・data/Smarty/templates
テンプレートファイル

・data/Smarty/templates_c
テンプレートのキャッシュファイル。反映されない場合は削除してみる

・data/Smarty/templates/default
PCのテンプレート

・data/Smarty/templates/mobile
携帯のテンプレート

・data/Smarty/templates/sphone
スマートフォンのテンプレート
jquery mobileが使われてる。


Smartyのルール
<!--{この中に書く}-->
・定数(XXXX)
<!--{$smarty.const.XXXX}-->

・変数
<!--{$xxxx}-->
クラスファイルからsmartyに値を渡す場合は
$this->xxxx = 'aaaa';
とthisに突っ込む

・連想配列
$xxx['id'] の場合
<!--{$xxx.id}-->


画像・CSSファイルの置き場所
html/user_data/packages/デバイス/css,imgのあたり。
html/user_data以下は管理画面のファイルアップロードからファイルを更新できる。
スポンサーサイト


 |  20:27  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑

2012.02.20 (Mon)

EC-CUBEの新着情報を個別ページ表示とかにしたい

EC-CUBEの新着情報ブロックをもうちょっとこう、ブログっぽくしたい人多いのではないかと思う。
せめて個別ページがほしい・・・ブロックは最新何件分のたいとるくらいでいい・・・

ってことで作りました。
http://uenomemo.sakura.ne.jp/soft/eccube_uenews.zip

どういうもんかっつったら通常のこのブロックを
uw000002_20120220044648.jpg

こーして
uw000003_20120220044649.jpg
一覧があって
uw000004_20120220044650.jpg
こういうページになるようにするってやつです。
uw000005_20120220044651.jpg

中に入ってるinsert.sqlを実行すれば未使用ブロックに出るので
uw000006_20120220044653.jpg
こーしたりできるし
uw000007_20120220044654.jpg

ページの設定もできるようになるので
uw000008_20120220044655.jpg
こーすれば
uw000009_20120220044656.jpg
こーなるし。
uw000010_20120220044657.jpg

使い方は
1)
http://uenomemo.sakura.ne.jp/soft/eccube_uenews.zip
をダウンロードして解凍
2)
中のhtmlとdataフォルダをeccubeのhtmlとdataフォルダに上書き
3)
insert.sqlを実行。エラーが出なければ成功。
エラーが出たらpage_id(29,30)とかbloc_idがかぶってる可能性があるのでかぶらない数字に変えて実行。
あ、最初からかぶりそうもない数字にしておけばよかったかな・・・

既存の「新着情報」の機能を使ってるので、追加する際は通常通り管理画面の新着情報から登録してください。

中身はシンプルなので、レイアウト調整するなりnewアイコン付けるなりはここからいじればいいかなって感じ。
cssもまったく当ててないからなんかぎゅうぎゅうだしw
ページ、ブロックともにdefaultテンプレートだけしか作ってないんで、携帯とかスマホ画面に出す場合はまたファイル作るなりなんなりしないとだめ。

ちなみにブロックに表示される件数はLC_Page_FrontParts_Bloc_UeNews.php内で指定してます。

サンプルがてらec-cube入れた。
http://uenomemo.sakura.ne.jp/eccube/html/

また使うことになりそうなんでまとめといた。

ec-cubeって自由度高いのはいいんだけど、1画面作るのにあっちこっちにファイル4個くらい作ったりするのがめんどいな。


 |  05:47  |  PHP  |  トラックバック(0)  |  コメント(5)  |  Top↑

2012.02.17 (Fri)

EC-CUBEでシーケンステーブルの作成箇所

EC-CUBE(2.11)で機能追加して、テーブルも追加した場合
html/install/sql/create_table_xxx.sql
にテーブルを作成するクエリを追加するんだけども、シーケンステーブルの作成は記述されてない。
どこにあるんだろう?と思って探したら
html/install/index.php内に記述してあった。
最後の方(1025行目くらい)にあるgetSequencesにシーケンスを使う該当のテーブルとカラム名を追加すればいいみたい。

/**
* シーケンスを使用するテーブル名とカラム名の配列を返す.
*
* @return array シーケンスを使用するテーブル名とカラム名の配列
*/
function getSequences() {
return array(array("dtb_best_products","best_id"),
array("dtb_bloc", "bloc_id"),
array("dtb_category", "category_id"),
array("dtb_class", "class_id"),
array("dtb_classcategory", "classcategory_id"),
array("dtb_csv", "no"),
array("dtb_csv_sql", "sql_id"),
array("dtb_customer", "customer_id"),
array("dtb_deliv", "deliv_id"),
array("dtb_holiday", "holiday_id"),
array("dtb_kiyaku", "kiyaku_id"),
...

↑ここらへん。
たとえば
テーブル名:dtb_testdata
シーケンスを使うカラム:testdata_id
だとしたら array("dtb_testdata", "testdata_id")。

mtbテーブルは使わないのかなと思ったけど、mtbの方は管理画面でIDから手入力前提だから要らないんだな。



 |  02:00  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑

2012.02.05 (Sun)

EC-CUBEでinsertしたときのauto_increment値(mysql)

EC-CUBEだとidなんかはシーケンス作るのが正しいみたいなんだけど、そうでなくidとかをauto_incrementにしてあるテーブルに挿入した際の直近のincrement値を取る方法(mysqlのみ)
$q = SC_Query_Ex::getSingletonInstance();
$row = $q->getAll('select last_insert_id() as id');
$id = $row[0]['id'];


 |  19:47  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。