永发信息网

ecshop 怎么是商品页生成纯静态页面。是真实存在的,不是伪静态.

答案:1  悬赏:40  手机版
解决时间 2021-01-17 22:11
ecshop 怎么是商品页生成纯静态页面。是真实存在的,不是伪静态.
最佳答案
ecshop生成真静态页html方法

ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态。并且有两种重写方法,在后台的商店设置中,可以选择简单重写和复杂重写。
伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。
但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。
在这里,我们先对首页进行纯静态生成。
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;
}追问非常感谢你的回答function build_uri(........) 这些省略号填啥。我测试不成功啊
................
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
法定代表人出资是自然人投资还是法人投资
成都富士康有那些部门?
上海帝赟实业有限公司怎么样?
朱砂 神砂能和五帝钱带在一起码
新兴县国土资源局执法监察队地址在什么地方,
微分问题,第58题,如图。
公司只是针对个别员工,不安排加班,怎么办
我的苹果六最后的两位字母是CL 是什么版本
如何在proteus中加入步进电机
请问这是什么植物?有点像绿萝,纹理清晰,很
如果限速70公里我开车开到85公里那算超速多少
汇丰晋信大盘股票a 可以买吗
太祖为流矢所中翻译
单选题已知⊙O1的半径为3cm,O1到直线l的距离
海信电视有ULED的,做一个简单的广告语?宣传
推荐资讯
济。的两个读音组词语
临时提高酒量的方法
我就想为什么雾霾越治理越严重
求一首古典音乐,简谱如下; 7.12121212-37.1
上联:以廉耻为耻 下联? 横批?
骁龙653八核怎么样
求老师帮忙
哪种古钱币最值钱 最有收藏价值
想割双眼皮 6.5mm那种自然的 需要开眼角吗
美国在二战后建立了哪三大经济组织及其各自影
办理7天通知存款,利率1.35%,我存5万,7天后
负2j的电势能大还是1j的大,负2j的功大还是1j
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?