在Discuz社区首页调用DSU每日签到状态,可以通过以下两种专业方式实现:
方式一:模块数据调用(推荐)
1. 进入后台 → 门户 → 模块管理 → 创建新模块
2. 选择"静态模块"类型,在内容源码中插入:
- <?php
- if(!defined('IN_DISCUZ')) exit;
- $signData = C::t('#dsu_amupper#dsu_amupper')->fetch($_G['uid']);
- if($signData) {
- echo '今日已签到,签到时间:'.dgmdate($signData['time'], 'Y-m-d H:i');
- } else {
- echo '<a href="plugin.php?id=dsu_amupper:sign" target="_blank">立即签到</a>';
- }
- ?>
复制代码
方式二:模板直接调用(需开启DIY功能)
在门户首页模板文件(template/default/portal/index.htm)适当位置添加:
- <!--[diy=diy1]-->
- <div id="diy1" class="area"></div>
- <script type="text/javascript">
- diyobj.show('diy1', 'portal', '1', 'index', 'frame', '1', 'portal.php?mod=index&diy=yes');
- </script>
- <!--[/diy]-->
复制代码
同时在后台为该DIY区域创建对应模块,代码参考方式一。
注意事项:
1. 调用前需确保已安装最新版DSU每日签到插件(当前最新版本为v3.5.1)
2. 若需显示签到排行榜,可调用:
- <?php
- $query = C::t('#dsu_amupper#dsu_amupper')->fetch_all_order_by_time(10);
- foreach($query as $item) {
- // 处理展示逻辑
- }
- ?>
复制代码
3. 推荐使用缓存机制提升性能:
- $signData = memory('get', 'daily_sign_cache');
- if(!$signData){
- // 数据库查询
- memory('set', 'daily_sign_cache', $signData, 3600);
- }
复制代码
修改模板时建议:
1. 使用子模板继承机制
2. 修改前备份原始文件
3. 调用前检查插件是否启用:
- if(C::t('common_plugin')->fetch_by_identifier('dsu_amupper')) {
- // 调用代码
- }
复制代码
如需更详细的二次开发方案,可前往DZ插件网技术文档区查阅《DiscuzX插件深度开发指南》,其中第8章专门讲解用户签到系统的开发规范。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |