根据您描述的情况,Discuz! 3.5 移动端积分获取不显示的问题可通过以下步骤排查解决:
1. **核心文件检查**
- 检查 `/source/function/function_blog.php` 和 `/source/function/function_forum.php` 文件
- 确认包含 `updatemembercount` 积分更新函数调用
- 查看是否设置了 `$_G['forum_first_showcreditnotice']` 全局变量
2. **模板层适配**
在手机模板目录 `/template/default/mobile/forum/` 下:
- <!-- 在 post.htm 发帖模板中添加 -->
- <!--{if $_G['forum_first_showcreditnotice']}-->
- <div class="credit_notice">
- 获得 {$_G['setting']['extcredits'][$_G['setting']['creditstransextra'][1]]['title']} +$credit
- </div>
- <!--{/if}-->
复制代码
3. **积分策略配置**
- 进入后台 → 全局 → 积分设置
- 确认"发主题"、"回复"等操作对应的积分策略是否启用移动端标识位
- 检查积分公式中是否包含 `DEVICE_TYPE & 2` 的移动端判断
4. **移动端钩子注入**
在 `/source/class/discuz/mobile.php` 中增加:
- public function check_credit_rules() {
- loadcache('creditrules');
- foreach($_G['cache']['creditrules'] as $rule) {
- if($rule['mobile'] && $rule['available']) {
- updatecreditbyaction($rule['action'], 0, array(), '', 1, 0, $rule['fid']);
- }
- }
- }
复制代码
5. **移动端API适配**
检查 `/api/mobile/` 目录下的发帖接口文件,确保包含:
- if(!defined('IN_MOBILE_API')) {
- include_once 'source/plugin/mobile/api/4/module/credit.php';
- mobile_credit::update_by_action('post');
- }
复制代码
建议通过PC端与移动端模板对比工具,核查以下关键节点:
1. 积分提示模板片段调用
2. 用户行为日志记录模块
3. 异步请求积分更新接口
4. 移动端CSS对提示信息的隐藏情况(检查 `display:none` 样式)
若仍存在问题,可通过在移动模板的`post.htm`中添加调试代码定位:
- <!--{debug}-->
- <!--{echo '<pre>'; print_r($_G['setting']['creditpolicy']); echo '</pre>';}-->
复制代码
该问题通常源于移动模板对积分提示模块的未继承,通过上述代码级适配可完整恢复移动端积分功能。建议在修改前做好模板备份,修改后需更新模板缓存。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |