看过很多的网站,看到别人的网站,前端的页面都是压缩过的,压缩过的代码,除了加载快、节省空间以外,更显得有格调。下面,小千就将这个代码,给大家分享一下,让你的网站,与别人的网站与众不同,织梦网站,也是可以高调一番。
教程开始
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标签了,而是,你的添加方式不对,你加个自定义函数方法就能轻松解决了,就是大家所谓的织梦二次开发吧。
本文结束
评论专区
发表评论
评论列表(无评论)