正在读取数据,页面载入中,请稍后...

织梦模板压缩前端代码,并且可以过滤注释不显示

看过很多的网站,看到别人的网站,前端的页面都是压缩过的,压缩过的代码,除了加载快、节省空间以外,更显得有格调。下面,小千就将这个代码,给大家分享一下,让你的网站,与别人的网站与众不同,织梦网站,也是可以高调一番。

教程开始

1、后台-系统-系统基本参数-添加新变量

变量名称 cfg_yasuohtml
变量类型 布尔(Y/N)
参数说明 是否开启生成压缩前端代码
变量值 Y

这样加个开关,当关闭的时候,是不会对前端模板进行压缩的。

dedetag.class.php

2、打开 /include/dedetag.class.php 文件,搜索

Display()

然后把这个函数改为

function Display() {
	global $cfg_yasuohtml;
	if ($cfg_yasuohtml == 'N' || $cfg_yasuohtml == '') {
		echo $this->GetResult();
	} else {
		$muban = $this->GetResult();
		$muban = preg_replace('#<!--{(.*?)}-->#','', $muban);
		//$muban = preg_replace('#<!--{kan\s+(.*?)}-->#','', $muban);//<!--{kan muban.htm}-->
		$muban = preg_replace('/\s+/', ' ', $muban);
		$muban = trim($muban);
		echo $muban;
	}
}

对的,没错,就是这么饿简单,就是改这么一句代码,就可以实现前端代码自动压缩了,但是有一个问题,这个Display()的方法,只对动态、伪静态的模板有用,意思就是,如果,你的网站是静态的,那么,只改这一个地方还是不够的哦。继续看下面,紧跟着的,就是静态模板生成文件了。

静态网站

还是这个文件,继续搜索

function SaveTo($filename)

其实,这个函数,就在下面一行,把这个整个方法都改为

function SaveTo($filename) {
	global $cfg_yasuohtml;
	if ($cfg_yasuohtml == 'N' || $cfg_yasuohtml == '') {
		$fp = @fopen($filename,"w") or die("{$filename}<br />DedeTag Engine Create File False");
		fwrite($fp,$this->GetResult());
		fclose($fp);
	} else {
		$muban = $this->GetResult();
		$muban = preg_replace('#<!--{(.*?)}-->#','', $muban);
		//$muban = preg_replace('#<!--{kan\s+(.*?)}-->#','', $muban);//<!--{kan muban.htm}-->
		$muban = preg_replace('/\s+/', ' ', $muban);
		$muban = trim($muban);
		$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False");
		fwrite($fp,$muban);
		fclose($fp);
	}
}

这样改了以后,就算你的网站是静态的,生成的静态网页,也是前端自动压缩代码的哦。当然,除了压缩以外,我还给大家整了一个小功能,那就是注释,写代码怎么能够少得了注释,如果不给注释,一般自己看都费劲,今天写的,明天就忘记了,等一年以后,发现,这瞎几把写的啥。

支持注释

一般,HTML都是用<!-- 注释掉的代码 -->的注释。但是,有一个问题,那就是你加的注释,在前端都会显示,说得简单点,就是把智商完全暴露了。很多人在想,怎么样,能把这个注释写上,又不让它显示出来呢?其实,就我上面的代码中,已经完全实现,这种注释标签不显示了,下面就上织梦模板的写法。

排除地图

织梦模板压缩前端代码,并且可以过滤注释不显示 - 全民博客

生成的网站地图也会被压缩。下面,是排除网站地图的方法。如果加了 cfg_yasuohtml 开关,这个方法就多余了。

1、打开 /dede/makehtml_static.php 就是你的网站地图文件,看到

$pv->SaveToHtml(dirname(__FILE__).'/../'. $m);

改为

$pv->SaveUoHtml(dirname(__FILE__).'/../'. $m);

2、打开 /include/arc.partview.class.php 搜索

function SaveToHtml(

在它上面加入

function SaveUoHtml($filename,$isremote=0) {
	global $cfg_remote_site;
	//如果启用远程发布则需要进行判断
	if($cfg_remote_site=='Y' && $isremote == 1) {
		//分析远程文件路径
		$remotefile = str_replace(DEDEROOT, '', $filename);
		$localfile = '..'.$remotefile;
		//创建远程文件夹
		$remotedir = preg_replace('/[^\/]*\.js/', '', $remotefile);
		$this->ftp->rmkdir($remotedir);
		$this->ftp->upload($localfile, $remotefile, 'ascii');
	}
	$this->dtp->SaveUo($filename);
}

3、打开 /include/dedetag.class.php 文件,搜索

function SaveTo($filename)

在它上面加入

function SaveUo($filename) {
	$fp = @fopen($filename,"w") or die("{$filename}<br />DedeTag Engine Create File False");
	fwrite($fp,$this->GetResult());
	fclose($fp);
}

因为生成文件,无法判断模板名称,所以,再单独新建一个方法解析地图即可。

模板写法

<!DOCTYPE>
<html>
<head>
<title>无标题文档</title>
</head>
<!-- 这样写的注释会显示 -->
<!--{这样写的注释不会显示}-->
<body>
</body>
</html>

你能明白我的意思吗?意思就是,模板可以加注释了,你想怎么加,你就怎么加,并且,前端生成的静态网页,都是压缩、过滤好的。对于举个例子的,你就右击,看我的网站源码就行了,对的,就是这个效果,不知道的,以为这个效果很难,想要这个效果,就是这么简单。

织梦缺陷

作为一个织梦爱好者,真的是把织梦玩转了,发现一个弊端,那就是织梦模板内,不支持原生的PHP代码,织梦模板,虽然可以会用{dede:php}来代替PHP标签,但是,还是存在一定问题的,像多重的PHP判断,{dede:php}就没法实现。其原因是,织梦读取模板内的代码,只读取织梦的内置调用标签,对于非织梦调用标签,织梦都是不读取、不识别的。

这个不识别原生的PHP标签,对织梦程序来说,是一种安全防护措施,但大家可以加自定义方法、写自定义函数来解决,想在织梦模板加PHP标签,也就是只能用{dede:php}来代替了,所以,不要吐槽再织梦模板不支持PHP标签了,而是,你的添加方式不对,你加个自定义函数方法就能轻松解决了,就是大家所谓的织梦二次开发吧。

本文结束

评论专区

发表评论

评论列表(无评论)