当前位置:首页 > CMS教程 > ecshop > 列表

ecshop生成静态页html方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-11-15 09:23:16 浏览: 评论:0 

ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态,并且有两种重写方法,在后台的商店设置中,可以选择简单重写和复杂重写.

伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求.

但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化.

在这里,我们先对首页进行纯静态生成.

1.复制首页index.php为index_html.php,因为ECSHOP是使用SMARTY模板引擎的,所以我们可以使用SMARTY生成文件函数,把模板的静态网页输出。

在首页中,$smarty->display('index.dwt',$cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码,参看注释.

  1. $file = 'index.html';//静态网页文件名 
  2.  
  3. $content = $GLOBALS['smarty']->make_html('index.dwt');//根据index.dwt模板生成网页内容 
  4.  
  5. $filename = ROOT_PATH . $file;//静态网页路径 
  6.  
  7. file_put_contents($filename$content);//生成文件 

以上几条简单的语句,我们就可以生成首页的静态网页,同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了.

首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层,把产品类别放在根目录,体现产品类别的重要性,易于搜索引擎的抓取,另外一方面,我们可以把产品放在下个目录中.

类似代码:

  1. $filename = build_uri('category'array('cid' => $catinfo['cat_id']));//构造路径,这个可以选择自己喜欢的构造方法 
  2.    $content = $GLOBALS['smarty']->make_html('category.dwt');//产生静态页面内容 
  3.    $filename = ROOT_PATH . $filename;//生成文件路径,在根目录下 
  4.    file_put_contents($filename$content);//输出 
  5. 产品的静态页面代码: 
  6. $goodinfo = get_all_goodsinfo($goods_id); 
  7. $cat_name   =   $goodinfo['cat_name']; 
  8.    $goodsfile = build_uri('goods'array('gid' => $goods_id)); 
  9. $content = $GLOBALS['smarty']->make_html('goods.dwt'); 
  10. $html_tempdir = (ROOT_PATH.$cat_name.'/'); 
  11. if (!is_dir($html_tempdir))//生成产品目录 
  12. {//开源软件:phpfensi.com 
  13.    mkdir($html_tempdir); 
  14. $htmlfilename = ROOT_PATH . $goodsfile
  15. file_put_contents($htmlfilename,$content); 

我的是使用类别名称加下划线:

  1. function   build_uri(........) 
  2. ................ 
  3.          case 'category'
  4.              $cat_name = $GLOBALS['db']->getOne('SELECT cat_name FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cid'"); 
  5.                    $uri = $cat_name . '-' . $cid
  6.                    if (!emptyempty($page)) 
  7.                    { 
  8.                      $uri .= '-' . $page
  9.                    } 
  10. ........ 
  11. case 'goods'
  12.           $goods_info = $GLOBALS['db']->getRow('SELECT g.goods_name, c.cat_name FROM ' . $GLOBALS['ecs']->table('goods') . " as g left join " . 
  13.       $GLOBALS['ecs']->table('category') . " as c on c.cat_id = g.cat_id WHERE g.goods_id   = '$gid'"); 
  14.       $goods_name =   $goods_info['goods_name']; 
  15.        $cat_name = $cat_name
  16.          
  17.             $uri =   $cat_name . '/' . $goods_name . '-' . $gid ; 
  18.       
  19.    .......................... 

有人问 make_html 这个函数在那里,我现在补充如下,在 includes 下的 cls_template.php 加上:

  1. function make_html($filename$cache_id = ''
  2.     { 
  3.          ob_start(); 
  4.    $this->display($filename,$cache_id); 
  5.    $out = ob_get_contents(); 
  6.    ob_end_clean(); 
  7.         return $out
  8.  
  9.     }

Tags: ecshop生成静态 ecshop生成html

分享到: