LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Forum

ページナビのカスタマイズ(サイト内の各モジュールで共用)

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2015/9/20 0:28 | 最終変更
kamezou  1st Class 居住地: 2013~  投稿数: 47
xoops標準(?)のページナビを、d3diary のような boxNavi に変更し、サイト全体で同じデザインが使用できるように考えてみました。
変更はすべてテンプレートの編集で行います。(HTML系のデザイン変更で、phpハックは やりたくないので…)

ALTSYS のカスタムテンプレートに _custom_boxNavi.html の名前で登録します。( ※ 9/20 17:30 修正しました。5行目)
<{strip}>
<{if !$limit}><{assign var=limit value=13}><{/if}>
<div class="boxNavi" style="text-align:center;">
<{if $total}>
	<{if $pos+$perpage < $total && $perpage}><{assign var=end value=$pos+$perpage}><{else}><{assign var=end value=$total}><{/if}>
	全&nbsp;<strong><{$total}></strong>&nbsp;件のうち&nbsp;<strong><{$pos+1}></strong>&nbsp;
	<{if $pos+1 <> $end}>
		-&nbsp;<strong><{$end}></strong>&nbsp;
	<{/if}>
	件目を表示しています。
<{/if}>
<br />
<{if $total > $perpage && $perpage}>
	<{assign var=end value=$total/$perpage}>
	<{assign var=ends value=$end|ceil}>
	<{assign var=poss value=$pos/$perpage+1}>
	<{assign var=half value=$limit/2}>
	<{assign var=halflmt value=$half|intval}>
	<{assign var=halflmt2 value=$half|ceil}>
	<{if $poss > $halflmt2}>
		<{if $poss <= $ends-$halflmt}>
			<{assign var=chk1 value=$poss-$halflmt2+2}>
		<{else}>
			<{assign var=chk1 value=$ends-$limit+2}>
		<{/if}>
	<{else}>
		<{assign var=chk1 value=0}>
	<{/if}>
	<{if $poss < $ends-$halflmt}>
		<{if $poss >= $halflmt2}>
			<{assign var=chk2 value=$poss+$halflmt-1}>
		<{else}>
			<{assign var=chk2 value=$limit-1}>
		<{/if}>
	<{else}>
		<{assign var=chk2 value=999}>
	<{/if}>
	<ul class="itemBody">
		<{if $pos}><{*-------------前へ(リンク)-------------*}>
			<li class="link"><span><a href="<{$link|replace:"%s":$pos-$perpage}>" title="go to page prev">prev</a></span></li>
		<{else}><{*-------------前へ(リンクなし)-------------*}>
			<li class="txt"><span>prev</span></li>
		<{/if}>
		<{section name=count loop=$ends}>
			<{assign var=i value=$smarty.section.count.iteration}>
			<{if $i == $poss}><{*-------------表示中のページ位置-------------*}>
				<li class="this"><span><{$i}></span></li>
			<{elseif ($i >= 2 && $i <= $chk1) || ($i <= $ends-1 && $i >= $chk2)}>
				<{if $i == 2 || $i == $ends-1}><{*-------------表示しきれない時-------------*}>
					<li class="txt"><span>...</span></li>
				<{/if}>
			<{else}><{*-------------通常のページナビ-------------*}>
				<li class="link"><span><a href="<{$link|replace:"%s":$perpage*$i-$perpage}>" title="go to page <{$i}>"><{$i}></a></span></li>
			<{/if}>
		<{/section}>
		<{if $pos+$perpage < $total}><{*-------------次へ(リンク)-------------*}>
			<li class="link"><span><a href="<{$link|replace:"%s":$pos+$perpage}>" title="go to page next">next</a></span></li>
		<{else}><{*-------------次へ(リンクなし)-------------*}>
			<li class="txt"><span>next</span></li>
		<{/if}>
	</ul>
<{/if}>
</div>
<{/strip}>

次の5つの変数をセットして、各テンプレートから呼び出します。
 total= トータル件数
 perpage= ページ毎の表示件数
 pos= 現在位置
 link= リンク文字列:%s の部分にリンク先のposが入ります。
[ limit= 横幅の数の上限:省略時 13 ]

これが、各モジュールでアサインされていない事が多いので、かなり面倒ですが、strstr , replace などの文字列処理や xugj_block を使用する等して、4つの値をひねり出してください。

d3forum_main_listposts.html の記述例
<{if $pagenav}>
	<{foreach from=$pagenav item=nav_}>
		<{if !$bn_order}>
			<{if $nav_.url}>
				<{assign var=bn_order value=$nav_.url|strstr:"?"|strstr:"&amp;pos=":true}>
			<{/if}>
		<{/if}>
	<{/foreach}>
	<{assign var=bn_link value="`$xoops_url`/modules/d3forum/index.php`$bn_order`&amp;pos=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$post_hits pos=$pos perpage=$mod_config.viewallbreak link=$bn_link}>

d3forum_main_listtopics.html の記述例
<{assign var=bn_perpage value=$mod_config.topics_per_page}>
<{if $pagenav}>
	<{assign var=bn_this value=$pagenav|strstr:"<b>("|strstr:")</b>":true|replace:"<b>(":""}>
	<{assign var=bn_pos value=$bn_this*$bn_perpage-$bn_perpage}>
	<{assign var=bn_order value=$pagenav|strstr:"?"|strstr:"&amp;pos=":true}>
	<{assign var=bn_link value="`$xoops_url`/modules/d3forum/index.php`$bn_order`&amp;pos=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$topic_hits pos=$bn_pos perpage=$bn_perpage link=$bn_link}>

d3diary_diarylist.html , d3diary_index.html の記述例(言語定数を変更している場合は注意)
<{assign var=bn_total value=$lang_datanum|strstr:"</strong>":true|replace:$smarty.const._MD_DATANUM1:""}>
<{if $yd_pagenavi}>
	<{foreach from=$yd_pagenavi item=nav_}>
		<{if !$bn_order}>
			<{if $nav_.url}>
				<{assign var=bn_order value=$nav_.url|strstr:"?"|strstr:"&amp;pofst=":true}>
			<{/if}>
		<{/if}>
	<{/foreach}>
	<{assign var=bn_link value="`$xoops_url`/modules/d3diary/index.php`$bn_order`&amp;pofst=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$bn_total pos=$yd_offset perpage=$mod_config.block_diarynum link=$bn_link}>

myalbum_index.html の記述例(言語定数を変更している場合は注意)
<{assign var=bn_total value=$photonavinfo|strstr:"(全"|replace:"(全 ":""|replace:" 枚)":""}>
<{if $photonav}>
	<{assign var=bn_this value=$photonav|strstr:"<b>("|strstr:")</b>":true|replace:"<b>(":""}>
	<{assign var=bn_perpage value=$photonav|strstr:"num="|strstr:"&":true|replace:"num=":""}>
	<{assign var=bn_order value=$photonav|strstr:"?"|strstr:"&amp;pos=":true}>
	<{assign var=bn_link value="`$xoops_url`/modules/myalbum/index.php`$bn_order`&amp;pos=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$bn_total pos=$bn_this*$bn_perpage-$bn_perpage perpage=$bn_perpage link=$bn_link}>

bulletin_index.html の記述例(トータル件数をxugj_blockで取得。表示件数を指定したときの動作がおかしかったのでリンク文字列にstorynum=を追加。)
<{if !$storytopic}>
	<{assign var=storytopic value=0}>
<{/if}>
<{xugj_block file="modules/bulletin/blocks/blocks.php" func="b_bulletin_new_show" opt="bulletin,published DESC,999999,255,0,`$storytopic`" item="block"}>
<{assign var=bn_total value=$block.stories|@count}>
<{if $smarty.get.storynum}>
	<{assign var=bn_perpage value=$smarty.get.storynum|intval}>
<{else}>
	<{assign var=bn_perpage value=$mod_config.storyhome}>
<{/if}>
<{if $pagenav}>
	<{assign var=bn_this value=$pagenav|strstr:"<b>("|strstr:")</b>":true|replace:"<b>(":""}>
	<{assign var=bn_pos value=$bn_this*$bn_perpage-$bn_perpage}>
	<{assign var=bn_link value="`$xoops_url`/modules/bulletin/index.php?storytopic=`$storytopic`&amp;storynum=`$bn_perpage`&amp;start=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$bn_total pos=$bn_pos perpage=$bn_perpage link=$bn_link}>

xoopsmembers_index.html の記述例
<{assign var=bn_link value="`$xoops_url`/modules/xoopsmembers/index.php?perpage=`$pageNavigator->mPerpage`&amp;start=%s"}>
<{include file="db:_custom_boxNavi.html" total=$pageNavigator->mTotal pos=$pageNavigator->mStart perpage=$pageNavigator->mPerpage link=$bn_link}>


css の設定(引用)
/*  Page Navigation */

div.boxNavi .itemBody {
	margin: 1px 2px 5px 2px;
	text-align:center;
	list-style-type: none;
	background-color: transparent;
}
div.boxNavi .itemBody li{
	display: inline;
	margin: 1px 2px 1px 2px;
	padding: 5px 0px 5px 0px;
	font-weight: bold;
	text-align:center;
	border-top: 1px solid lightgrey;
	border-bottom: 1px solid lightgrey;
	border-left: 1px solid lightgrey;
	border-right: 1px solid lightgrey;
}

div.boxNavi .itemBody li.txt span,
div.boxNavi .itemBody li.this span,
div.boxNavi .itemBody li a {
	margin: 0;
	padding: 5px 7px 5px 10px;
	text-decoration: none;
}
div.boxNavi .itemBody li.this span {
	background-color: #CCCCCC;
}
xoopsX の場合は /root/common/css/d3forum_common.css のファイル名で入っています。
d3diary は、テンプレート:d3diary_main_style.css に 同内容の css記述があります。
他は確認していませんが、適宜設定してください。テーマにて設定するのがベストだと思います。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015/9/20 14:15
kamezou  1st Class 居住地: 2013~  投稿数: 47
d3forum_comment_listposts_flat.html の記述例 です。
(perpage の動作解析に手間取ってしまった。)
<{if $pagenav}>
	<{if $mod_config.viewallbreak >= $plugin_params.posts_num}>
		<{assign var=bn_perpage value=$mod_config.viewallbreak}>
	<{else}>
		<{assign var=bn_perpage value=$plugin_params.posts_num}>
	<{/if}>
	<{foreach from=$pagenav item=nav_}>
		<{if !$bn_order}>
			<{if $nav_.url}>
				<{assign var=bn_order value=$nav_.url|strstr:"modules/"|strstr:"&amp;d3f_pos=":true}>
			<{/if}>
		<{/if}>
	<{/foreach}>
	<{assign var=bn_link value="`$xoops_url`/`$bn_order`&amp;d3f_pos=%s#comment"}>
	<{include file="db:_custom_boxNavi.html" total=$post_hits pos=$pos perpage=$bn_perpage link=$bn_link}>
<{/if}>
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2016/2/19 23:48
kamezou  1st Class 居住地: 2013~  投稿数: 47
bulletin_index.html の記述例、xugj_block を間違えていました。
4行目と5行目を修正しました。
<{if !$storytopic}>
	<{assign var=storytopic value=0}>
<{/if}>
<{xugj_block file="modules/bulletin/blocks/blocks.php" func="b_bulletin_category_new_show" opt="bulletin,published DESC,999999,255,`$storytopic`,0," item="block"}>
<{assign var=bn_total value=$block.topics.0.stories|@count}>
<{if $smarty.get.storynum}>
	<{assign var=bn_perpage value=$smarty.get.storynum|intval}>
<{else}>
	<{assign var=bn_perpage value=$mod_config.storyhome}>
<{/if}>
<{if $pagenav}>
	<{assign var=bn_this value=$pagenav|strstr:"<b>("|strstr:")</b>":true|replace:"<b>(":""}>
	<{assign var=bn_pos value=$bn_this*$bn_perpage-$bn_perpage}>
	<{assign var=bn_link value="`$xoops_url`/modules/bulletin/index.php?storytopic=`$storytopic`&amp;storynum=`$bn_perpage`&amp;start=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$bn_total pos=$bn_pos perpage=$bn_perpage link=$bn_link}>
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/4/3 21:53
kamezou  1st Class 居住地: 2013~  投稿数: 47
bulletin_index.html の記述例、さらに修正です。トータル件数を取得したいだけなのに…

<{if !$storytopic}>
	<{assign var=storytopic value=0}>
	<{xugj_block file="modules/bulletin/blocks/blocks.php" func="b_bulletin_new_show" opt="bulletin,published DESC,999999,20,0,0" item="block"}>
	<{assign var=bn_total value=$block.stories|@count}>
<{else}>
	<{xugj_block file="modules/bulletin/blocks/blocks.php" func="b_bulletin_category_new_show" opt="bulletin,published DESC,999999,20,`$storytopic`,0," item="block"}>
	<{assign var=bn_total value=$block.topics.0.stories|@count}>
<{/if}>
<{if $smarty.get.storynum}>
	<{assign var=bn_perpage value=$smarty.get.storynum|intval}>
<{else}>
	<{assign var=bn_perpage value=$mod_config.storyhome}>
<{/if}>
<{if $pagenav}>
	<{assign var=bn_this value=$pagenav|strstr:"<b>("|strstr:")</b>":true|replace:"<b>(":""}>
	<{assign var=bn_pos value=$bn_this*$bn_perpage-$bn_perpage}>
	<{assign var=bn_link value="`$xoops_url`/modules/bulletin/index.php?storytopic=`$storytopic`&amp;storynum=`$bn_perpage`&amp;start=%s"}>
<{/if}>
<{include file="db:_custom_boxNavi.html" total=$bn_total pos=$bn_pos perpage=$bn_perpage link=$bn_link}>
投票数:0 平均点:0.00
  条件検索へ

Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities