バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > フロント機能 > 商品一覧

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2009/7/27 13:13
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品一覧
> ただ、不具合修正以外で動いていた物を動かなくするというのは既存利用している人のテンプレート資産に対して微妙かなと個人的には思ってます。

EC-CUBEコミュニティ(eccube-comu) では、ある程度の切り捨ては仕方がないのかなとは思います。

しかし、暗黙的に行われるのは避けた方が良いのかなとは思います。が、そもそもパラメータ無しで動作していたのも暗黙的なものだと思いますし・・・

ドキュメントがあれば、そこでカバーできそうですが、現状でそこまで保守するのも厳しそう。拡張ページクラスで書き換えすることで、従来互換も保てると思いますが、そんな重隅まで、ドキュメントでカバーするのも難しいですよね・・・

現状では、このスレッドを読んで、仕様変更が行われたことを把握できた人はちょっと幸せといったところですかね。


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

ramrun
投稿日時: 2009/7/27 14:16
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 商品一覧
引用:
不具合修正以外で動いていた物を動かなくするというのは既存利用している人のテンプレート資産に対して微妙かな

ええと、もともと正式に用意されている機能を私が潰したみたいに聞こえるのですが...(汗)。 いや、そのとおりかもしれませんが...

リンク先をあらためて引用します。 現在は下記のとおりです。
引用:
一応、現状のpc用list.phpは実質CATEGORY_NOT_FOUNDにならないので、
 list.php → CATEGORY_NOT_FOUND(mobileでは全リスト)
 list.php?category_id= → 全リスト(検索で使っている)
 list.php?category_id=0 → 全リスト(一応キープ)
 list.php?category_id=1 → カテゴリ1の商品
 list.php?category_id=01 → CATEGORY_NOT_FOUND(0詰め無効)
 list.php?category_id=hoge → CATEGORY_NOT_FOUND
としました。


で、変更する前は
引用:
 list.php → 全リスト
 list.php?category_id= → 全リスト
 list.php?category_id=0 → エラー(正式版のバグ)
 list.php?category_id=1 → カテゴリ1の商品
 list.php?category_id=01 → カテゴリ1の商品
 list.php?category_id=hoge → 全リスト
 list.php?hoge=fuga → 全リスト

です。

ですので、チェックなどしていないに等しい... というか何でも許容しているのが現在の正式版となります。

AMUAMUさんが先に指摘している下記
引用:
その前の
引用:
if (!defined('MOBILE_SITE') && !isset($_REQUEST['category_id']))
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);

が余計なのかも。

が当該部分となりますので、削除すればlist.phpにパラメータ無しで全リストとなります。

ちなみに全商品リストに対してサーバーの負荷を心配するよりも「頻繁にアクセスされたい」とか「検索エンジンにクロールされたい」とか思う人が多いのでしたら、その部分を削除してよいかと思います。

追記:
一応、このチェンジセット 18142の目的は、複製コンテンツを極力排除するというのが目的です。
さくらのレンタルサーバでのURL静的化
AMUAMU
投稿日時: 2009/7/27 14:37
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 商品一覧
引用:
ramrunさんは書きました:
ええと、もともと正式に用意されている機能を私が潰したみたいに聞こえるのですが...(汗)。 いや、そのとおりかもしれませんが...


いや、そういうつもりでも(汗
個人的には、可能な限り適切な表示をする派なだけです(苦笑

ただ気になっているのは、ほとんど同じ処理を2回通しているという点と
「list.php?category_id= → 全リスト」は環境によっては「list.php?」と同値になる場合があるっていう点で、
これらはリファクタリングレベルに近い話なので、あくまでも今後の検討課題としてですね

※実際、全リストを一切出さず、あえて制限を掛けるカスタマイズとかも経験があるので一概に言えないですからね


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

ramrun
投稿日時: 2009/7/27 17:34
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 商品一覧
引用:
ほとんど同じ処理を2回通している

これはたしかにそのとおりです。
判定の処理をprocess()の最初においたので、そのあとの同じような処理は消しても問題ないはずです。
ただ、私的に判定処理を入れるにあたって「判定処理を追加したから既存の判定を除去する」というのが怖かったのでそのままにしてます。
チキンハートですから... リファクタリングする機会があれば... ですね。

引用:
「list.php?category_id= → 全リスト」は環境によっては「list.php?」と同値になる場合がある

RFC3875#Sec4.1は拝見しましたが、おっしゃることとは違うと思うのですが...

AMUAMUさんの解釈ですと
 list.php
 list.php?
 list.php?hoge
 list.php?hoge&fuga
は同じである(同じになってしまう環境もある)ということですよね?

私が思うにRFC3875は
環境変数のHTTP_REFERERとか、値がないのであればHTTP_REFERERは省略(設定しなくてもよい)というような意味合いで、
list.php?hoge&fugaは省略してlist.phpでもよいということではないと思うのですが...

wikipediaには
http://ja.wikipedia.org/wiki/Common_Gateway_Interface
引用:
QUERY_STRINGに文字'='が含まれない場合は、サーバはQUERY_STRINGの内容をコマンドライン引数としてCGIプログラムに渡す。これはHTMLのISINDEX要素を用いて送信された情報を扱うのに便利である。

とあります。

コマンドライン引数とは
引用:
http://...../cgi-bin/xxx.cgi?hoge+fuga

という形なので、これはたしかにまずいですね。

xrea(PHPのCGI版)で上記を確認したところ、
print_r($_REQUEST);

> Array ( [hoge_fuga] )

として受け取っていました。

検索ブロックで
<select name="category_id" class="box142">
<option label="すべての商品" value="">全ての商品</option>

は category_id= になるので = があり、上記にも該当しないと思われるのですが、いかがでしょうか。
AMUAMU
投稿日時: 2009/7/27 18:32
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 商品一覧
引用:
私が思うにRFC3875は
環境変数のHTTP_REFERERとか、値がないのであればHTTP_REFERERは省略(設定しなくてもよい)というような意味合いで、
list.php?hoge&fugaは省略してlist.phpでもよいということではないと思うのですが...


本来そういう意味だと思いますし、ramrunさんの解釈で間違っていないと思います。

ただ仕様文面からだけだと厳密な定義が無く違う解釈をする事も出来るっていう感じなだけで、ホント蛇足ですいません

蛇足ついでに例を・・・EC-CUBEの動作対象でも無い例ばっかりで申し訳ないですが・・・
もしかしたらPHPで補正しているかもしれないですが、一義的には外部変数はWebサーバソフトが設定してPHPに渡すって流れがあって、その上で以下の2パターンの実装をしたWebサーバの例が実際あったんです。

1.変数の空の値はhoge="" fuga=""が期待されるわけですが、hoge=(null値) fuga=(null値)としていた。確かAnHTTPD+特定OS環境で発生してたかと。PHPでさえないですが、namazuだかが誤動作していた記憶。
※これは仕様動作的には間違っていないし今後も他の環境で起きてもおかしくない仕様の解釈差だと思っています。lighttpdでも似たような話題をちょっと前に聞いた気がしますが詳細不明。

2.list.php?hoge&fugaを list.phpとだけ返す。特定OS環境の特定のIISバージョンで起きていた記憶。
※これは実装ミスと言われても仕方が無い内容ですけどね

もうどっちも3〜5年ぐらい前の話なので、今は今で違うでしょうし、あまり気にしなくて良い蛇足話で、お手間を取らせてすいませんです・・・オフトピ気味なので終息で


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

seasoft
投稿日時: 2009/7/27 19:22
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品一覧
引用:

 list.php → CATEGORY_NOT_FOUND(mobileでは全リスト)
 list.php?category_id= → 全リスト(検索で使っている)

これで動作が異なるのは、ちょっと気持ち悪いかも。

category_id をチェックするなら、全リストでも 0 をセットする方向が個人的には好みです。

もっと好みなのは、引用:

 list.php → 全リスト
 list.php?category_id= → 全リスト
ですが。


とりあえず、一意見として。


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

ramrun
投稿日時: 2009/7/27 21:07
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 商品一覧
AMUAMUさん

実例は参考になります。 3〜5年程度でしたらまだまだ現役環境かもしれませんね。
実際 list.php?category_id= が list.php になると検索ではCATEGORY_NOT_FOUNDになりますから、やはりよろしくないかな。

個人的(最終的)には
list.php → CATEGORY_NOT_FOUND
list.php?category_id= → CATEGORY_NOT_FOUND
list.php?category_id=0 → 全リスト
list.php?category_id=1 → カテゴリ1の商品
list.php?category_id=01 → CATEGORY_NOT_FOUND
list.php?category_id=hoge → CATEGORY_NOT_FOUND

という考えがあったのですが、
list.php → 全リスト
list.php?category_id= → 全リスト
list.php?category_id=0 → 全リスト
list.php?category_id=1 → カテゴリ1の商品
list.php?category_id=01 → CATEGORY_NOT_FOUND
list.php?category_id=hoge → CATEGORY_NOT_FOUND

は前述の
if (!defined('MOBILE_SITE') && !isset($_REQUEST['category_id']))
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND); 

を消すだけなのですぐに対応できます。

ただ、list.php(パラメータ無し)をOKとすると、
list.php?hoge=fuga

みたいなパターンも全リストOKになっちゃいますけど...

ちといまは帰宅して、いつもコミットに使ってるパソコンじゃないので変更は明日以降になります(汗)。
seasoft
投稿日時: 2009/7/28 9:29
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品一覧
引用:

ただ、list.php(パラメータ無し)をOKとすると、
list.php?hoge=fuga

みたいなパターンも全リストOKになっちゃいますけど...


hoge=fuga にどのような意味を持たせるのか(または意味を持っていないと想定するか)によっても変わりそうですが、初期状態としては OK な気はします。

list.php?product_code=xxx みたいに、商品コードのみでの検索をするようなカスタマイズも想定されるかなと思います。その場合に、name は不要なのに、category_id は常に必要となると、ちょっと面倒かなと思いました。


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

ramrun
投稿日時: 2009/7/28 12:05
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 商品一覧
list.php(パラメータ無し)で全リストにしました。
チェンジセット 18239

引用:
list.php?product_code=xxx みたいに、商品コードのみでの検索をするようなカスタマイズも想定されるかなと思います。その場合に、name は不要なのに、category_id は常に必要となると、ちょっと面倒かなと思いました。

検索ブロックのカテゴリ選択セレクトボックスをあえて削るようなことをしなければ勝手に付くので、面倒ということはないと思いますが...

他のも参考にチェックしてみましたが
magento → デフォルトで全リスト自体が無さそう(そういう項目を別途設ければ別?)
zencart/index.php?main_page=products_all
onedepo/?action=general_itemview_itemlist
magic3/index.php?sub=shop&task=product&act=search&keyword=

のような感じでした。
といっても他のはindexで振り分けしているので比較にならないか。

個人的には複製コンテンツの件と、
全リストって、そんなにアクセスされたいものなのだろうかというのが心にあるんですけどね(汗)。
seasoft
投稿日時: 2009/7/28 12:17
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品一覧
引用:

引用:
list.php?product_code=xxx みたいに、商品コードのみでの検索をするようなカスタマイズも想定されるかなと思います。その場合に、name は不要なのに、category_id は常に必要となると、ちょっと面倒かなと思いました。

検索ブロックのカテゴリ選択セレクトボックスをあえて削るようなことをしなければ勝手に付くので、面倒ということはないと思いますが...

検索ブロックの流用では無い場合の想定でした。
新たなブロックや直リンクなど。

引用:

個人的には複製コンテンツの件と、
全リストって、そんなにアクセスされたいものなのだろうかというのが心にあるんですけどね(汗)。

複製コンテンツに該当するかは把握できていませんが、
全リストは運用で明示的に使ったことは無いですね。

もしも、チェックを行うなら、category_id も name も指定されなかった場合に、「どれか入力して」といった旨の表示を行うというロジックが好みかも。(全リストが不要という想定での話しですが。)


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

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


 



ログイン


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

統計情報

総メンバー数は89,085名です
総投稿数は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.