バグ報告 > フロント機能 > 商品一覧 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
rst |
投稿日時: 2009/7/27 4:01
対応状況: −−−
|
一人前 登録日: 2008/8/17 居住地: 投稿: 80 |
商品一覧 コミュのr18235を利用しています。
以前はproducts/list.phpのようにパラメータをつけない場合全商品が表示されたかと思うのですが『ご指定のカテゴリは存在しません。』とエラーになります。 デモサイトではパラメータなしで表示されるのが確認できました。 http://site.ec-cube.net/products/list.php いろいろ試したところproducts/list.php?category_id=1000のように明らかにないものに対しては同様のエラーを返すのですがproducts/list.php?category_id=0にすると全商品表示されました。 これは仕様変更でしょうか? ちなみにインストール直後のテストです。 |
seasoft |
投稿日時: 2009/7/27 6:01
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品一覧 仕様書があるわけではないので、バグか否かきわどい線ですね。しかし、以前は全商品が表示されたと記憶しています。全商品を表示させなくする意図の改訂があったとは考えにくいので、仕様変更というよりはバグだと思います。
|
AMUAMU |
投稿日時: 2009/7/27 9:18
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品一覧 チェンジセット 18142 商品一覧ページでcategory_id、商品詳細ページでproduct_idの正当性をチェック
にて正当性チェックを厳密化しすぎた為のようですね 正式版は許容していますし、「全商品」と表示する為の機能がある以上、バグと見て良いんじゃないですかね? よくソースを追って見ると、その後の処理であるSC_Helper_DB_Ex::sfGetCategoryIdの中で、厳密なチェックをしているように見えます。 それとほとんど同じ内容をローカル関数lfCheckCategoryId()でチェックしているような感じので、個人的には不必要な重複処理のルーチンに見えます・・・ 何か意図するところがあってチェック入れているのか、十分に追えてませんので、どなたか追加確認を願います
|
AMUAMU |
投稿日時: 2009/7/27 9:30
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品一覧 気になったので自分でさらに調べてみました
という、存在問い合わせを足したって感じのようですが、 その前の
が余計なのかも。 sfGetCategoryIdの関数仕様としては、有効でなければ空を返す仕様で、LC_Page_Products_List的には空であれば全商品として扱うルーチンが入っていたのですが、それを無視しちゃうチェック処理を足してしまった感じですね。 このlfCheckCategoryIdで、LC_Page_Products_Listで個別にチェックすべき内容なのか微妙。 sfGetCategoryId関数に追加チェック処理をマージするのが美しい感じもしますが、SC_Helper_DBの挙動を変えるのは影響範囲が大きいので確認すること多いので怖いな・・・
|
ramrun |
投稿日時: 2009/7/27 9:33
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 商品一覧 意図しているのか、していないのか、と言われたら
意図してやりましたので「(俺的)仕様」かな(汗)。 ・Re: さくらのレンタルサーバでのURL静的化 商品点数にもよりますが EC-CUBEで一番処理が重いと思われるのは商品一覧(list.php)かと。 デフォルトのEC-CUBEでは商品一覧に規格が表示され、購入までできるようになっており、ユーザーからは便利です。 ですが、構築事例のサイトを見てまわると一覧ページはリストのみで詳細ページからの購入にカスタマイズしているところが多く見受けられます。 また、カテゴリ別にSEO的な改良を加えているところもありますが、全商品リストに対しては無いでしょうし。 逆になぜ http://site.ec-cube.net/products/list.php で全商品リストを表示したいのでしょう? どこかにこのURLを掲載するのですか? それともユーザーに入力させるのですか? 検索エンジンのクロールも入ってきやすいでしょうから、サーバーに対する負荷を考慮して外したつもりです。 |
seasoft |
投稿日時: 2009/7/27 9:49
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品一覧 もしかして、(ramrun 様的仕様では)こっちがバグ?
> products/list.php?category_id=0にすると全商品表示されました。
|
AMUAMU |
投稿日時: 2009/7/27 9:51
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品一覧 意図的なんですね
どの環境をターゲットに捉えていくかにもよるので一概に言えない点かと思います 専用サーバとかサーバーのパワーが使える環境で構築することが多いので、うちではよくlist.php へのダイレクトなリンクを中に張ったりしますね(負荷を理解したうえで、デザイナにも利用を許可してる)。 このページをベースにデフォルト並び順を新着順とかにして、新着商品一覧としての役割を持たせたりして使います。 全商品一覧をOn/Offさせるぐらいが妥当な線かと
|
ramrun |
投稿日時: 2009/7/27 10:05
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 商品一覧 こちらにまとめて返事を書きます。
引用: もしかして、(ramrun 様的仕様では)こっちがバグ? バグではないです。 参照先にも書いてありますが一応キープ...です(汗)。 引用: うちではよくlist.php へのダイレクトなリンクを中に張ったりしますね EC-CUBEのデフォルトのリンクで、list.php(パラメータ無し)ってありましたっけ(もしくはリダイレクト)? ※確認漏れでしたら修正します デフォルトの状態で全商品リストを表示させる方法は、検索ブロックで何も指定せずに検索することだと思います。 または全商品リストを表示する「全商品」カテゴリを用意すべきかと。 個人的にはその代替としてcategory_id=0を残しておいたほうがいいかな? と思ったもので... |
rst |
投稿日時: 2009/7/27 11:55
対応状況: −−−
|
一人前 登録日: 2008/8/17 居住地: 投稿: 80 |
Re: 商品一覧 皆様お返事ありがとうございます。
URLを掲載する訳でもなく入力させる訳でもないのですが前回はlist.php(パラメータなし)で表示できていたので気になり質問させて頂きました。 パラメータなしの方がURLがすっきりして見えるのも理由の1つです。 確かにパラメータなしの時は表示に時間が掛かっていたのですが今回はその傾向も見られないようです。 詳しくないもので定かではないのですがパラメータを付加する事により表示速度が改善されるのであれば現状にて様子を見ようかと思います。 |
AMUAMU |
投稿日時: 2009/7/27 12:12
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品一覧 引用:
EC-CUBEのデフォルトのリンクで、list.php(パラメータ無し)ってありましたっけ(もしくはリダイレクト)? デフォルトで入っているテンプレートですと、パラメーター無しは無さそうです。 パラメータはありますが検索フォームなどで空文字設定でのリンクは多数あるので、ちょっと気にはなりましたが問題は無いと思います(気になった理由は蛇足気味なので後述)。 ここらへんは明確にEC-CUBEで仕様を定義されていないものをどうするかって所なので、厳密なチェックを入れるのは悪いことではないですよね。 ただ、不具合修正以外で動いていた物を動かなくするというのは既存利用している人のテンプレート資産に対して微妙かなと個人的には思ってます。 ※蛇足気味にちょっと細かい話 CGI/1.1(RFC 3875)の仕様上、Webサーバ側処理においてリクエスト外部変数の扱い定義では、""値はNULL値と「区別しない」となっているので、Webサーバ側が空クエリー(=で終わる変数)を受け取った場合に、変数のキーがあっても値にNULLを与えてくる可能性があるって事になります。もしNULL値が来ると!isset()に引っかかる事になります。 [RFC3875より引用] >4.1. Request Meta-Variables >[中略] >This specification does not distinguish between zero-length (NULL) > values and missing values. この理由から実際Windows環境とかでは値無しの場合に対象クエリーストリング自体を設定次第で削る事が出来た気がします。 (一部Windows環境はデフォルトで削る設定になっていて、大昔にはまった経験がありまして・・・(汗 実際、NULL値設定やクエリーストリング自体を削る扱いをしている環境は限られているし、元々EC-CUBEのサポート環境外になりそうな感じなので、考慮しなくても良いレベルですが、あくまでも外部変数へのissetは環境依存を起こす可能性があるという話で、蛇足として
|
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |