用来纪念自己最后做的一个Discuz论坛,2014年用于记录一些技术文献。
我将这个站点里的帖子都搬过来了,与Discuz相关的统一放在这篇文章里,纪念昔日的个人站长时光。
Discuz解决title空格失效的问题
修改 ./source/class/helper/helper_seo.php 查找
$searchspace = array('((\s*\-\s*)+)', '((\s*\,\s*)+)', '((\s*\|\s*)+)', '((\s*\t\s*)+)', '((\s*_\s*)+)'); $replacespace = array('-', ',', '|', ' ', '_');
替换为
$searchspace = array('(((\s)*\-(\s)*)+)', '(((\s)*\,(\s)*)+)', '(((\s)*\|(\s)*)+)', '(((\s)*\t(\s)*)+)', '(((\s)*_(\s)*)+)'); $replacespace = array('$3-$3', '$3,$3', '$3|$3', '$3 $3', '$3_$3');
即可实现效果
Discuz修改帖子列表头像大小
默认调用的头像有时看着很模糊,所以改进了一下:
修改文件 .\source\module\forum\forum_viewthread.php 找到
$post['avatar'] = avatar($post['authorid']);
替换成
$post['avatar'] = avatar($post['authorid'], 'big');
修改文件 .\template\default\forum\viewthread_fastpost.htm 找到
<!--{echo avatar($_G['uid'])}-->
替换成
<!--{echo avatar($_G['uid'], 'big')}-->
是不是头像清晰了许多
Discuz帖内翻页效果改进
使用过Discuz的帖内分页功能的用户都会发现,点击翻页按钮时页面是保持在原位切换的,如果两个页面的内容行数相差过多,会很影响用户的阅读体验,另外如果使用了目录功能,那么下方的翻页按钮将会隐藏,这种设计真的很无语,给出一个修改方案:
修改 ./source/module/forum/forum_viewthread.php 查找
if($_GET['cp'] != 'all' && strpos($post['message'], '[/index]') === FALSE && empty($_GET['threadindex']) && !$messageindex) { $_G['forum_posthtml']['footer'][$post['pid']] .= '<div id="threadpage"></div><script type="text/javascript" reload="1">show_threadpage('.$post['pid'].', '.$cp.', '.count($messagearray).', '.($_GET['from'] == 'preview' ? '1' : '0').');</script>';
修改为
if($_GET['cp'] != 'all' && strpos($post['message'], '[/index]') === FALSE && empty($_GET['threadindex']) ) { $_G['forum_posthtml']['footer'][$post['pid']] .= '<div id="threadpage"></div><script type="text/javascript" reload="1">show_threadpage('.$post['pid'].', '.$cp.', '.count($messagearray).', '.($_GET['from'] == 'preview' ? '1' : '0').');window.scrollTo("0","0");</script>';
目前官方版本的翻页存在BUG,如果第一页含有代码文字,则第一页的翻页按钮会消失,已经提交,坐等官方修复
Discuz去掉前台插件更新提示
有了应用中心后,管理员账号登陆,前台总会弹出插件更新的提示,影响管理员账号的使用体验,以下方法可以解决:
修改 ./source/module/misc/misc_patch.php 查找
if($newversion)
注释掉以下代码
/**if($newversion) { $lang = lang('forum/misc'); echo '<div class="bm"><div class="bm_h cl"><a href="javascript:;" onclick="$(\'plugin_notice\').style.display=\'none\';setcookie(\'pluginnotice\', 1, 86400)" class="y" title="'.$lang['patch_close'].'">'.$lang['patch_close'].'</a>'; echo '<h2 class="i">'.$lang['plugin_title'].'</h2></div><div class="bm_c">'; echo '<div class="cl bbda pbm">'.lang('forum/misc', 'plugin_memo', array('number' => $newversion)).'</div>'; echo '<div class="ptn cl"><a href="admin.php?action=plugins" class="xi2 y">'.$lang['plugin_link'].' »</a></div>'; echo '</div></div>'; }*/
这样管理员账号登陆前台,就不会看见插件更新的弹窗了。
解决Discuz应用中心“您安装的不是正版应用”问题
解决Discuz应用中心“您安装的不是正版应用,安装程序无法继续执行”
首先想说请尊重正版,作者开发个东西出来也不容易,教大家这个方法,完全是为了解决一些插件、模板的版本兼容问题,别有用心的请自重。该方法目前在x2.5版本及X3系列均可使用。具体操作如下:
找到 ./source/function/function_cloudaddons.php 查找
cpmsg('cloudaddons_genuine_message', '', 'error', array('addonid' => $addonid));
注释为
/** cpmsg('cloudaddons_genuine_message', '', 'error', array('addonid' => $addonid)); */
即可解决问题
Discuz X3/3.1/3.2 Memcached接口优化
在Discuz的X3系列中,Memcached缓存依旧使用了较老的memcache扩展,更换为memcached扩展后会提升很多性能,其实只要简单修改就可以实现。方法如下:
打开 .\source\class\discuz\discuz_memory.php 文件,查找
extension_loaded('memcache');
修改为
extension_loaded('memcached');