バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ページ送り機能について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
rst
投稿日時: 2009/8/1 1:22
対応状況: −−−
一人前
登録日: 2008/8/17
居住地:
投稿: 80
ページ送り機能について
コミュニティ18242を利用しています。
ページ送り機能について質問です。全商品を表示させページ送りする分には問題ないのですが商品検索やメーカーごとの表示の場合うまく送り機能が動作しません。

全商品の場合
1ページ目:list.php
2ページ目以降:list.php?category_id=0&pageno=2
※全商品の場合category_idもいらない気もしなくはないのですが^^;

商品検索の場合
1ページ目:list.php?mode=search&category_id=&maker_id=&name=a&search.x=21&search.y=13
2ページ目以降:list.php?category_id=0&pageno=2

メーカーごとの場合
1ページ目:list.php?maker_id=1
2ページ目以降:list.php?category_id=0&pageno=2

商品検索とメーカーごとの場合ページ送りをすると必要なデータが失われるため全商品の結果と同様になってしまいます。

カテゴリーごとのページ送りはうまく動作しております。

調べてみたところ/data/class/pages/products/LC_Page_Products_List.phpでパラメータを設定してるようなのですがどうやっていいものかわからずつまずいております。

解決案などございましたら教えてください。
seasoft
投稿日時: 2009/8/1 5:57
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ページ送り機能について
> ※全商品の場合category_idもいらない気もしなくはないのですが^^;

その考え方は、個人的には賛成です。
下記スレッドを読むと経緯が把握できるかもしれません。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4364&forum=8


本題部分につきましては、調べてみようと思いますので、少々お時間をください。


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

seasoft
投稿日時: 2009/8/1 7:29
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ページ送り機能について
軽く調べてみましたが、セッション変数なども絡んで、結構ヤバイ状態ですね。
複数タブブラウジングなどで、支障が出そうな状態ですね。

小手先では直せそうにありませんので、真面目に対処方法を検討してみたいと思います。
多分、他のページと同じように、フレームワークとして用意されている JavaScript を使ったナビに変更すれば対処できると思います。ただし、SEO面で不利になりそうなのが、若干気がかりですが。(なんとか、両立させるかなぁ・・・)


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

ramrun
投稿日時: 2009/8/1 9:19
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ページ送り機能について
これは失礼しました(汗)。
ページ送りをPOSTからGETに変更したときに、検索ブロックからの確認を一切していませんでした...

とりあえず変更したタイミングは
チェンジセット 18187
http://svn.ec-cube.net/open_trac/changeset/18187#file27

目的は
チケット #261
http://svn.ec-cube.net/open_trac/ticket/261

いま↓になっている部分を
// ページ送りの取得
$this->objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $disp_num, "fnNaviPage", NAVI_PMAX);
$strnavi = $this->objNavi->strnavi;
$strnavi = preg_replace('/list\.php.*?\'([0-9]+)\'.*?\"/', 'list.php?category_id=' . $category_id . '&pageno=$1"', $strnavi);

↓にしてみてください。
チェンジセット 18250

ちなみに、もともとのページ送りは
<a href="/products/list.php" onclick="fnNaviPage('2'); return false;">2</a>

でPOSTになっていて、HTTPキャッシュがnocacheだとIE系のブラウザの戻るでページの有効期限切れという問題があったため、ついでにGETに変えた... という感じです。

追記:
また、安易に全ページでHTTPキャッシュをnone(有効)とすると、transactionidを利用する遷移で不正なページ遷移...となる場合がでてきます。
seasoft
投稿日時: 2009/8/1 10:46
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ページ送り機能について
引用:

ちなみに、もともとのページ送りは
<a href="/products/list.php" onclick="fnNaviPage('2'); return false;">2</a>

でPOSTになっていて、HTTPキャッシュがnocacheだとIE系のブラウザの戻るでページの有効期限切れという問題があったため、ついでにGETに変えた... という感じです。


おー 危なかった。
POST にして、エンバグさせてしまうところだった。

こうなったら、全パラメータを GET へ持って行きますかね。で、URL 生成は <form> と JavaScript に依存させて、HTML 上はページ遷移をしているだけのようなふりをすると。そうすれば、操作性もSEOも確保できそうな。URL は長くなりますが、あまり影響はないでしょう。静的URLに偽装する人は若干苦労するかもしれませんが。


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

rst
投稿日時: 2009/8/1 11:07
対応状況: −−−
一人前
登録日: 2008/8/17
居住地:
投稿: 80
Re: ページ送り機能について
お返事ありがとうございます。
変更したところ思うような動作ができました^^おかげ様ですっきりです!
ramrun
投稿日時: 2009/8/1 18:19
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ページ送り機能について
seasoftさん

引用:
こうなったら、全パラメータを GET へ持って行きますかね。で、URL 生成は <form> と JavaScript に依存させて、HTML 上はページ遷移をしているだけのようなふりをすると。

統一されていればコードを読むのも楽ですね。
ただ個人的にはカテゴリブロックからクロールで辿ってくるのは歓迎ですけど、検索ブロックからのURLとか、価格順とか新着順とか、そういうパラメータはクロールされづらいほうがいいような気もします。

最初はページ送り生成の処理自体をGETに変えてしまおうと思ったんですが、管理側でも共通の処理を使ってて。
管理側の商品検索とかは条件が多すぎて、こちらはPOSTのまま変えられないなぁと妥協しました(汗)。
seasoft
投稿日時: 2009/8/2 21:18
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ページ送り機能について
引用:

統一されていればコードを読むのも楽ですね。
ただ個人的にはカテゴリブロックからクロールで辿ってくるのは歓迎ですけど、検索ブロックからのURLとか、価格順とか新着順とか、そういうパラメータはクロールされづらいほうがいいような気もします。

最初はページ送り生成の処理自体をGETに変えてしまおうと思ったんですが、管理側でも共通の処理を使ってて。
管理側の商品検索とかは条件が多すぎて、こちらはPOSTのまま変えられないなぁと妥協しました(汗)。


さすがに、EC-CUBE 全てのページ送り生成の処理を書き直すだけの体力はありませんが、商品一覧については、何とか GET に統一しようかと思います。

href はページ指定のみ、onclick でフォーム送信(GETメソッド)とすることで、検索エンジンからは順序は default となる方向で実装を試みています。


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

ramrun
投稿日時: 2009/8/3 9:39
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ページ送り機能について
チェンジセット 18250で修正しました。

また先に連絡した修正はテンプレ側でもエスケープされていなかったので、XSS脆弱となります。
このスレをみて修正した方は、チェンジセット 18250を適用しなおしてください(汗)。

追記:
seasoftさんへ

スレの件と関係ないのですが、xamppliteでインストール確認したところ
 Parse error: parse error in C:\xampplite\htdocs\eccube\data\class\SC_CheckError.php on line 34
がでておりました。
チェンジセット 18248の影響と思われます。 確認お願いします。

追記2:18249 に不具合あり 18250 で修正しました(汗)
seasoft
投稿日時: 2009/8/4 12:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ページ送り機能について
引用:

追記:
seasoftさんへ

スレの件と関係ないのですが、xamppliteでインストール確認したところ
 Parse error: parse error in C:\xampplite\htdocs\eccube\data\class\SC_CheckError.php on line 34
がでておりました。
チェンジセット 18248の影響と思われます。 確認お願いします。

別の方からもメールで報告がありまして、昨日 r18251 にて差し戻しさせていただきました。


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

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