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

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

教程开始

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

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

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

Source Code
  1. dedetag.class.php

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

Source Code
  1. Display()

然后把这个函数改为

Source Code
  1. function Display() {
  2. global $cfg_yasuohtml;
  3. if ($cfg_yasuohtml == 'N' || $cfg_yasuohtml == '') {
  4. echo $this->GetResult();
  5. } else {
  6. $muban = $this->GetResult();
  7. $muban = preg_replace('#<!--{(.*?)}-->#','', $muban);
  8. //$muban = preg_replace('#<!--{kan\s+(.*?)}-->#','', $muban);//<!--{kan muban.htm}-->
  9. $muban = preg_replace('/\s+/', ' ', $muban);
  10. $muban = trim($muban);
  11. echo $muban;
  12. }
  13. }

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

静态网站

还是这个文件,继续搜索

Source Code
  1. function SaveTo($filename)

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

Source Code
  1. function SaveTo($filename) {
  2. global $cfg_yasuohtml;
  3. if ($cfg_yasuohtml == 'N' || $cfg_yasuohtml == '') {
  4. $fp = @fopen($filename,"w") or die("{$filename}<br />DedeTag Engine Create File False");
  5. fwrite($fp,$this->GetResult());
  6. fclose($fp);
  7. } else {
  8. $muban = $this->GetResult();
  9. $muban = preg_replace('#<!--{(.*?)}-->#','', $muban);
  10. //$muban = preg_replace('#<!--{kan\s+(.*?)}-->#','', $muban);//<!--{kan muban.htm}-->
  11. $muban = preg_replace('/\s+/', ' ', $muban);
  12. $muban = trim($muban);
  13. $fp = @fopen($filename,"w") or die("DedeTag Engine Create File False");
  14. fwrite($fp,$muban);
  15. fclose($fp);
  16. }
  17. }

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

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

支持注释

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

排除地图

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

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

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

改为

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

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

Source Code
  1. function SaveToHtml(

在它上面加入

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

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

Source Code
  1. function SaveTo($filename)

在它上面加入

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

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

模板写法

Source Code
  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <title>无标题文档</title>
  5. </head>
  6. <!-- 这样写的注释会显示 -->
  7. <!--{这样写的注释不会显示}-->
  8. <body>
  9. </body>
  10. </html>

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

织梦缺陷

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

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

本文结束

评论专区

发表评论

评论列表(无评论)