DZ理解与使用(主要针对SEO)

一、 缓存文件

首页主要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}&nbsp; <!--{/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. 根据官方文档设置

diy自定义变量添加方法 - 官方文档

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值