所在位置:首页 > 学习心得 > ecshop生成静态页方法
ecshop生成静态页方法
  • ecshop生成静态页方法
    发布时间:2010-06-06 类别:PHP技术 来源:侠客工作室
    • 1
    • 2
    • 3
    • 4
    • 5
  • ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态。并且有两种重写方法,在后台商店设置中,可以选择简单重写和复杂重写。
    伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。
    但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。
    在这里,我们先对首页进行纯静态生成。
    1.复制首页index.php为index_html.php,因为ECSHOP是使用SMARTY模板引擎的,所以我们可以使用SMARTY生成文件函数,把模板
    的静态网页输出。
    在首页中,$smarty->display(‘index.dwt‘, $cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码(参看注释)

    $file = ‘index.html‘;//静态网页文件名
    $content = $GLOBALS[‘smarty‘]->make_html(‘index.dwt‘);//根据index.dwt模板生成网页内容
    $filename = ROOT_PATH . $file;//静态网页路径
    file_put_contents($filename, $content);//生成文件
    以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。

    首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,
    但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层。把产品类别放在根目录,体现产品类别的重要性,易于搜索引擎的
    抓取,另外一方面,我们可以把产品放在下个目录中。
    类似代码:
    $filename = build_uri(‘category‘, array(‘cid‘ => $catinfo[‘cat_id‘]));//构造路径,这个可以选择自己喜欢的构造方法
       $content = $GLOBALS[‘smarty‘]->make_html(‘category.dwt‘);//产生静态页面内容
       $filename = ROOT_PATH . $filename;//生成文件路径,在根目录下
       file_put_contents($filename, $content);//输出
    产品的静态页面代码:
    $goodinfo = get_all_goodsinfo($goods_id);
    $cat_name   =   $goodinfo[‘cat_name‘];
       $goodsfile = build_uri(‘goods‘, array(‘gid‘ => $goods_id));
    $content = $GLOBALS[‘smarty‘]->make_html(‘goods.dwt‘);
    $html_tempdir = (ROOT_PATH.$cat_name.‘/‘);
    if (!is_dir($html_tempdir))//生成产品目录
    {
       mkdir($html_tempdir);
    }
    $htmlfilename = ROOT_PATH . $goodsfile;
    file_put_contents($htmlfilename,$content);
    我的是使用类别名称加下划线:
    function   build_uri(........)
    ................
             case ‘category‘:
                 $cat_name = $GLOBALS[‘db‘]->getOne(‘SELECT cat_name FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) . " WHERE cat_id = ‘$cid‘");
                       $uri = $cat_name . ‘-‘ . $cid;
                       if (!empty($page))
                       {
                         $uri .= ‘-‘ . $page;
                       }
    ........
    case ‘goods‘:
              $goods_info = $GLOBALS[‘db‘]->getRow(‘SELECT g.goods_name, c.cat_name FROM ‘ . $GLOBALS[‘ecs‘]->table(‘goods‘) . " as g left join " .
          $GLOBALS[‘ecs‘]->table(‘category‘) . " as c on c.cat_id = g.cat_id WHERE g.goods_id   = ‘$gid‘");
          $goods_name =   $goods_info[‘goods_name‘];
           $cat_name = $cat_name;
            
                $uri =   $cat_name . ‘/‘ . $goods_name . ‘-‘ . $gid ;
         
       ..........................

    有人问 make_html 这个函数在那里: 我现在补充如下:

    在 includes 下的 cls_template.php 加上

    function make_html($filename, $cache_id = ‘‘)
        {
             ob_start();
       $this->display($filename,$cache_id);
       $out = ob_get_contents();
       ob_end_clean();
            return $out;


        }

  • ☆☆☆技术交流群:5684178☆☆☆
  • 上一篇:ecshop修改商品列表缩略图尺寸的方法
  • 下一篇:在ECSHOP后台商品列表中显示品牌的方法
侠客工作室主要承揽网站制作|企业建站|北京网站制作|北京网站建设|北京企业建站|专业仿站|SEO优化等业务
地址:北京市海定区清河水木天成 电话:13718388147 13718388147 传真:13718388147 访问统计:
投诉电话:13718388147 投诉QQ:点击这里给我发消息 客服信箱:1300105556@qq.com 邮编:102200 北京网站建设地图 北京网站建设RSS地图
版权所有 2009-2014侠客工作室【北京网站建设】 京ICP备11021494号-1