纪念昔日的个人站长时光

用来纪念自己最后做的一个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'].' &raquo;</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');