分类主题列表制作
2024-12-11
列表不区分门户和扁平,直接显示当前版块数据、当前版块主题数据和当前版块的自定义标签主题数据。
对应的文件 view/htm/list.htm
当前版块数据包括:版块公告、版块介绍、版块主题数量,今日主题数量,今日评论数量。
当前版块数据对应的变量名 $forum
// ----版块公告代码----
<?php if($forum['announcement']) { ?> <div class="card card-mod-info"> <div class="card-body"> <h6 class="card-title"> <?php echo lang('forum_anouncement');?>: </h6> <p class="small"> <?php echo $forum['announcement'];?> </p> </div> </div><?php } ?>
版块其他数据
<div class="card-site-info bg-white shadow"> <!--{hook list_site_brief_before.htm}--> <div class="mx-3 pt-3"> <h5 class="text-center"> <?php echo $forum['name'];?> </h5> <div class="small line-height-3"> <?php echo $forum['brief'];?> </div> </div> <!--{hook list_site_brief_middle.htm}--> <div class="card-footer p-2"> <table class="w-100 small"> <tr align="center"> <td> <span class="text-muted"> <?php echo lang('threads');?> </span> <br> <b> <?php echo $forum['threads'];?> </b> </td> <td> <span class="text-muted"> <?php echo lang('today_comment');?> </span> <br> <b> <?php echo $forum['todayposts'];?> </b> </td> <td> <span class="text-muted"> <?php echo lang('today_threads');?> </span> <br> <b> <?php echo $forum['todaythreads'];?> </b> </td> <!--{hook list_todaythreads_after.htm}--> </tr> </table> </div> <!--{hook list_site_brief_end.htm}--></div>
<!--{hook ***}--> 这种为hook使用的钩子,个人模板可去掉。
主题列表对应的变量命名 $threadlist
此文件加载了公用列表文件 thread_list.inc.htm 可根据自己的需要修改成自己的样式,复制一份该文件到自己的模板目录,然后加载该文件。加载方法
<ul class="threadlist list-group list-group-flush shadow"> <!--{hook list_main_threadlist_before.htm}--> <?php include _include(APP_PATH . 'view/htm/thread_list.inc.htm');?> <!--{hook list_main_threadlist_after.htm}--></ul>
demo为自己的模板目录,加载时路径和文件名必须正确。
// ----前台管理代码,不需要前台管理可删除----
<?php include _include(APP_PATH.'view/htm/thread_list_mod.inc.htm');?>
自定义标签主题数据对应的变量名 $flaglist 循环输出设置为显示的自定义标签和标签下主题,单独调用自定义标签主题,请看 自定义调用 这篇内容
<?php if($flaglist){foreach($flaglist as $_flag) { ?><div class="shadow mt-3"> <div class="card-header bg-light"> <h3 class="font-weight-bold my-0"> <a href="<?php echo $_flag['url'];?>" title='<?php echo $_flag['name'];?>' aria-label='<?php echo $_flag['name'];?>'> <?php echo $_flag['name']; ?> </a> </h3> </div> <ul class="list-group list-group-flush nowrap"> <?php if(isset($_flag['list'])){foreach($_flag['list'] as $_thread) { ?> <li class="list-group-item bg-white"> <h4 class="my-0"> <a href="<?php echo $_thread['url'];?>" class="d-block ellipsis" <?php echo (10==$_thread['type']?'rel="nofollow" target="_blank"':''); ?> title='<?php echo $_thread['subject'];?>' aria-label='<?php echo $_thread['subject'];?>'> <?php echo $_thread['subject'];?> </a> </h4> </li> <?php }} ?> </ul></div><?php }} ?>
// ----页头导航所在版块高亮 ----
/* 这段js是指定页头导航当前版块所在导航处高亮 nav对应页头导航的id="nav" li是<ul><li><a>超链接</a></li></ul> 具体请自行参照官方默认页头 view/htm/header_nav.inc.htm */<script> $('#nav li[data-active="fid-<?php echo $fid;?>"]').addClass('active'); </script>
加载公用的页头和页脚,这个页面就完成了。不懂php没关系,只要懂bootstrap和html、css就可以了,把官方 htm 文件里的php代码复制过去即可。
默认列表排序翻页,模板中调用如下代码。
<?php if ($pagination) { ?> <nav class="my-3"> <ul class="pagination justify-content-center flex-wrap"> <?php echo $pagination; ?> </ul> </nav><?php } ?>
可以单独调用上一页和下一页翻页,模板中可调用如下代码
<?php if ($pagination) { ?> <nav class="my-3"> <ul class="pagination justify-content-center flex-wrap"> <?php echo pager($page_url, $num, $page, $pagesize); ?> </ul> </nav><?php } ?>