バージョン選択

フォーラム

メニュー

オンライン状況

76 人のユーザが現在オンラインです。 (62 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 76
もっと...

サイト内検索

質問 > フロント機能 > 2.11.1系で、新着商品を表示させたい。

フロント機能

新規スレッドを追加する

| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
aska824
投稿日時: 2011/7/6 22:47
対応状況: −−−
長老
登録日: 2010/2/20
居住地: 静岡県
投稿: 185
Re: 2.11.1系で、新着商品を表示させたい。
あ!表示されました!
やっぱりfukap様はすごいなぁ^^;

自分はMIN、MAXが原因があると思ってもういいや!って思って
dtb_products_class.price02
だけにして無理やり表示させるようにしてみました><

後はテンプレートだけです^^;
おすすめ商品を参考にしてみると、何故か二つ表示されてしまっ^^;

なんか横から入ったにも関わらずどんどん進めちゃってごめんなさい><

【追記】
あ、そのままだと表示されないみたいっすね^^;
自分は、IfGetProductFlagを作ってそこにつなげてます。


----------------
-----------情報-----------
自分の分かる範囲でお答えします。

Shop Mate

aska824
投稿日時: 2011/7/6 23:58
対応状況: −−−
長老
登録日: 2010/2/20
居住地: 静岡県
投稿: 185
Re: 2.11.1系で、新着商品を表示させたい。
一応全て完成ができたみたいなんで、自分なりに試行錯誤したり、fukap様に協力していただいたものを載せてみます。
(まぁほとんどfukap様が作ったようなもんなんですけど^^;)

/html/frontparts/bloc/product_flag.phpを作成。
引用:

<?php

// {{{ requires
require_once realpath(dirname(__FILE__)) . '/../../require.php';
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();
$objPage->blocItems = $params['items'];
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();
?>


/data/class_extends/pages_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 = 'product_flag.tpl';
$this->setTplMainpage($bloc_file);
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
$this->action();
}

function action() {

// 基本情報を渡す
$objSiteInfo = SC_Helper_DB_Ex::sfGetBasisData();

//新着商品表示
$this->arrProductFlag = $this->lfGetProductFlag();
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}

function lfGetProductFlag() {
$objView = new SC_SiteView();
$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 = 8;




$col = "dtb_products.product_id, dtb_products.name, dtb_products.main_image, 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_product_status.product_status_id = ?";
$groupby = "dtb_products.product_id, dtb_products.name, dtb_products.main_image, 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);
}
}

?>


デザイン管理>PC>ブロック設定より「product_flag.tpl」を作成。(recommend.tplより引用【Best】を【Flag】に)
引用:

<!--{if count($arrFlagProducts) > 0}-->
<div class="bloc_outer clearfix">
<div id="recomend_area">
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_recommend.jpg" alt="*" class="title_icon" /></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_image|sfNoImageMainList|h}-->&width=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=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>
</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_image|sfNoImageMainList|h}-->&width=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=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>
<!--{/if}-->
</div>
</div>

</div>
<!--{/section}-->
</div>
</div>
<!--{/if}-->


データベース「dtb_bloc」の「php_path」を「frontparts/bloc/product_flag.php」に設定。

これで表示されると思います。
テンプレートはちょっと表示が崩れたりする場合がありますが、表示されると思います。


----------------
-----------情報-----------
自分の分かる範囲でお答えします。

Shop Mate

Leon
投稿日時: 2011/7/7 10:39
対応状況: −−−
半人前
登録日: 2011/4/13
居住地:
投稿: 16
Re: 2.11.1系で、新着商品を表示させたい。
ありがとうございます。
やっとエラーが無くなりましたがまだまだ、新着表示がされない。
商品に「New」をクリックしても、表示されません。

EC-CUBEバージョン 2.11.1
PHPバージョン PHP 5.1.6
DBバージョン MySQL 5.0.77

は対応してないでしょうか?
aska824
投稿日時: 2011/7/7 15:08
対応状況: −−−
長老
登録日: 2010/2/20
居住地: 静岡県
投稿: 185
Re: 2.11.1系で、新着商品を表示させたい。
う〜ん・・・
自分のサーバーもLeon様と同じ環境だったので
PHP:5.1.6
DB:MySQL 5.0.77
試してみましたが、しっかり表示されますね・・・。

引用:

やっとエラーが無くなりましたがまだまだ、新着表示がされない。

というのは、新着順に表示されない。とのことでしょか?

引用:

商品に「New」をクリックしても、表示されません。

とは、どういう事でしょうか?
もう少し詳しくお願いします・・・。


----------------
-----------情報-----------
自分の分かる範囲でお答えします。

Shop Mate

onchan777
投稿日時: 2011/7/18 22:56
対応状況: −−−
新米
登録日: 2011/7/18
居住地:
投稿: 10
Re: 2.11.1系で、新着商品を表示させたい。
上記ソース使わせていただきました。
上記ソースをそのまま利用すると私の環境でもシステムエラーが表示されてしまいましたが一部記述ミス(誤字)があるようです。

せっかくですので修正させていただきました。

■以下引用
------------------------------------------------------------
/html/frontparts/bloc/product_flag.phpを作成。
引用:

<?php

// {{{ requires
require_once realpath(dirname(__FILE__)) . '/../../require.php';
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();
$objPage->blocItems = $params['items'];
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();
?>


/data/class_extends/pages_extends/frontparts/bloc/ LC_Page_FrontParts_Bloc_ProductFlag_Ex.phpを作成 (←ExがEXになってました)
引用:

<?php

// {{{ requires
//require_once(CLASS_REALDIR . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.php");  (←LC_Page_FrontParts_Bloc_Recommend_Ex.phpを参考にし下記の通りにしました)
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 = 'product_flag.tpl';
$this->setTplMainpage($bloc_file);
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
$this->action();
}

function action() {

// 基本情報を渡す
$objSiteInfo = SC_Helper_DB_Ex::sfGetBasisData();

//新着商品表示
$this->arrProductFlag = $this->lfGetProductFlag();
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}

function lfGetProductFlag() {
$objView = new SC_SiteView();
$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 = 8;




$col = "dtb_products.product_id, dtb_products.name, dtb_products.main_image, 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_product_status.product_status_id = ?";
$groupby = "dtb_products.product_id, dtb_products.name, dtb_products.main_image, 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);
}
}

?>


デザイン管理>PC>ブロック設定より「product_flag.tpl」を作成。(recommend.tplより引用【Best】を【Flag】に)
引用:

<!--{if count($arrFlagProducts) > 0}-->
<div class="bloc_outer clearfix">
<div id="recomend_area">
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_recommend.jpg" alt="*" class="title_icon" /></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_image|sfNoImageMainList|h}-->&width=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=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>
</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_image|sfNoImageMainList|h}-->&width=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=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>
<!--{/if}-->
</div>
</div>

</div>
<!--{/section}-->
</div>
</div>
<!--{/if}-->


データベース「dtb_bloc」の「php_path」を「frontparts/bloc/product_flag.php」に設定。

これで表示されると思います。
テンプレートはちょっと表示が崩れたりする場合がありますが、表示されると思います。

------------------------------------------------------------

以上で問題なく表示ができました。
本当に重宝させていただいております。
今回はかなり需要があると思いこちらにてご報告させて頂きました。
ありがとうございました。
have
投稿日時: 2011/7/19 20:07
対応状況: −−−
一人前
登録日: 2010/11/4
居住地: 東京都
投稿: 83
Re: 2.11.1系で、新着商品を表示させたい。
onchan777様のコードでアップロードしたら、表示しなかったです。↓の画面になりました、おすすめ商品も表示しないです。
http://thumbnail.image.shashinkan.rakuten.co.jp/shashinkan-core/showPhoto/?pkey=e3cccfa8827bedcd3c6cb2c63601880962b2bad9.16.2.2.2a1.jpg

------------------------------------
EC-CUBE] 2.11.1
[レンタルサーバ] さくらスタンダード
[OS] FreeBSD 7.1-RELEASE-p15 i386
[PHP] PHP5.2.17
[データベース]MySql 5.1
[WEBサーバ] Apache/1.3.42
patapata
投稿日時: 2011/7/19 22:13
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: 2.11.1系で、新着商品を表示させたい。
想像ですが2点・・・

まず、have様の過去の投稿から推測するに、
1.EC-CUBEを実行する為の環境面がまだ正常ではない可能性があります。
この場合、複数の要因が絡んできますので、質問されても満足のいく回答を得ることは難しいかと思われます。
まずは、環境を整えてからカスタマイズすることをオススメします。

2.onchan777様 の投稿にはブロックの複製方法について、DB側の追加は要点のみ書かれております。その辺りは正しくできていますでしょうか?

---------------
テンプレートのみのカスタマイズであれば、初心者でも可能かと思われますがDBやPHP処理の絡むカスタマイズは、初心者にとっては難易度の高いものとなると思います。
自身でカスタマイズする場合は、PHPやDB、サーバの知識を最低限身に付けてから行うようにすることです。
それが難しい場合は、自身でのカスタマイズは諦めて、
カスタマイズ業者に依頼するか?EC-CUBEのASP版を利用するか?をご検討されるとよいかと思います。
onchan777
投稿日時: 2011/7/20 1:22
対応状況: −−−
新米
登録日: 2011/7/18
居住地:
投稿: 10
Re: 2.11.1系で、新着商品を表示させたい。
2.についてご返答させていただきます。
私の投稿というよりはaska824様のソースをほぼそのまま引用させていただき、一部の誤字修正のみで表題の内容を再現できたといったご報告程度ですので正しいかどうかというよりは結果オーライといった内容です。


引用:

patapataさんは書きました:
想像ですが2点・・・

まず、have様の過去の投稿から推測するに、
1.EC-CUBEを実行する為の環境面がまだ正常ではない可能性があります。
この場合、複数の要因が絡んできますので、質問されても満足のいく回答を得ることは難しいかと思われます。
まずは、環境を整えてからカスタマイズすることをオススメします。

2.onchan777様 の投稿にはブロックの複製方法について、DB側の追加は要点のみ書かれております。その辺りは正しくできていますでしょうか?

---------------
テンプレートのみのカスタマイズであれば、初心者でも可能かと思われますがDBやPHP処理の絡むカスタマイズは、初心者にとっては難易度の高いものとなると思います。
自身でカスタマイズする場合は、PHPやDB、サーバの知識を最低限身に付けてから行うようにすることです。
それが難しい場合は、自身でのカスタマイズは諦めて、
カスタマイズ業者に依頼するか?EC-CUBEのASP版を利用するか?をご検討されるとよいかと思います。
Leon
投稿日時: 2011/8/16 17:43
対応状況: −−−
半人前
登録日: 2011/4/13
居住地:
投稿: 16
Re: 2.11.1系で、新着商品を表示させたい。
ありがとうございます。
やっと表示されました。
さすがのベテランの方ですね。
これからも勉強して磨いていきます。
今後ともよろしくお願いします。
threetails
投稿日時: 2011/8/31 11:25
対応状況: −−−
新米
登録日: 2010/10/15
居住地:
投稿: 5
Re: 2.11.1系で、新着商品を表示させたい。
確かめた所、非公開、削除したデータも取ってきていたので、一部修正しました。
覚書という感じで投稿しておきます。


/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.php

この箇所の

$where = "dtb_product_status.product_status_id = ?";


を下記のコードと置き換えました。

$where = "dtb_product_status.product_status_id = ? AND dtb_products.del_flg = 0 AND dtb_products.status = 1";
« 1 2 3 (4) 5 6 »
| 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,031名です
総投稿数は110,020件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.