月: 2008年12月

WORDPRESSのビデオテュートリアル30選

http://sixrevisions.com/wordpress/30-excellent-wordpress-video-tutorials/

テーマの作成やカスタマイズ法などがビデオテュートリアルで公開されている。

但し、英語なので、全然分かってないところから、、、というのは、ちと厳しいかも。
大体概要は分かっていて、もう少しスキルブラッシュアップしたい、というときには、とてもいい勉強になりそう。

【EC-CUBE】SMARTYでマルチバイト文字を丸める(字数制限を利用する)

SMARTYのテンプレートで商品説明などを表示するときに、レイアウト上、前から10文字だけを表示してあとは、「…」という感じで表示する文字数を合わせたいときに利用する。

前から何文字目から何文字、といったように文字を丸めるわけだが、日本語の場合マルチバイトなので、PHPで本来の丸めにつかうtrancate()が利用できないので、mb_strimwidth()を使う。

それをSMARTY上で、利用することになる。

例:

{$hoge|mb_strimwidth:0:40:”…”|escape}

『$hogeの文字列の最初から(=0)、40字(=40)を表示し、一番最後は「…」と表示する。』という意味。
注意しておくのは、どうやら、この40字、マルチバイトは半角の2文字なので、つまりは、これで20文字ということになる模様。なるほど。

これ、結構使えるなぁ。

参考:
http://www.php-seed.net/blog/archives/118
http://www.phppro.jp/phpmanual/php/function.mb-strimwidth.html

【EC-CUBE】テンプレートの中に別のテンプレート(ブロック)を呼び込む記述

1)管理画面からブロック(tempA)を作る。 (※既存のテンプレブロックの場合は、これは不要)

2)読み込む側のテンプレのソースにインクルード用のコードを記述する。

<!–{assign var=tempA value=$smarty.const.USER_TEMPLATE_PATH|cat:”default/bloc/tempA.tpl“}–>
<!–{include file=$tempA}–>

重要!)先に変数にアサインしてから、インクルードすること。上記ソース参照。
下記でも可能。

<!–{include file=`$smarty.const.USER_TEMPLATE_PATH`default/bloc/tempA.tpl}–>

【EC-CUBE】テンプレを変更してもブロックレイアウト情報を設定したとおりに再現する

EC-CUBEでは、ブロックのデフォルトレイアウトが、update_block.sqlのSQL文によって設定されている。

管理画面でレイアウトを決めても、テンプレートを変更したり、キャッシュをクリアした場合、ブロックレイアウトの情報をこのupdate_block.sqlから新規に読み込んできてしまうため、その都度デフォルトのブロックレイアウトに変わってしまう。

これじゃあ、イタチのおっかけっこってやつじゃあないですかい?
ってことで、一旦リリースしたWEBサイトでは、次にテンプレ更新したときも、やっぱり同じブロックレイアウトで表示されたいですな、ってことで、どん。

update_block.sqlは、
/data/smarty/templates/(テンプレ名)/_packages/sql/
/user_data/packages/(テンプレ名)/sql/
/user_data/packages/default/sql/
にそれぞれあるので、ここの値を変更。

テンプレの更新時に読み込んでもらいたいなら(Aのテンプレでは、Aのブロックレイアウトセットを使うけど、違うテンプレのときには違うブロックレイアウトセットを使うときは)/data/smarty/templates/(テンプレ名)/_packages/sql/のなかのupdate_block.sqlのみ編集。

下記に編集ルールをば。

INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,5,1,0,’category’);

これは、前から、

  • page_id→
  • target_id→5
  • bloc_id→1
  • bloc_row→0
  • filename→category

と設定されているということで、

page_id トップページ=1、一覧ページ=2、詳細ページ=3、マイページ=4、その他カスタムで作成したページへID付与。(dtb_pagelayout参照)
target_id 左カラム=1、中央上カラム=2、右カラム=3、中央下カラム=4、未使用ブロック=5.mtb_target参照)
bloc_id カテゴリー=1、利用ガイド=2、かごの中=3等。(dtb_bloc参照)
bloc_row カラム内でのブロックの表示優先順位。0は非表示で、target_idに5(未使用ブロック)が選択されている場合に設定可能。
filename カテゴリー=1、利用ガイド=2、かごの中=3等。(dtb_bloc参照)bloc_idと対応している。

つまり、上記の文では、トップページでは、カテゴリーブロックが未使用、ということ。

自分で、決めたレイアウトどおりにブロックの配列を記載しておくとよい。

新規ページを作成した場合、そのブロックの設定は、データベースのdtb_blocpositionに保存されるので、テンプレが更新されてもリセットはされない。デフォルトの各ページのみこのSQLの影響を受ける。もちろん新規ページについても同SQL内で設定しておくことも可能。