如何为Discuz门户DIY页面添加翻页功能?

avatar
作者
猴君
阅读量:0
实现Discuz门户DIY翻页功能,通常需要通过修改模板文件或使用插件。具体步骤包括:,,1. 找到并编辑相应的模板文件,如forum_list.htm。,2. 在适当的位置插入分页代码,, ``html,{pagination}, ``,3. 保存文件并更新缓存。,,如果不熟悉代码操作,可以考虑安装现成的翻页插件,通过后台设置启用。

Discuz门户DIY实现翻页功能的方法

如何为Discuz门户DIY页面添加翻页功能?

在Discuz!论坛系统中,DIY(Do It Yourself)功能允许用户自定义页面布局和内容,默认情况下,Discuz并不提供帖子模块的分页功能,为了实现这一功能,我们需要进行一些自定义操作,以下将详细介绍如何在Discuz门户中通过DIY实现翻页功能。

分页方法

1、新建入口文件:在网站根目录新建一个名为code.php的文件。

 <?php define('APPTYPEID', 2); define('CURSCRIPT', 'code'); require './source/class/class_core.php'; require DISCUZ_ROOT.'./source/function/function_code.php'; $discuz = C::app(); $discuz->reject_robot(); $discuz->init(); $modarray = array('1', '2','3','4','5','6','7','8','9','10'); if(empty($_GET['mod']) || !in_array($_GET['mod'],$modarray)){ 	$_GET['mod'] = 'index'; } define('DIY_MOD', $_GET['mod']); define('DIY_BID', isset($_GET['bid'])?$_GET['bid']:495); define('DIY_SIZE', isset($_GET['size'])?$_GET['size']:10); runhooks(); ?>

2、创建控制器文件:在source/module目录下创建一个名为code的文件夹,并在其中新建code_index.php文件。

 <?php if(!defined('IN_DISCUZ')) { 	exit('Access Denied'); } list($navtitle, $metadescription, $metakeywords) = get_seosetting('portal'); if(!$navtitle) { 	$navtitle = $_G['setting']['navs'][1]['navname']; 	$nobbname = false; } else { 	$nobbname = true; } if(!$metakeywords) { 	$metakeywords = $_G['setting']['navs'][1]['navname']; } if(!$metadescription) { 	$metadescription = $_G['setting']['navs'][1]['navname']; } require_once libfile('function/discuzcode'); require_once libfile('function/home'); $mod=DIY_MOD; $bid=DIY_BID; $perpage = DIY_SIZE; $count = C::t('code')->fetch_count_sql($bid); if($count>0){ 	$totalPage =  (int)(($count + $perpage -1) / $perpage);  	$curpage = isset($_GET['page'])?$_GET['page']:1; 	if($curpage<1) $curpage = 1; 	if($totalPage<(int)$curpage) $curpage = $totalPage; 	$start = ($curpage-1)*$perpage; 	ckstart($start, $perpage);   	$pageArray=array(); 	for ($i=1; $i<=$totalPage; $i++){ 		array_push($pageArray,$i); 	} } $mpurl = 'code.php?mod='.$mod.'&bid='.$bid;  $autogoto = FALSE; $simple = FALSE; $multipage = multi($count, $perpage, $curpage, $mpurl, $maxpages , $p); ?>

3、修改block_article.php文件:找到\source\class\block\portal\block_article.php文件,将getdata函数修改为接收bid参数。

如何为Discuz门户DIY页面添加翻页功能?

 function getdata($style, $parameter, $bid) {     $query = DB::query("SELECT at.*, ac.viewnum, ac.commentnum FROM ".DB::table('portal_article_title')." at LEFT JOIN ".DB::table('portal_article_count')." ac ON at.aid=ac.aid WHERE $wheresql$keyword ORDER BY $orderby LIMIT $startrow, $items");     if($bid==53){         $page = $_REQUEST['page'] ? $_REQUEST['page'] : 1;         $startrow = ($page-1)*$items;     } }

4、修改function_block.php文件:找到\source\function\function_block.php文件,添加缓存更新逻辑。

 if($forceupdate) {     block_updatecache($bid, true);     $block = $_G['block'][$bid]; } if ($bid == 53) {     $forceupdate = 1; } $return = obj->getdata($thestyle, $block['param'], $bid);

5、修改function_core.php文件:找到\source\function\function_core.php文件,添加分页样式和逻辑。

 function block_display($bid) {     if($bid==53){         $page = $_REQUEST['page'] ? $_REQUEST['page'] : 1;         $html = "<style>"                 . ".page{padding:10px; float:left;}"                 . ".page li{float:left; line-height:20px; padding:8px; font-size:16px;}"                 . ".page li .on{color:#f57500; font-weight:800;}"                 . "</style>";         $html .= '<div class="page"><ul>';         if($page<11){             for($i=1;$i<21;$i++){                 if($page == $i){                     $html.='<li><a href="/?page='.$i.'" class="on">'.$i.'</a></li>';                 }else{                     $html.='<li><a href="/?page='.$i.'">'.$i.'</a></li>';                 }             }         }else{             for($i=$page-9;$i<$page;$i++){                 $html.='<li><a href="/?page='.$i.'">'.$i.'</a></li>';             }             $html.='<li><a href="/?page='.$page.'" class="on">'.$page.'</a></li>';             for($i=$page+1;$i<$page+10;$i++){                 $html.='<li><a href="/?page='.$i.'">'.$i.'</a></li>';             }         }         $html .= "</ul></div>";         echo $html;     } }

常见问题与解答

1、问题:为什么分页功能没有生效?

解答:请确保按照上述步骤正确配置了所有文件,并检查DIY模块的设置是否正确,如果仍然无法生效,建议查看浏览器控制台是否有报错信息,并根据报错信息进行调试。

如何为Discuz门户DIY页面添加翻页功能?

2、问题:如何调整每页显示的帖子数量?

解答:code.php文件中,可以通过修改define('DIY_SIZE', isset($_GET['size'])?$_GET['size']:10);这行代码中的数值来调整每页显示的帖子数量,将10改为20,即可每页显示20条帖子。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!