用户
 找回密码
 入住 CI 中国社区
搜索
查看: 33683|回复: 45
收起左侧

[其它 Other] 给CI配台兰博基尼,扩展全静态HTML,支持多皮肤+自动更新!

    [复制链接]
发表于 2009-3-19 00:33:50 | 显示全部楼层 |阅读模式
本帖最后由 visvoy 于 2009-3-23 19:48 编辑

不需要修改CI核心文件,不需要修改你的controller代码,实现全站静态html
支持即时切换皮肤,图像文件负载平衡(就是把图片都迁移到另外一个服务器),
而且通过设置 ->output->cache() 就能自动更新过期的html文件

准备工作:
1. CI系统一份,版本170或者171不限,更低版本我没测试哦
2. Apache一个,注意CI的网站在Apache httpd.conf 里面的配置要改一下,
   把 AllowOverride None 改成 AllowOverride All ,不会改的童鞋。。。囧rz
3. 解压缩软件一条,不然没法解压附件~
4. 下载三个附件,解压的 .htaccess.zip 是url rewrite的配置,放到CI网站根目录
5. 解压的config.php(后面一堆汉字。。。)是CI配置文件增加的部分,
   请添加到 application/config.php 文件里面
6. 解压application.zip,获得目录application,覆盖你CI的application文件夹
7. 没有了~

里面有一个测试controller,可以执行 http://你的站点/welcome.html 查看效果,嘿嘿

注意事项:
1. 你至少需要设置一个皮肤主题名称,并且网站根目录要有对应的主题目录,
    比如设置default_theme=abc,那么网站根目录要有 abc 这个目录
2. 把你所有的图片,css,js脚本,统统放到 /abc/img/ 目录里面
    因为生成html时候,后台会自动把 /abc/img/ 的链接替换成绝对路径
3. 你的views文件需要根据contrller名字,分目录保存,例如:
    controller=hello,views目录应当是:application/views/abc/hello/
    如果method=kitty,那么对应views文件应当是:...views/abc/hello/kitty.php
4. views中的链接地址写法改为:<a href='/abc/hello/kitty.html'>xx</a>
5. 缓存用法不变,还是 ->output->cache(10) ,对应的 html 文件会被缓存10分钟

enjoy~

.htaccess.zip

274 Bytes, 下载次数: 490

application.zip

8.79 KB, 下载次数: 527

config.php增加的部分,请添加到config.php里面.txt.zip

1.31 KB, 下载次数: 483

评分

参与人数 2威望 +10 收起 理由
百城易购 + 5 很给力!
Hex + 5 原创内容

查看全部评分

发表于 2014-5-9 00:11:33 | 显示全部楼层
现在论坛有点冷清
 楼主| 发表于 2009-3-19 00:34:01 | 显示全部楼层

一些补充,如何增减皮肤

本帖最后由 visvoy 于 2009-3-23 19:41 编辑

配置文件有中文说明,耐心滴看吧^o^

如果没有给controller设置缓存时间,那么其对应生成的html文件将保存1个月,
1个月之后html会再次刷新html

网站生成静态html的格式:
http://CI站点/皮肤名称/controller名字/method名字/其他segment.html
比如:http://CI站点/myskin/register/index/yes.html (yes是同意注册条款。。。)

像news这种带分页的没问题,照样全静态:
http://CI站点/skin_blue/news/read/1.html

这个扩展修正了缓存文件攻击漏洞,可以放心的开缓存

增减皮肤很简单
比如要增加一套新皮肤,名字是 dark ,按照下面1./2.即可
1. 将 html 文件放到 application/views/dark/ 目录下面
2. 把 图像/css/js/flash 文件放到 网站目录/dark/img/ 目录下面

注意 dark 皮肤里的 html 文件中的所有链接要写成 /dark/controller/action.html 的形式,然后静态化就可以将这些链接转成网站的绝对地址
发表于 2009-3-19 08:32:12 | 显示全部楼层
最爱 兰博基尼
 楼主| 发表于 2009-3-20 02:25:32 | 显示全部楼层
使用有么有问题的,大家说一下哇
代码区好冷清的说
发表于 2009-3-20 09:27:47 | 显示全部楼层
呵呵。。还没用到,辛苦了!
发表于 2009-3-20 20:42:00 | 显示全部楼层
呵呵,有时间用用看
发表于 2009-3-23 15:32:24 | 显示全部楼层
敢问楼主,皮肤往往与HTML相关,也就是VIEW中的HTML,不同的皮肤应该也会有不同的VIEW结构

如果增加一套皮肤,VIEW的目录是如何存放的?
 楼主| 发表于 2009-3-23 19:38:17 | 显示全部楼层
增减皮肤很简单,比如要增加一套新皮肤,名字是 dark
将 html 文件放到 application/views/dark/ 目录下面
把 图像/css/js/flash 文件放到 网站目录/dark/img/ 目录下面
就可以了

注意 dark 皮肤里的 html 文件中的所有链接要写成 /dark/controller/action.html 的形式,然后静态化就可以将这些链接转成网站的绝对地址
发表于 2009-3-25 15:31:00 | 显示全部楼层
如果要静态化,那V层不如用Smarty方便点
 楼主| 发表于 2009-3-25 22:27:14 | 显示全部楼层
本帖最后由 visvoy 于 2009-3-26 01:12 编辑

这个不需要修改Controller和View,仅仅把文件放进你的CI网站就能全静态,

CI挂上Smarty就没有速度优势了,class+compiler=150kb,加载很费资源

Smarty若要实现定期更新静态html呢?也是要扩展,似乎没有直接用这个方便

本版积分规则