EC-cube NEW商品だけ表示させるブロックの作り方
久しぶりの忘備録です~
EC-cubeカスタマイズ中が終わったので、
記録留め用
Ver.は 2.11.5
★商品登録画面の商品ステータスの「NEW」にチェックを入れた商品を、任意の件数だけPCに自動表示させるブロックの作り方
※ < と > は、便宜上「全角」で載せてあります。
使う際には「半角」に直すこと→置換すればよい。
・「html/frontparts/bloc/product_flag.php」を作成
~~~~~~~~~~~~~~~~~~~~~~~~~
<?php
// {{{ requires
require_once(CLASS_EX_REALDIR . “page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag_Ex.php”);
// }}}
// {{{ generate page
$objPage = new LC_Page_FrontParts_Bloc_ProductFlag_Ex();
register_shutdown_function(array($objPage, “destroy”));
$objPage->init();
$objPage->process();
?>
~~~~~~~~~~~~~~~~~~~~~~~~~
・「data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag_Ex.php」を作成
~~~~~~~~~~~~~~~~~~~~~~~~~
<?php
// {{{ requires
require_once(CLASS_REALDIR . “pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.php”);
/**
* productStatus のページクラス(拡張).
* LC_Page_FrontParts_Bloc_ProductFlag をカスタマイズする場合はこのクラスを編集する.
*/
class LC_Page_FrontParts_Bloc_ProductFlag_Ex extends LC_Page_FrontParts_Bloc_ProductFlag {
// }}}
// {{{ functions
/**
* Page を初期化する.
* @return void
*/
function init() {
parent::init();
}
/**
* Page のプロセス.
* @return void
*/
function process() {
parent::process();
}
/**
* デストラクタ.
* @return void
*/
function destroy() {
parent::destroy();
}
}
?>
~~~~~~~~~~~~~~~~~~~~~~~~~
・「data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.php」を作成
~~~~~~~~~~~~~~~~~~~~~~~~~
<?php
// {{{ requires
require_once CLASS_REALDIR . ‘pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php’;
/**
* productStatus のページクラス.
* @package Page
*/
class LC_Page_FrontParts_Bloc_ProductFlag extends LC_Page_FrontParts_Bloc {
// }}}
// {{{ functions
/**
* Page を初期化する.
* @return void
*/
function init() {
parent::init();
$bloc_file = ‘productFlag.tpl’;
$this->setTplMainpage($bloc_file);
}
/**
* Page のプロセス.
* @return void
*/
function process() {
if (defined(“MOBILE_SITE”) && MOBILE_SITE) {
$objView = new SC_MobileView();
} else {
$objView = new SC_SiteView();
}
$objSiteInfo = $objView->objSiteInfo;
// 基本情報を渡す
$objSiteInfo = SC_Helper_DB_Ex::sfGetBasisData();
$this->arrInfo = $objSiteInfo->data;
$objQuery = new SC_Query();
//検索したい商品のステータスを設定
//NEW→1, 残りわずか→2, ポイント2倍→3, オススメ→4, 限定品→5
$productFlag = 1;
//検索する商品のステータスをランダムに決定し、表示させたい場合は以下のコメントを外してください。
//$id_count = $objQuery->count(mtb_status);
//$productFlag = rand(1,$id_count);
$this->statusName = $objQuery->get(“name”, “mtb_status_image”, “id = ? “, array($productFlag));
//表示する商品の件数
$listCount = 4;
$col = “dtb_products.product_id, dtb_products.name, dtb_products.main_list_image, dtb_products.main_list_comment AS comment, MIN(dtb_products_class.price02) AS price02_min, MAX(dtb_products_class.price02) AS price02_max”;
$from = “dtb_products INNER JOIN dtb_products_class ON dtb_products.product_id = dtb_products_class.product_id INNER JOIN dtb_product_status ON dtb_products.product_id = dtb_product_status.product_id”;
$where = “dtb_products.del_flg = 0 AND dtb_products.status = 1 AND dtb_product_status.product_status_id = ?”;
$groupby = “dtb_products.product_id, dtb_products.name, dtb_products.main_list_image, dtb_products.main_list_comment, dtb_product_status.product_id, dtb_products.update_date”;
$this->groupby=$objQuery->setGroupBy($groupby);
//商品の表示はupdate_dateが新しい順
$order = “dtb_products.update_date DESC”;
$this->order=$objQuery->setOrder($order);
$arrFlagList = $objQuery->select($col, $from, $where, array($productFlag));
//商品の表示をランダムに抽出する場合は以下のコメントを外してください。
//srand((double)microtime()*1000000); //乱数生成器を初期化
//shuffle($arrFlagList);
$this->arrFlagProducts = array_slice($arrFlagList, 0, $listCount);
$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}
/**
* デストラクタ.
* @return void
*/
function destroy() {
parent::destroy();
}
}
?>
~~~~~~~~~~~~~~~~~~~~~~~~~
・「data/Smarty/templates/default/frontparts/bloc/productFlag.tpl」を作成
~~~~~~~~~~~~~~~~~~~~~~~~~
<!–{if count($arrFlagProducts) > 0}–>
<div class=”bloc_outer clearfix”>
<div id=”recomend_area”>
<h2>新着商品</h2>
<!–{section name=cnt loop=$arrFlagProducts step=2}–>
<div class=”bloc_body clearfix”>
<div class=”recomendleft clearfix”>
<div class=”productImage”>
<a href=”<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrFlagProducts[cnt].product_id|u}–>”>
<img src=”<!–{$smarty.const.ROOT_URLPATH}–>resize_image.php?image=<!–{$arrFlagProducts[cnt].main_list_image|sfNoImageMainList|h}–>&wi
dth=80&height=80″ alt=”<!–{$arrFlagProducts[cnt].name|h}–>” /></a>
</div>
<div class=”productContents”>
<h3>
<a href=”<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrFlagProducts[cnt].product_id|u}–>”><!–{$arrFlagProducts[cnt].name|h}–></a>
</h3>
<!–{assign var=price01 value=`$arrFlagProducts[cnt].price01_min`}–>
<!–{assign var=price02 value=`$arrFlagProducts[cnt].price02_min`}–>
<p class=”sale_price”><!–{$smarty.const.SALE_PRICE_TITLE}–>(税込):
<span class=”price”><!–{$price02|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}–> 円</span>
</p>
<p class=”mini comment”><!–{$arrFlagProducts[cnt].comment|h|nl2br}–></p>
</div>
</div>
<div class=”recomendright clearfix”>
<div class=”productImage”>
<!–{assign var=cnt2 value=`$smarty.section.cnt.iteration*$smarty.section.cnt.step-1`}–>
<!–{if $arrFlagProducts[$cnt2]|count > 0}–>
<a href=”<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrFlagProducts[$cnt2].product_id|u}–>”>
<img src=”<!–{$smarty.const.ROOT_URLPATH}–>resize_image.php?image=<!–{$arrFlagProducts[$cnt2].main_list_image|sfNoImageMainList|h}–>&widt
h=80&height=80″ alt=”<!–{$arrFlagProducts[$cnt2].name|h}–>” /></a>
</div>
<div class=”productContents”>
<h3>
<a href=”<!–{$smarty.const.P_DETAIL_URLPATH}–><!–{$arrFlagProducts[$cnt2].product_id|u}–>”><!–{$arrFlagProducts[$cnt2].name|h}–></a>
</h3>
<!–{assign var=price01 value=`$arrFlagProducts[$cnt2].price01_min`}–>
<!–{assign var=price02 value=`$arrFlagProducts[$cnt2].price02_min`}–>
<p class=”sale_price”><!–{$smarty.const.SALE_PRICE_TITLE}–>(税込):
<span class=”price”><!–{$price02|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}–> 円</span>
</p>
<p class=”mini comment”><!–{$arrFlagProducts[$cnt2].comment|h|nl2br}–></p>
<!–{/if}–>
</div>
</div>
</div>
<!–{/section}–>
</div>
</div>
<!–{/if}–>
~~~~~~~~~~~~~~~~~~~~~~~~~
・DBの「dtb_bloc」にパスを入れる。
パスは「frontparts/bloc/product_flag.php」
作成したサイトの生死確認の方法♪
作成したサイトの生死確認の方法♪
ブログに書いたら画像がみずらかったので、別ページを作成しました~
↓ ↓ ↓
↑ ↑ ↑
(*゚▽゚)b
ファイル名一括取得
久しぶりの忘備録
フォルダ内のファイル名を簡単に取得したい時のbatファイルの作り方です♪
1:メモ帳を開く
2:dir /b *.text > TitleGet.csv
と、記述(コピペでOK)
3:保存してメモ帳を終了
4:ファイルの拡張子を「.txt」から「.bat」に変更
5:取得したいフォルダに↑ファイルを移動
6:ダブルクリックすると「TitleGet.csv」と言うファイルが出来、
その中に、取得したファイル名が一覧で出力されます。
*.text を *.jpg とする事で、画像ファイル(.jpg)など取得対象を変えれます。
大量のデータを管理する時に重宝します。
(*゚Д゚)はぁはぁ
多数のサブディレクトリ内のファイルを一括コピーするには
お客さんから頼まれたサイト作成、
商品画像は、旧ページから取ってきてねっ てへぺろ☆(・ω<) との事・・・・・ 画像3000以上あるじゃまいかщ(゚ロ゚щ) と、いう事で、 ftpでサバからフォルダ毎抜き出しました♪ ※画像の場所は、サイトの画像URLから判断 だがしかしっ!! 画像ファイルのみ欲しかったのですが フォルダ構造が img / aaa / aaa1.jpg / bbb / aba2.jpg / ccc / ars3.jpg となっていて、 なぜに、フォルダ1つに1つのファイルが入っているのかと! 小一時間問い詰めたいorz これを、1つ1つコピペで移動は、さすがに、時間がもったいない&心が折れますw(爆 アフォらしいので、コマンドプロンプトで実行しました♪ マジ、コマンドプロンプト神!( ゚д゚) 前提条件: 元ファイルディレクトリ C:\src2 コピー先ディレクトリ C:\src3 移動ファイル種別 .jpg ★src2 ディレクトリ内の小賢しいファイル達 src2 / aaa / aaa1.jpg / bbb / aba2.jpg / ccc / ars3.jpg を、 src3 / aaa1.jpg / aba2.jpg / ars3.jpg (・∀・)イイ!! にします♪ 1:「スタートボタン(Winマークのやつ)」を押下 2:「プログラムとファイルの検索」に「cmd」を入力し、「Enter」押下 ※「 」は、要りません。 3:コマンドプロンプトに以下のコマンドを叩き込む ※キーボードを壊さない程度に C:\>for /f %i in (‘dir C:\src2 /b’) do xcopy /d C:\src2\%i\*.jpg C:\src3\
以上。
綺麗になりました、(*゚Д゚)はぁはぁ
もちろん、 .jpg じゃなく .gif であれば
C:\>for /f %i in (‘dir C:\src2 /b’) do xcopy /d C:\src2\%i\*.gif C:\src3\
とか、その辺は、読み替えてください。
質問上手な人は、サイト作成もウマイ( ゚д゚)
さてさて、たまに、よく質問を頂くのですが、 oO(たまにか、よくかどっち!?)
質問の仕方が、
『上手』な人と
『日本語で(‘-‘*)ヨロシク♪』
と、いう人に、分かれます・・・・・
どういう事かと言いますと、
『自分が何をやって、どこで つまずいてるのか?』を、具体的に教えてくれる人は、こちらも具体的な回答をしやすいです(*゚Д゚)はぁはぁ
逆に、『がんばったんですけど、できません。』とか、
えっ?何を、どのように、どこまで、どうしたの?
「がんばった」は自己評価だから、それは、関係ないでしょ
てか、名前書こうねwwwww
と、いうLVの人さえ、居らっしゃいます。
質問内容が、具体的なほど、相手も具体的に応える事が出来ます。
つまり、尋ね方次第で、「欲しい回答を引き出しやすくなるのです。
例えば、あなたは、、、、
・数学が分かりません
・数学の素因数分解の手順が分かりません
どちらが、『相手に分かりやすく』教えやすいですしょうか?
質問とは、質問をされる人の
『時間』と『頭』を利用する行為です。
それは、相手の感情に訴えかける可能性秘めた行為。。。
それは、相手の協力体制を「引き出せるかどうか?」という行為。。。
・まずは自分で調べてみるくせをつける
→検索する人の心理の勉強
・どうしても分からない時は、分かりそうな人に聞く
・質問する 際は、相手が回答しやいように考えて質問する
→自分自身の情報の整理
その質問は、はたして、その人にしか答えられない内容ですか?
『相手を想うから、自分で調べれることは自分で調べる。』
『相手の時間を消費するから、出来だけ分りやく質問する。』
相手の気持を考えれる人は、ビジネスに於いても「ユーザ心理」が理解できる人です。
それが、アフィリに於いても、
顧客目線で記事が書け、
売れやすいサイトを作れるようになるのではないでしょうか(*゚▽゚)b
どんどん、恐れずに質問(コメント)してきてくださいw