掲示板に戻る




cart.【PHP版】 投稿者: masa
はじめまして!ショピングカート【PHP版】を使わさせていただいてまして、各メニューページについて行き詰ってしまい、質問させてください。


理想のカスタムは、skin/各listページのパンくずナビが増えて長過ぎる状態を改行せずに表示させて、決めた長さから(...)という状態になり、そして実際に存在するラストページのみ番号表示している状態(※番号表示をクリックでリンクできる状態)にしたく色々な方法を試してみたのですが、限界を感じ、アドバイスがあれば是非よろしくお願いします。

No.281312019/2/22(Fri) 1:44:35 Res


Re: cart.【PHP版】 投稿者: えふ
今のところは一覧ページは
トップ > カテゴリ
のようなパンくずナビにしかならないはずでそんなに増えることはないのですが、
どのようになっているのでしょうか。HTMLソースの
パンくずナビの部分をコピーして見せてもらえますか。
知られたくない部分は伏字でいいです。
No.281322019/2/23(Sat) 8:09:58 Res


Re^2: cart.【PHP版】 投稿者: masa
> 今のところは一覧ページは
> トップ > カテゴリ
> のようなパンくずナビにしかならないはずでそんなに増えることはないのですが、
> どのようになっているのでしょうか。HTMLソースの
> パンくずナビの部分をコピーして見せてもらえますか。
> 知られたくない部分は伏字でいいです。


listページのパンくずナビと記入してしまいましたm(_ _)m

申し訳ありません。決められた商品数を超えたら新しくページが増えていくリストページ数の事です!


※例

<前のページ 1 2 3 4 ... 53 次のページ>

このような状態にできれば…

宜しくお願い致しますm(_ _)m
No.281332019/2/23(Sat) 9:47:16 Res


Re^3: cart.【PHP版】 投稿者: えふ
php/lib/cart/search.phpの
259行の

$x=1;
$page_next=0;
$pagetmp="";
$oya_d=$oya;
if($pagemax > 0 && $oya > 0){
     while($oya > 0){
          if($fo['page'] == $page_next){
               $pagetmp.="<b>$x</b> ";
          }
          else{
               if($mode == 'category'){
                    $u="$script?mode=search_category&page_id={$fo['page_id']}&page=$page_next";
               }
               else{
                    $u="$script?mode=search&page=$page_next&keyword=$key&category={$fo['category']}&order={$fo['order']}";
               }
               $pagetmp.="<a href=\"$u\">$x</a> ";
          }
          $x++;
          $page_next=$page_next+$pagemax;
          $oya=$oya-$pagemax;
     }
}

$start=$fo['page']+1;
$end=$fo['page']+$pagemax;
$end2=$end;
if($end2 > $num){
     $end2=$num;
}

$pagetmp=preg_replace("/ $/","",$pagetmp);

$page_next=$fo['page']+$pagemax;
$page_back=$fo['page']-$pagemax;

if($end >= $oya_d){
     if($fo['page'] > 0){
          if($mode == 'category'){
               $u="$script?mode=search_category&page_id={$fo['page_id']}&page=$page_back";
          }
          else{
               $u="$script?mode=search&page=$page_back&keyword=$key&category={$fo['category']}&order={$fo['order']}";
          }
          $nt="&nbsp;&nbsp;<a href=\"$u\">&lt;&lt;前ページ</a>";
     }
     else{
          $nt="";
     }
}
else{
     if($mode == 'category'){
          $u="$script?mode=search_category&page_id={$fo['page_id']}&page=$page_next";
     }
     else{
          $u="$script?mode=search&page=$page_next&keyword=$key&category={$fo['category']}&order={$fo['order']}";
     }
     $nt="&nbsp;&nbsp;<a href=\"$u\">&gt;&gt;次ページ</a>";
}

$pagetmp.=$nt;
$pagetmp="<b>$start</b> - <b>$end2 </b>番目を表示&nbsp;&nbsp;[ ページ: ".$pagetmp." ]";




$page=$fo['page'];
if($page == ""){
     $page='1';
}
$page = intval($page);
$allnum=count($all);
$cnt=floor($allnum/$pagemax);
$a=$allnum % $pagemax;
if($a){
     $cnt++;
}
$start=($page - 1) * $pagemax + 1;
$end=$start+$pagemax-1;
$pagetmp=Search::MakePage("",$page,$cnt);
if($mode == "category"){
     $mode_d="search_category";
}
else{
     $mode_d="search";
}
$foot=str_replace("#mode",$mode_d,$foot);
$foot=str_replace("#order",$fo['order'],$foot);
$foot=str_replace("#category",$fo['category'],$foot);
$foot=str_replace("#keyword",$fo['keyword'],$foot);

と変更

214行
function Show($mode,$o_db,$fo,$all,$skin,$p_name,$num,$lcateline,$DUMMY){
の上に

function MakePage($act,$page,$all){

$pagenum=5;
$pagenum_h=floor($pagenum/2);
$a=$pagenum % 2;
if($a == 0){
     $pagenum_h--;
}

$page_start=$page-$pagenum_h;

if($page_start < 1){
     $page_start=1;
}

$page_end=$page_start+$pagenum-1;

if($page_end > $all){
     $page_end=$all;
     $page_start=$page_end - $pagenum + 1;
     if($page_start < 1){
          $page_start=1;
     }
}



$ptmp=array();
for($i=1;$i<=$all;$i++){
     if($i < $page_start){
          continue;
     }
     else if($i > $page_end){
          break;
     }
     if($i == $page){
          array_push($ptmp,"<li class=\"current\">$i</li>");
     }
     else{
          array_push($ptmp,"<li><a href=\"javascript:void(0);\" onclick=\"Item('$i')\">$i</a></li>");
     }
}
if($page_start > 1){
     array_unshift($ptmp,"<li class=\"ten\">...</li>");
}
if($page_end < $all){
     array_push($ptmp,"<li class=\"ten\">...</li>");
}

$pagetmp=join('',$ptmp);

if($page > 1){
     $p=$page-1;
     $prev="<li><a href=\"javascript:void(0);\" onclick=\"Item('$p')\">&lt;</a></li>";
     $first="<li><a href=\"javascript:void(0);\" onclick=\"Item('1')\">≪</a></li>";

}
if($page < $all){
     $p=$page+1;
     $next="<li><a href=\"javascript:void(0);\" onclick=\"Item('$p')\">&gt;</a></li>";
     $last="<li><a href=\"javascript:void(0);\" onclick=\"Item('$all')\">≫</a></li>";
}

$pagetmp="<ul class=\"pagelink\">".$first.$prev.$pagetmp.$next.$last."</ul>";

return $pagetmp;
}

と追加

skin/pc_list.php
skin/pc_search.php
skin/smart_category.php
skin/smart_search.php
の一番下の
</body>
の上に
<form name="listfo" action="" method="POST" style="margin:0">
<input type="hidden" name="page" value="">
<input type="hidden" name="mode" value="#mode">
<input type="hidden" name="keyword" value="#keyword">
<input type="hidden" name="category" value="#keyword">
<input type="hidden" name="order" value="#order">
</form>
<script type="text/javascript">
function Item(p){
     document.listfo.page.value=p;
     document.listfo.submit();
}
</script>
と追加

css/cart.cssの
一番下などに

ul.pagelink{
     list-style-type: none;
     margin: 0;
}

ul.pagelink li{
     float: left;
}

ul.pagelink a, ul.pagelink li.current{
     display: block;
     width: 15px;
     text-align: center;
     text-decoration: none;
     margin-right: 2px;
}

ul.pagelink a:hover{
     background-color: #F0F0F0;
}

ul.pagelink:after{
     display: block;
     clear: both;
     content: '';
}

ul.pagelink li.current{
     font-weight:bold;
}

ul.pagelink{
     width: 180px;
     margin-left: auto;
     
}

と追加
以上です。
No.281342019/2/24(Sun) 18:45:07 Res


Re^4: cart.【PHP版】 投稿者: masa
有難うございます!早い対応本当にありがとうございますm(_ _)m

早速やってみたのですが、ページに表示されかたはできました!
ですが、問題が起こりまして、

※例 全そのページが45ページあったとしたら


1ページ目で

1 2 3 4 5 > ≫

と表示され、5ページ目をクリックしてみたところ、


≪ < 1 2 3 4 5


と、残りのページが表示されない状態です。



個人的にsearch.phpやcssのwidthを少し変更してみたりしたのですが、最初に送らさせていただいた理想の形になりませんでした…


理想 5を押したとき、

<< 5 6 7 8 ... 45 ≫

は、どうしたらいいか…

+アドバイスあればお忙しい中だと思いますが、よろしくお願いしますm(_ _)m

No.281372019/2/25(Mon) 14:55:58 Res


Re^5: cart.【PHP版】 投稿者: えふ
手持ちのものでテストしましたがちゃんとできていますが、
http://cgipal.com/search.zip
ここにテストしたsearch.phpを置いておきますのでお試しください。
全商品の数と1ページの商品数は何個でしょうか。
No.281402019/2/25(Mon) 18:16:38 Res


Re^6: cart.【PHP版】 投稿者: masa
お世話になっております。

先日はserch.zipありがとうございましたm(_ _)m

今現在、

全商品数:20103
1ページ表示数:32

です。あれから自分で何度かトライしてみているのですが、全然うまくいかず、5ページ目以降の、数字のみが順序よく変わって表示される状態がなかなかうまくいかず、
またえふ先生に相談させてください!自分の伝え方がへたくそで何度もすいませんm(_ _)m


<!--page-->の幅をwidthを375pxで指定と現在の存在するページのラストページの数字表示のみ表示する状態の例を再度具体的にお伝えしたいと思いますm(_ _)m



※例

■理想 (※3ページ目にユーザーがいるとして、4ページ目に移動したときの状態)

 →※3ページにいる時の表示


<<最初のページ <前のページ 3 4 5 6 7 ... 48 次のページ> 最後のページ>>



 →※4ページにいる時の表示


<<最初のページ <前のページ 4 5 6 7 8 ... 48 次のページ> 最後のページ>>





ご指導をお願いいたします。m(_ _)m



No.281472019/3/12(Tue) 11:35:34 Res