ecshop生成真静态页html方法
ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态。并且有两种重写方法,在后台的商店设置中,可以选择简单重写和复杂重写。
伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。
但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。
在这里,我们先对首页进行纯静态生成。
ECSHOP是一套很好的PHP开源商城系统,但开源产品总是无法符合各个项目的细节需求。负责人要求每个频道页都静态化,以更好的收录,那我就知道利用dedecms建设一系列的封面模板,然后手动去控制产品的缩略图,至于产品列表页,暂时还没静态化,还在考虑怎么静态化比较好,而商城产品内页静态化则使用以下代码。
- if(file_exists($htmlfile) && (!$updatehtml)){
-
header("HTTP/1.1 301 Moved Permanently");
-
header("Location: {$htmlfile}");
-
}else{
-
$htmlcontent = $smarty->make_html("goods.dwt",$cache_id);
-
if(file_put_contents($htmlfile,$htmlcontent)){
-
header("HTTP/1.1 301 Moved Permanently");
-
header("Location: {$htmlfile}");
- }
- }
- if(file_exists($htmlfile) && (!$updatehtml)){
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: {$htmlfile}");
- }else{
- $htmlcontent = $smarty->make_html("goods.dwt",$cache_id);
- if(file_put_contents($htmlfile,$htmlcontent)){
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: {$htmlfile}");
- }
- }
301转向是否能够将收录的地址改变,这个经过实验是可以的,大家可以site一下我的商城就知道。其实这个静态化方法,我的灵感也是来源于supersite,这套开源系统也是经过动态跳转到静态化,收录还不差,所以就模仿着写。
1.在首页中,$smarty->display('index.dwt', $cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码(参看注释)
$file = 'index.html';//静态网页文件名
$content = $smarty->make_html('index.dwt');//根据index.dwt模板生成网页内容
$filename = ROOT_PATH . $file;//静态网页路径
file_put_contents($filename, $content);//生成文件
echo $content;//输出到页面
这几句放在if (!$smarty->is_cached('index.dwt', $cache_id))判断中 这样可以利用原有的判断来决定是不是重新生成静态页面(不过测试了下是一直重新生成的 这个问题有待继续研究)
//在判断外加上
//echo file_get_contents(ROOT_PATH . 'index.html');//输出静态页面
以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。
首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,
但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层。把产品类别放在根目录,体现产品类别的重要性,易于搜索引擎的
抓取,另外一方面,我们可以把产品放在下个目录中。
类似代码:
$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;
}
分享到:
相关推荐
ECSHOP模板堂首页生成纯静态页免费插件
ecshop2.7.2完全静态化方案V1.1
ECSHOP 301重定向带动态页面跳转到静态页面插件 很多朋友在网站做了伪静态之后不会设置页面的301重定向
2, 区分$include_url_pattern和$exclude_url_pattern,这样就可以对同一个页面区分不同的参数情况来决定是否显示静态页面。例如ecshop的首页index.php,如果只是请求index.php,那么显示静态页面就可以了,但是如果...
ECSHOP 伪静态rewrite3 组件
ecshop伪静态IIS下规则, 最新的比较全的
NULL 博文链接:https://mengdejun.iteye.com/blog/965466
php/cms/ecshop标签生成器
ecshop 静态缓存memcached.txtecshop 静态缓存memcached.txtecshop 静态缓存memcached.txt
本源码450M,下载地址在txt文件里,演示地址:http://www.0766city.com/yuanma/1353.html目前网上流传的ecshop小京东V5.0单仓库版+供应商后台,在线聊天生成静态,B2B2C多商家入驻,随便测试了下,貌似功能非常强悍,...
ecshop虚拟购买记录全自动版 无需管理员操作--ECSHOP插件 1)、管理繁琐,需要上传用户名(收货人)TXT文件,还要输入一些商品ID。 2)、后台查看订单页面,真假订单混合在一起,管理起来很不方便。 主要是因为...
ECSHOP文章页、商品分类页和介绍页、文章分类页title后加上商店名称的方法
ecshop伪静态,IIS下全面支持ecshop伪静态
ecshop2.72 在IIS7环境下配置Rewrite (URL 静态化)规则工具及方法
ecshop评价生成v1.2
ecshop网店系统管理员 爆破 方法ecshop网店系统管理员 爆破 方法ecshop网店系统管理员 爆破 方法ecshop网店系统管理员 爆破 方法ecshop网店系统管理员 爆破 方法ecshop网店系统管理员 爆破 方法ecshop网店系统管理员...
这套模板整合了页面静态缓存+压缩输出功能,但是下载模板后,即使不使用这套模板,经过设置的缓存策略同样会对ECShop当前应用的模板有效。 所以这个功能是可以独立使用的。 下载后,覆盖到EC安装路径下,(EC程序...