ecshop 如何根据自定义 生成静态页面

ecshop 如何根据自定义 生成静态页面,第1张

ecshop伪静态(url重写)的设置方法

ecshop模板堂(ecmoban.com) / 2013-01-22

ecshop伪静态设置方法,伪静态其实是ecshop非常好用的一个功能,他可以提高百度收录的速度很利于seo优化

那么如何设置伪静态呢?

商店设置-基本设置-url重写里 勾选“简单重写”或者“复杂重写”

这里推荐用简单重写因为这样路径不会太长,对搜索引擎也更友好。

设置之后确定就可以,如果出现页面打不开的情况注意一下两点:

1,确定你的服务器已经安装re-write模块,也叫做简单重写模块,需要apache服务器支持,如果不确定问下空间商

2,同时请确认你已经将htaccess.txt重命名为.htaccess,(注意前面有一个".") htaccess.txt这个文件是在程序根目录里面的

注:如果是吧htaccess.txt文件下载下来修改的话需要用编辑器先打开此文件在另存.htaccess      注意哈保存的时候看清楚后面是没有那个  .txt   的啦

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)

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

functionbuild_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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11453791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存