バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > その他 > 「お気に入り登録機能」の重複表示に関して

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
flealog
投稿日時: 2009/4/13 0:19
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: 「お気に入り登録機能」の重複表示に関して
引用:

seasoftさんは書きました:
もしかして、PHP がセーフモードだったりします?

セーフモードにおいて当該エラーを回避する方法は想像がつくのですが、セーフモードだと、いずれ別の箇所で不具合が発生します。

CORESERVER.JP の場合は、モジュール版 PHP はセーフモード固定と過去スレにあったような。CGI なら非セーフモードで使えたと思います。(別の不具合が発生するケースがあるようですが・・・)

引用:

ramrunさんは書きました:
eccube-comu-r17954のインストールをxrea+でモジュール版とCGI版で試してみましたが問題ないようです。

インストール直後ということですから、インストール自体は終わっているのでしょう。
safe_modeだとtemplate_cにdefaultのパッケージを展開するところでエラーですから、そのあたりは乗り越えているものと思います。

状況としては
ログイン後エラーが画面が表示される
なんでしょうが、内容的には
インストール後TOPページに
じゃないでしょうか?



問題判明しました。
解凍ソフトがまずかったようです。

Lhaplusでの解凍でバグりました。。。
WinRARでは大丈夫でした


今更ですがeccube-comu-r17954はお気に入り重複確認
eccube-comu-r17971では修正確認しました


お役に立てずに申し訳ないです・・・orz


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

seasoft
投稿日時: 2009/4/13 0:51
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 「お気に入り登録機能」の重複表示に関して
> 2.4.0RC-1でも重複していたので、チェンジセット17955を適用させてみましたが、ビューが違うのでサムネイル画像が取得出来ていませんでしたので修正しました。
> vw_products_allclass_detailで使えそうなのがmail_imageだったので、それでサムネイルを生成していますが、大きい画像だと処理重そうです。

最近、サムネイル画像の生成周りを一通り査読したことがあるのですが、一貫して main_list_image を使用していました。別々の画像を使用している場合も想定されるので、ここだけ変えるのはマズイかも。

ビューに追加か、SELECT 句でサブクエリーが良さそうな気がします。


> また、NOIMAGE画像のパスが絶対パスになっていたので変更しました。

多分、現行のサムネイルの画像生成ロジック的には、NO_IMAGE_DIR で正しいです。

しかし、望ましくないロジックなので EC-CUBEコミュニティ(eccube-comu) では、NO_IMAGE_DIR を使用しないように改訂しました。
http://svn.ec-cube.net/open_trac/changeset/17967


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

tao_s
投稿日時: 2009/4/13 1:06
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 804
Re: 「お気に入り登録機能」の重複表示に関して
引用:
最近、サムネイル画像の生成周りを一通り査読したことがあるのですが、一貫して main_list_image を使用していました。別々の画像を使用している場合も想定されるので、ここだけ変えるのはマズイかも。

↑やっぱりメイン画像の様な大きな画像ではサムネイル作らない方が良いんでしょうか?

引用:
ビューに追加か、SELECT 句でサブクエリーが良さそうな気がします。

↑何かカスタマイズする場合でもvw_products_allclass_detailにmain_list_imageが欲しい事は多々あるのですが、お手軽なのでmain_imageを使ってしまいました。


引用:

多分、現行のサムネイルの画像生成ロジック的には、NO_IMAGE_DIR で正しいです。

しかし、望ましくないロジックなので EC-CUBEコミュニティ(eccube-comu) では、NO_IMAGE_DIR を使用しないように改訂しました。
http://svn.ec-cube.net/open_trac/changeset/17967

↑レンタルサーバーなので、ユーザー名とかがパスに含まれて嫌なんですよね。seasoftさんのsfNoImageMainListを使う方向でいきたいです。
seasoft
投稿日時: 2009/4/13 1:33
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 「お気に入り登録機能」の重複表示に関して
引用:

引用:
最近、サムネイル画像の生成周りを一通り査読したことがあるのですが、一貫して main_list_image を使用していました。別々の画像を使用している場合も想定されるので、ここだけ変えるのはマズイかも。

↑やっぱりメイン画像の様な大きな画像ではサムネイル作らない方が良いんでしょうか?

パフォーマンス面は、サーバのスペックにも依存するので、一概には言えませんが、一般論としてはそうですね。個人的には、商品一覧メイン画像を使用するにしても、キャッシュの仕組みがあっても良い気もしています。

まぁ、それはともかくとしても、商品一覧メイン画像と商品詳細メイン画像は、全く異なる素材写真の場合がヤバいかなと思いました。商品詳細メイン画像は大きめのサイズで見ることを前提としたトリミングで、縮小したらサッパリ分からないなども。


> レンタルサーバーなので、ユーザー名とかがパスに含まれて嫌なんですよね。

私も同じく感じました。即座にセキュリティホールになるとは思いませんが、あまり気分の良いものでは無いですよね。


> seasoftさんのsfNoImageMainListを使う方向でいきたいです。

ちなみに、LC_Page_ResizeImage.php の変更を行ってあれば、sfNoImageMainList を使わなくても、NO_IMAGE_DIR の画像(デフォルトは灰色一色)が送出されるようになります。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

tao_s
投稿日時: 2009/4/13 2:01
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 804
Re: 「お気に入り登録機能」の重複表示に関して
引用:
ちなみに、LC_Page_ResizeImage.php の変更を行ってあれば、sfNoImageMainList を使わなくても、NO_IMAGE_DIR の画像(デフォルトは灰色一色)が送出されるようになります。

↑知りませんでした、こっちの方が良いですね。

引用:
個人的には、商品一覧メイン画像を使用するにしても、キャッシュの仕組みがあっても良い気もしています。

↑これは今回私も思いました。キャッシュが無い(古い)場合だけ生成する方が良いですね。

一通りバグを確認して修正したら、ちょっとやってみます。
tao_s
投稿日時: 2009/4/13 23:52
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 804
Re: 「お気に入り登録機能」の重複表示に関して
自己レスです。

最終的にviewをいじるのは他で使っている所が多いので、サブクエリを使いました。

NO_IMAGE_DIRの所は"dummy"という文字列を入れる様にしました。
(LC_Page_ResizeImage.phpを変更しなくても2.4.0RC-1標準のLC_Page_ResizeImage.phpで灰色画像出ました)
seasoft
投稿日時: 2009/4/14 2:33
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 「お気に入り登録機能」の重複表示に関して
>(LC_Page_ResizeImage.phpを変更しなくても2.4.0RC-1標準のLC_Page_ResizeImage.phpで灰色画像出ました)

正式版でそれをやると、無駄な file_exists が発生する予感。(動作未確認)

キャッシュが効く処理だと思うので、さほど負荷にはならないとは思いますが。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

KAJI
投稿日時: 2009/4/14 19:42
対応状況: −−−
一人前
登録日: 2008/1/24
居住地:
投稿: 121
Re: 「お気に入り登録機能」の重複表示に関して
株式会社ロックオンの梶原です。

本件、確認中です。
ご報告、ならびに調査いただいておりましてありがとうございます。
色々なご意見等々、本当に頼もしいかぎりです。

さて、本題のお気に入り一覧の重複表示に関して少し検討してみました。
方向性としましては、商品一覧表示で使用しているビューであるvw_products_allclass を使うよう検討しています。

data/class/pages/mypage/LC_Page_Mypage_Favorite.php
107行目あたり
$order = "product_id DESC";


$order = "product_id DESC";
$group = "product_id";

を追加。($group はselectを発行する前ならどこでもいいと思います。)

119行目あたり
// 表示順序
$objQuery->setorder($order);


// 表示順序
$objQuery->setorder($order);
//重複行の削除
$objQuery->setgroupby($group);

を追加。
通常、vw_products_allclassを使用して、それをグルーピングをして使用している場合が多いですので、それに習いましてvw_products_allclassに対してグループ化を行い、重複表示を防ぐというやり方です。


あと、お気に入りの商品数をカウントしている部分がありますが、こちらも重複分が加算されてカウントされていますので、修正が必要です。
こちらは、dtb_customer_favorite_productsのカウントをそのままとった方が負荷的にも削減されると思いましたので、以下でどうかと思います。

data/class/pages/mypage/LC_Page_Mypage_Favorite.php
109行目あたり
$linemax = $objQuery->count($from, $where, $arrval);


//お気に入りの数を取得
$cnt_from = "dtb_customer_favorite_products";
$cnt_where = "customer_id = ?";
$cnt_arrval = array($objCustomer->getvalue('customer_id'));

$linemax = $objQuery->count($cnt_from, $cnt_where, $cnt_arrval);

に変更。

上記変更で、概ね正常に動作するんではないかと思います。
コミッター版がそのまま反映できればよかったのですが、少し大きな改修になりそうでしたので、今回は上記でいかがでしょうか?

ご迷惑をおかけしており恐縮ですが、よろしければご意見いただきたく。
flealog
投稿日時: 2009/4/14 22:38
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: 「お気に入り登録機能」の重複表示に関して
引用:

119行目あたり
// 表示順序
$objQuery->setorder($order);


// 表示順序
$objQuery->setorder($order);
//重複行の削除
$objQuery->setgroupby($group);

を追加。


上記修正でシステムエラーが起きました。

引用:


SELECT allcls.* FROM dtb_customer_favorite_products AS dcfp LEFT JOIN vw_products_allclass AS allcls USING(product_id) WHERE allcls.del_flg = 0 AND allcls.status = 1 AND dcfp.customer_id = ? GROUP BY product_id ORDER BY product_id DESC LIMIT 10 OFFSET 0
DB Error: unknown error

SELECT allcls.* FROM dtb_customer_favorite_products AS dcfp LEFT JOIN vw_products_allclass AS allcls USING(product_id) WHERE allcls.del_flg = 0 AND allcls.status = 1 AND dcfp.customer_id = '1' GROUP BY product_id ORDER BY product_id DESC LIMIT 10 OFFSET 0 [nativecode=ERROR: column "allcls.product_id" must appear in the GROUP BY clause or be used in an aggregate function]


エラー報告ばかりですみません。。。


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

tao_s
投稿日時: 2009/4/15 2:35
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 804
Re: 「お気に入り登録機能」の重複表示に関して
確かpostgresSQLだと、group byの所でselectしてくるカラム全部を書かないといけなかったと思います。

viewをgroupってあまりやった事ないのですが、一般的なやり方なんでしょうか?

在庫とか気にしないでdtb_customer_favorite_products inner join dtb_productsしたくなってきました。

引用:
正式版でそれをやると、無駄な file_exists が発生する予感。(動作未確認)

僕も実装しながら思ってたんですが、正式版ではmain_list_imageは必須なので発生しないかな?と思ってやっちゃいました、基本あまりソースを変えたくないので・・・


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

« 1 2 (3) 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は96,050名です
総投稿数は111,651件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
yuh
1893
7
h_tanaka
1852
8
red
1574
9
mcontact
1536
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.