バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 新着商品に対して一定期間NEWマークを付ける方法

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2018/6/3 12:16
対応状況: −−−
新着商品に対して一定期間NEWマークを付ける方法
-- EC-CUBE3 --
-- macOS High Sierra --
-- 新着関連のプラグインは導入済み --

EC-CUBE3でショッピングサイトを開発しております。
新着商品に対して1週間、NEWマーク(もしくはテキスト)を表示させたいのですが、新着関連のプラグインを一通り導入してもNEWマークの表示と掲載期間を設定出来るようなものはありませんでした。

そこで自分で実装しようと思うのですが、考え方としてはPHPにて、

現在の経過ミリ秒 - 各商品の登録日の経過ミリ秒 <= 1周間のミリ秒(値:604800) の三項演算子
time() - Product.create_date <= 604800 ? 1(true) : 0(false)

これで進めようとしています。
しかし、プラグインの一部分なのか分かりませんが、create_dateという登録日を格納する変数を、どうやって経過ミリ秒に変換すれば良いのかが分かりません。
strtotime($this->create_date)
としてもエラーが出てしまいます。

var_dumpでcreate_dateを調べたところ、

object(DateTime)#1902(3){
["date"]=>string(26)"2018-06-01 14:51:29.000000"
["timezone_type"]=>int(3)
["timezone"]=>string(10)
"Asia/Tokyo"}

となりました。
ちなみに、商品の登録日はtwigファイル内で create_date|date_format という形で2018/06/01とサイトに表示されます。

恐れ入りますが、このcreate_dateという変数を経過ミリ秒に変換するにはどうすれば良いか、分かる方がいらっしゃいましたら教えて下さい。
もしくは別のやり方で同じ実装を行なえるのであれば、アドバイスを頂ければと思っています。よろしくお願いします。
matchbou
投稿日時: 2018/6/4 9:55
対応状況: −−−
一人前
登録日: 2018/3/19
居住地:
投稿: 130
Re: 新着商品に対して一定期間NEWマークを付ける方法
create_dateはDateTimeオブジェクト型なので、フォーマット変換すればstrtotimeが使用できます。
strtotime($Product->getCreateDate()->format('Y-m-d H:i:s.u'))


$this->create_dateということはentity内ですかね。そこで指定してしまうと影響範囲が大きいかと思いますので、コントローラー内の方が宜しいかと思います。


----------------
アイフォーコム株式会社
お問い合わせ URL:https://www.iforcom.jp/ec/
tel:045-412-3010
EC-CUBEの構築・カスタマイズは有償で承ります。ご相談下さい

ゲスト
投稿日時: 2018/6/4 12:42
対応状況: −−−
Re: 新着商品に対して一定期間NEWマークを付ける方法
仰られた通り、Product.phpにて、
$productTime = strtotime($this->getCreateDate()->format('Y-m-d H:i:s.u'));

これを用いた関数を作って導入したら無事表示する事が出来ました。echoで確認しても、ちゃんと経過秒数に変換出来ています。
助かりました、本当にありがとうございます。

ですが...、
{% if Product.create_date > date('-7days') %}

(現在から7日前の経過秒数よりも、create_dateが後であるかというif文)
twigファイルにて直接、上記のコードを追加しても、全く同じ結果?が得られました。
これだと、秒単位での1週間の期間で管理出来ないと思っていたのですが、これでも秒単位で管理出来てしまうのでしょうか?調べても分かりませんでした。
matchbou
投稿日時: 2018/6/4 13:28
対応状況: −−−
一人前
登録日: 2018/3/19
居住地:
投稿: 130
Re: 新着商品に対して一定期間NEWマークを付ける方法
最初のご質問内にある三項演算子をコントローラーで設定すれば
$productTime = time() - strtotime($Product->getCreateDate()->format('Y-m-d H:i:s.u')) <= 604800 ? 1(true) : 0(false);

$productTimeにフラグが入り、twig側ではフラグのif文で新着の表示非表示が出来るかと思うのですが、twig側だけで1週間の判断をしたいということでしょうか?


----------------
アイフォーコム株式会社
お問い合わせ URL:https://www.iforcom.jp/ec/
tel:045-412-3010
EC-CUBEの構築・カスタマイズは有償で承ります。ご相談下さい

ゲスト
投稿日時: 2018/6/4 14:20
対応状況: −−−
Re: 新着商品に対して一定期間NEWマークを付ける方法
確認を取ったところ、「New表示」が実装出来れば良いとだけ依頼されております。なので特別、twig側だけで1週間の判断をしたい訳ではありません。
ただ、twig側だけで1週間の判断が出来る実装も可能なんだなと思ってしまっただけです(汗)。

アドバイス頂いた通り、私自身もコントローラーで設定したいとは思っていたので、
$productTime = time() - strtotime($Product->getCreateDate()->format('Y-m-d H:i:s.u')) <= 604800 ? 1(true) : 0(false);

こちらの$productTimeの値をreturnで返す関数を作り、twigのif文で対応したいと思います。ありがとうございました。
matchbou
投稿日時: 2018/6/4 14:45
対応状況: −−−
一人前
登録日: 2018/3/19
居住地:
投稿: 130
Re: 新着商品に対して一定期間NEWマークを付ける方法
一応、ご参考までにtwig側でも秒単位での判断は可能です。

{% if date(Product.create_date) > date("-7 day") %}


----------------
アイフォーコム株式会社
お問い合わせ URL:https://www.iforcom.jp/ec/
tel:045-412-3010
EC-CUBEの構築・カスタマイズは有償で承ります。ご相談下さい

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1649
8
red
1570
9
mcontact
1297
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.