一、 缓存文件
首页主要CSS缓存文件如下:
data/cache/style_1_common.css
data/cache/style_1_forum_index.css
首先,那两个css是程序生成的css缓存文件,所以如果要改css的话,不能直接改那两个文件,否则一更新缓存,之前的改动就无效了。拿自带的default模板举例吧,default模板中,带有一个common的文件夹,这个文件夹存放的是全局模板文件,
里面有css文件:style_1_common.css 是【common.css】生成的缓存文件
style_1_forum_index.css 是【module.css】生成的缓存
二、禁止访问用户资料
1. 文件路径:
source/include/space/space_profile.php
2. 添加代码如下
//当前用户id查看的不是自己的空间,并且当前用户不是管理员
if ($_G['uid']!=$space['uid']&&$_G['adminid'] != 1) {
// 提示:您没有权限进行此操作
showmessage('quickclear_noperm');
}
// 上面的代码要在这个代码之上
getonlinemember(array($space['uid']));
三、SEO标题二次修改
1、 针对情况:多个域名共用一个数据库,但是每个域名对应的SEO不一样
2、 文件路径:/source/module/forum/forum_viewthread.php
3、 代码参考:
// $navtitle:seo标题
// $metadescription:seo描述
// $metakeywords:seo关键词
list($navtitle, $metadescription, $metakeywords) = get_seosetting($seotype, $seodata);
// 1、navtitle有值的情况下就添加以下修改
$navtitle = str_replace('原来的SEO后缀', '自定义SEO后缀', $navtitle);
if(!$navtitle) {
// 2、navtitle没有值的情况下就在下面修改,下面意思是:帖子标题 + 页码 + ' - ' + 栏目名
$navtitle = helper_seo::get_title_page($_G['forum_thread']['subject'], $_G['page']).' - '.strip_tags($_G['forum']['name']);
$nobbname = false;
} else {
$nobbname = true;
}
四、隐藏帖子已购买人数
方法1(直接屏蔽掉记录):
1. 文件路径:/template/default/forum/viewthread_pay.htm
2. 代码参考:
<div class="locked">
<a href="javascript:;" class="y viewpay" title="{lang pay}" onclick="showWindow('pay', 'forum.php?mod=misc&action=pay&tid=$_G[tid]&pid=$post[pid]{if !empty($_GET['from'])}&from=$_GET['from']{/if}')">{lang pay}</a>
// 这里是展示帖子购买人数的位置,将这代码删除即可 begin
<em class="right">
<!--{if $thread[payers]}-->{lang have} $thread[payers] {lang people_buy} <!--{/if}-->
</em>
// 这里是展示帖子购买人数的位置,将这代码删除即可 end
<!--{if $_G[forum_thread][price] > 0}-->{lang pay_comment}<!--{/if}-->
<!--{if $thread[endtime]}--><br />{lang pay_free_time}<!--{/if}-->
</div>
</div>
方法2(设置权限查看):
1. 文件路径:/source/module/forum/forum_misc.php
2. 代码参考:
# 找到这段代码 elseif($_GET['action'] == 'viewpayments') { 在后面加上下面代码:
if($_G['groupid'] != 1) { # groupid指的是用户组ID
showmessage('您没有权限查看记录');
}
五、分区伪静态
// 1. 优化论坛首页分区:/template/default/forum/discuz.htm
<h2><a href="{if !empty($caturl)}$caturl{else}forum.php?gid=$cat[fid]{/if}" style="{if $cat[extra][namecolor]}color: {$cat[extra][namecolor]};{/if}">$cat[name]</a></h2>
// 修改为:
<h2><a href="{if !empty($caturl)}$caturl{else}forum-$cat[fid].html{/if}" style="{if $cat[extra][namecolor]}color: {$cat[extra][namecolor]};{/if}">$cat[name]</a></h2>
// 2.列表页面包屑伪静态:source/module/forum/forum_forumdisplay.php
<a href="forum.php?gid='.$forum_up['fid'].'">
// 修改过
<a href="forum-'.$forum_up['fid'].'.html">
// 3.帖子页面包屑:source/module/forum/forum_viewthread.php
? 'forum.php?gid='.$fup :
// 修改过
? 'forum-'.$fup.'.html' :
六、SEO伪静态渲染
tip:dz的伪静态并不是生成页面前进行替换的,而是采取生成页面后进行二次修改页面内容产生的伪静态效果
路径是:/source/function/function_core.php
参考文档:Discuz!伪静态原理分析
// 规则重写函数如下,从$type便能判断是针对哪个地方做重写:
function rewriteoutput($type, $returntype, $host) {
global $_G;
$fextra = '';
if($type == 'forum_forumdisplay') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{page}' => $page ? $page : 1,
);
} elseif($type == 'forum_viewthread') {
list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
$r = array(
'{tid}' => $tid,
'{page}' => $page ? $page : 1,
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);
} elseif($type == 'home_space') {
list(,,, $uid, $username, $extra) = func_get_args();
$_G['setting']['rewritecompatible'] && $username = rawurlencode($username);
$r = array(
'{user}' => $uid ? 'uid' : 'username',
'{value}' => $uid ? $uid : $username,
);
} elseif($type == 'home_blog') {
list(,,, $uid, $blogid, $extra) = func_get_args();
$r = array(
'{uid}' => $uid,
'{blogid}' => $blogid,
);
} elseif($type == 'group_group') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => $fid,
'{page}' => $page ? $page : 1,
);
} elseif($type == 'portal_topic') {
list(,,, $name, $extra) = func_get_args();
$r = array(
'{name}' => $name,
);
} elseif($type == 'portal_article') {
list(,,, $id, $page, $extra) = func_get_args();
$r = array(
'{id}' => $id,
'{page}' => $page ? $page : 1,
);
} elseif($type == 'forum_archiver') {
list(,, $action, $value, $page, $extra) = func_get_args();
$host = '';
$r = array(
'{action}' => $action,
'{value}' => $value,
);
if($page) {
$fextra = '?page='.$page;
}
} elseif($type == 'plugin') {
list(,, $pluginid, $module,, $param, $extra) = func_get_args();
$host = '';
$r = array(
'{pluginid}' => $pluginid,
'{module}' => $module,
);
if($param) {
$fextra = '?'.$param;
}
}
$href = str_replace(array_keys($r), $r, $_G['setting']['rewriterule'][$type]).$fextra;
if(!$returntype) {
return '<a href="'.$host.$href.'"'.(!empty($extra) ? stripslashes($extra) : '').'>';
} else {
return $host.$href;
}
}
六、自定义变量
1. 根据官方文档设置
2. 官方文档添加不完整还需要在模块类中添加才能生效
文件路径:/source/language/lang_blockclass.php
按分类名添加到相对应的位置即可完成
七、标签伪静态
discuz! x 3.0 - 3.4:TAG标签伪静态设置教程 !
Tip:dz模版里面是可以调用php文件里的方法的!!!
八、canonical优化
1. 首页canonical优化,文件:/source/module/forum/forum_index.php
/**
* [Discuz!] 给首页加上canonical网址规范化唯一权威标签.
*/
require_once libfile('function/forumlist'); # 在这位置下面加
$_G['setting']['seohead'] .= '<link href="'.$_G['siteurl'].'" rel="canonical" />';
2. 列表canonical优化,文件:/source/module/forum/forum_forumdisplay.php
/**
* [Discuz!] 给版块加上canonical网址规范化唯一权威标签.
*/
$_G['action']['fid'] = $_G['fid']; # 搜索这段代码
if(@in_array('forum_forumdisplay', $_G['setting']['rewritestatus'])) {
$canonical = rewriteoutput('forum_forumdisplay', 1, '', $_G['fid'], 1, '', '');
$_G['setting']['seohead'] .= '<link href="'.$_G['siteurl'].$canonical.'" rel="canonical"
}
/>';
九、修改标签长度
1. 修改上传限制
文件:source/class/class_tag.php
将{2,20} 改成需要的大小
foreach($tagarray as $tagname) {
$tagname = trim($tagname);
if(preg_match('/^([\x7f-\xff_-]|\w|\s){2,20}$/', $tagname)) {
$status = $idtype != 'uid' ? 0 : 3;
$result = C::t('common_tag')->get_bytagname($tagname, $idtype);
if($result['tagid']) {
if($result['status'] == $status) {
$tagid = $result['tagid'];
}
} else {
$tagid = C::t('common_tag')->insert($tagname,$status);
}
if($tagid) {
if($itemid) {
C::t('common_tagitem')->replace($tagid,$itemid,$idtype);
}
$tagcount++;
if(!$returnarray) {
$return .= $tagid.','.$tagname."\t";
} else {
$return[$tagid] = $tagname;
}
}
if($tagcount > 4) {
unset($tagarray);
break;
}
}
}
2. 修改数据表限制
pre_common_tag的tagname里面,默认的是20这里修改成了200