2013年3月21日木曜日

CS-Cart3 ランキングブロックにランク画像を追加する

CS-Cart3の商品ブロックを使い、[コンテンツ]の[表示内容]に「人気の商品」を指定すると、売れ行きランキング表示ができる。
このランキングに「No.1」「No.2」のような画像を追加する。

■やること
ランキング画像を利用中スキンのimagesに「ranking_X.png」というファイル名でアップロードし、 下記のようなコードを追加する。

 ※Xは1から始まる数字

※sproductsは後述する「グリッド」の場合だけかもしれないので、その場合は、該当する.tplファイルのforeach名に置き換えてください
※管理画面で指定した表示数分の画像を作ってアップロードしておくこと。

■コードの追加箇所
テンプレートを「グリッド」にした場合。

グリッドのテンプレートは
 /skins/[利用中のスキン名]/customer/blocks/list_templates/grid_list.tpl
となる。

grid_list.tplには
 {hook name="products:product_multicolumns_list"}
というhookポイントの記述があるので、

 /skins/[利用中のスキン名]/customer/addons/mychanges/hooks/products
 /skins/[利用中のスキン名]/customer/addons/mychanges/hooks/products/product_multicolumns_list.override.tpl

を作成し、product_multicolumns_list.override.tplを変更する(元のgrid_list.tplはいじらない)。
product_multicolumns_list.override.tplは、grid_list.tplのhookポイントの中身をコピーし、任意の位置にランキング画像のコードを追加する。

■注意
このままだとgrid_list.tplのマルチカラムを利用するすべてのブロックで画像が表示されてしまうので、任意の場所だけに表示できるように制限する必要がある。
制限の方法はいろいろあるだろうけども、たとえばトップページのブロックのみ表示させたい、といった時にはテンプレート側で特定URLのみ表示、としたのが下記のサンプル。

画像の上にランキング画像を表示する例(トップページのみ表示)

{if $smarty.server.REQUEST_URI == "/"}

{/if} {include file="common_templates/image.tpl" obj_id=$obj_id_prefix images=$product.main_pair object_type="product" show_thumbnail="Y" image_width=$settings.Thumbnails.product_lists_thumbnail_width image_height=$settings.Thumbnails.product_lists_thumbnail_height} {if $settings.Appearance.disable_quick_view != 'Y'} {include file="views/products/components/quick_view_link.tpl"} {/if}  :  :

2013年3月18日月曜日

CS-Cart3 商品価格表示の (○円 税込) を (税込 ○円) に変更したい

CS-Cartは、商品を税込み表示にした際、(○○円 税込) と表示される。
(税込 ○○円) というように価格と税込の文字列を入れ替える。

■修正ファイル
/skin/(利用スキン名)/customer/common_templates/product_data.tpl

■修正箇所
270行あたりにある
{******************* Clean Price ******************}
のブロック内
({include file="common_templates/price.tpl" value=$product.taxed_price span_id="product_price_`$obj_prefix``$obj_id`" class="list-price nowrap"} {$lang.inc_tax})

{$lang.inc_tax}が「税込」になるので、{$lang.inc_tax}と半角スペースを前方に移動する。

({$lang.inc_tax} {include file="common_templates/price.tpl" value=$product.taxed_price span_id="product_price_`$obj_prefix``$obj_id`" class="list-price nowrap"})

ただし、この修正はhookポイントがないので、アップデートなどで上書きされる可能性があるのを忘れないように。

2013年3月15日金曜日

CS-Cart3 フックポイントのファイルを読み込まないとき

CS-Cart3
フックポイントを見つけ、正しい位置に正しい名前でファイルを設置したのに、読み込まれない時、アドオンを追加していないかどうかチェックしてみるといい。

もし、アドオンを追加していたら。一端そのアドオンを無効にし、ページを再読み込みすると反映されることがある。その後はアドオンを有効にするのを忘れずに。

たぶん、同じ名前のフックをアドオンで使っているからこういうことが起こるんだと思いますよ。たぶんね。

2013年3月14日木曜日

CS-Cart3 画像リンクをオンマウスで変更

CS-Cart3でjQuery.rollover.jsを使ってオンマウスで画像変更する。

■用意するモノ
jQuery.rollover.js
 /lib/js/jqueryrollover/jquery.rollover.js

■作るモノ
jqueryrolloverディレクトリ(名前はjqueryrolloverでなくてもOK)
 /lib/js/jqueryrollover

rollover_id.jsファイル(名前はrollover_id.jsでなくてもOK)
 /lib/js/jqueryrollover/rollover_id.js

hookディレクトリ類(Basicスキンを使っている場合&カスタマー画面)
 /skins/basic/customer/addons/my_changes
 /skins/basic/customer/addons/my_changes/hooks
 /skins/basic/customer/addons/my_changes/hooks/index
 ※my_changes含め、下層の名前は固定。変更しちゃダメ。

script.override.tpl
 /skins/basic/customer/addons/my_changes/hooks/index/script.override.tpl
 ※名前は変更しちゃダメ(状況に応じて「override」は変更可)。

■作り方
1.script.override.tplに以下のように記述する
{script src="lib/js/jqueryrollover/jquery.rollover.js"}
{script src="lib/js/jqueryrollover/rollover_id.js"}

2.rollover_id.jsに以下のように記述する
jQuery(function($) {$('#hogehoge a img').rollover();});

3.完成。

ディレクトリ名、ファイル名を変更している場合は、script.override.tplの記述内容を変更したディレクトリ名、ファイル名に変更すること。

#hogehogeは、オンマウスで画像を変更させたい部分のID。なので、#contentsとか#wrapperとか#totopとか、状況に応じたID名を記述。
クラスの場合も.menuとか記述すればOK。下記のように複合(ID:hogehogeとクラス:fugafuga)も可。

jQuery(function($) {$('#hogehoge a img, .fugafuga a img').rollover();});

この辺はCS-Cartじゃなくてjquery.rollover.jsの話なので割愛。

■説明しなさいよ、という人のための説明
まず、ヘッダにjquery.rollover.jsとrollover_id.jsを読み込む。
スクリプト類は、
 /skins/basic/customer/index.tpl
の中で、
 {include file="common_templates/scripts.tpl"}
というように呼ばれている。

scripts.tplに直接追記しても、もちろん動くけども、CS-Cartでは、フックポイントを利用するのが正しい方法。フックポイントを利用すれば、本体のバージョンアップなどでファイルが上書きされても、影響を受けない(らしいよ)。

 /skins/basic/customer/common_templates/scripts.tpl
では、最後にフックポイントがあるので、これを利用して追記する。

・scripts.tpl内のフックポイント
 {hook name="index:scripts"}
 {/hook}

nameが「index:scripts」なので、変更するファイルは
 /skins/basic/customer/addons/my_changes/hooks/index/script.override.tpl
に作る必要がある。

script.override.tplには、読み込むjsファイルを記述する。
ここではjquery.rollover.jsと、読み込む画像の条件を記述したrollover_id.jsの二つを記述。
このファイルが正しく読み込めていれば、ソースのヘッダに



が表示される。

次に、rollover_id.jsに、オンマウスで画像を変更したい場所を記述する。
サイト全体にやりたければ、
body a img
とする。
細かい設定内容については、本家サイトで確認をおすすめ。

画像変更する方法は「jQuery.rollover.js」を使う以外にもたくさんあるけれど、jQuery.rollover.jsは、「このIDだけ」「このクラスだけ」というように細かく部分指定できるので重宝します。
また、フォームにも対応しているのが便利。
画像の名前も_on以外にも自由に設定できることなども便利ポイント。

2013年3月12日火曜日

CS-Cart3 導入時用メモ

導入時にとりあえずいろいろ変更しないとお客さんに怒られちゃうよ的なアレコレ。
デフォルトから最低限変更しておく必要のあるものの変更内容メモ。
随時追加。

■テストメルマガ
購入手続き時(ステップ4:支払い方法)にメールマガジンの購読チェックがあり、マガジン名が「テストメルマガ」になっている。

メールマガジンを発行しない場合は管理画面メニューの[ウェブサイト]−[メルマガ配信]−[メールマガジン]で、「テストメルマガ」を[無効]にする。

メールマガジンを発行する場合は、同じく管理画面メニューの[ウェブサイト]−[メルマガ配信]−[メールマガジン]で、[名前]を任意のマガジン名に変更する。

■カスタム配送
購入手続き時(ステップ3:配送方法)の配送方法名が「カスタム配送」となっている。

管理画面メニューの[配送方法/税金]−[配送方法]から、任意の配送方法を選択するか、カスタム配送の[名前]を変更する。

■ダウンロードリンク
マイアカウントブロックにある「ダウンロード」リンクが不要な場合、hookを使ってメニューを編集する。

■請求書のロゴ変更
マイページの過去の買い物リストから作成できる請求書等に利用されているロゴを変更する

http://demoshop.4stars.ne.jp/skins/basic/mail/images/invoice_logo.png

画像サイズを変更した場合は、マニフェストファイル内のサイズ変更も忘れずに行うこと

/skins/[利用しているスキン名]/manifest.ini

2012年6月27日水曜日

iTunesで音が出ない、再生できないエラーの対応

iTunes起動時に「iTunes はオーディオの設定に問題を見つけました。オーディオやビデオの再生が正しく動作しないかもしれません。」というエラーダイアログが表示されて、iTunesから音が出ない(再生ができない)状態の直し方。

1.[コントロールパネル]-[QuickTime](またはQuickTime(32ビット))をクリック 
2.QuickTime設定ウィンドウが開くので[オーディオ]タブを選択 
3.[デバイス]の[オーディオ再生に使用]を[Windows And Session]に変更し、[OK]または[適用]をクリック
 4.iTunesを起動する

 ※3.については[セーフモード(wave outのみ)]以外で、音が出る物を探していくことになるかもしれません

アプリやサウンドドライバが正しくインストールされているなら、アンインストール&インストールより前に試してみて。



追記:
iPhoneをUSBケーブルでパソコンにつないだらまた同じ症状が出るように。
しかも今度は直らない 。゜゜(´□`。)°゜。ワーン!!


更に追記:
イヤフォンジャックを突っ込んだ状態ではiTunesを起動してもエラーは表示されず。音声はちゃんとイヤフォンから出力される。
ということは、この現象、普段音声出力を持たない環境のパソコンでなるのではないか?と推測。スピーカーのない会社のパソコンとかね。
さて、実際のところ、どうなんでしょうか?

2012年6月21日木曜日

$this->Html と $html の違い

ヘルパーを使う際に$html->link~のように記述していたところ、$this->Htmlのように記述するように、と言われた。

$thisなんかなくたって動くんだから、短い方がいいじゃねえか、市内にいる時に市外局番いらねえだろ、とも思ったのだけども、師匠が「携帯のご時世だからな」と言うので、今後は$thisから記述することにする。

話によると、今後のバージョンでは$thisありで統一なんだとか(未確認)。

なお、ヘルパーの最初の文字は大文字にすること。

$this->Html->link();
$this->Form->input();

2012年6月18日月曜日

Windowsインストール時に特定のファイルがコピーできないエラー

Windowsを再インストールの最中、特定のファイルがコピーできずエラーとなる症状に出くわすことがある。 この場合、ハードディスクにパーティションを切って、別のパーティションにインストールすると成功する場合がある。 ハードディスクが新品であれば、CD-ROMのキズなどを疑い、(あるなら)別のCD-ROMからインストールを試すとか、光学ドライブを取り替えてみる、という方法が取れる。 しかし、古いハードディスクにインストールしている場合は、ハードディスクの問題かもしれない。 先日、古いパソコンをリビルトしている最中にこの症状に出くわしたのだけども、CD-ROMを入れ替えても同じ場所で同じエラーに遭遇する。 そこで、パーティションを分割し、最初に1GB、残りのエリアにWindowsをインストールしてみた。 すると、やはりエラーになるのだが、今回はコピーできなかったファイルが違う。 そこで、再度パーティションを分割し、最初に2GB、残りのエリアにWindowsをインストールしてみた。 すると、今回は何事もなくWindowsのインストールに成功した。 つまり、今回のケースでは、ハードディスクの最初の2GB目までに、なんらかの問題があり、ファイルを書き込むことができない状態になっているのだろう。 ただ、このような状態の古いハードディスクは、早かれ遅かれ壊れる可能性が高いと思う。 可能であれば、新しいハードディスクに入れ替えてしまう方が圧倒的に安心だろう。

2012年6月15日金曜日

スタイルシートにrelやtitleを追加する CakePHP

CakePHPでタグの属性を設定する方法。

■Alternateを追加する
default.cssを読み込む際、alternateも指定する場合、下記の様に記述する

Html->css('default', 'stylesheet alternate');
?>

下記の様に出力される


■title
title属性にmasterを設定する

Html->css('default', 'stylesheet alternate', array('title'=>'master'));
?>

下記の様に出力される


2012年5月25日金曜日

CakePHPでHTMLヘルパーを利用してリンクを記述する場合、ページの途中へリンクを設定する方法。(CakePHP1.3)
name(アンカー)にリンクを張るには、urlを指定する際、#に指定すればいいらしい。
例)/shop/area#westarea にリンクを張りたい場合
リンク元Viewファイル
 $html->link('ページの途中へのリンク',array(
 'controller'=>'shop',
 'action'=>'area',
 '#'=>'westarea'
));

下記のように表示される
おすすめ物件
リンク先viewファイル