`
sealbird
  • 浏览: 586867 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

创建静态HTML文件的类和方法提议

    博客分类:
  • yii
 
阅读更多
不知道在Yii中有没有自动生成静态HTML文件的方法。这在大型门户网站内容发布中经常使用到。如果没有,建议qiang整合之,有很好的价值,比缓存还好使一些。如果有,请告示如何使用。

静态文件生成,一般通常有两种机制,一种是后台触发生成,一种是前台访问,如果没有则调用静态文件生成。这些生成的文件最好可以存储在指定的Apache文件目录或者Nginx服务目录下,使之可以用纯HTML格式访问,而无需通过PHP解释执行。

另外如果实现图片服务器分离,需要把图片传输到远程指定服务器上,不清楚有无解决方案



PHP Yii 中文群 群号:38352603中离家出走大侠的贡献方案,不过离家说比较山寨,但总比没有强,供参考和讨论,提供更多场景供qiang完善。

/**
* 生成一个html文件
* @param Book $book
* @param Chapter $chapter
* @return void
*/
public static function createHtml($book, $chapter)
{
$webAppPath = Yii::app()->params['webAppPath'];
$suffix = Yii::app()->params['staticSuffix'];
$typeId = IFileHelper::selfType($book->bookid);
$htmlFile = $webAppPath . 'read' . DS . $typeId . DS . $book->bookid . DS . $chapter->chapterid . $suffix;
$readTemplateFile = $webAppPath . 'themes' . DS . 'web' . DS . 'views' . DS . 'book' . DS . 'read.php';

if ($chapter->prevChapter($chapter->chapterid, $chapter->bookid))
{
$prevUrl = '/read/' . $typeId . '/' . $book->bookid . '/' . $chapter->prevChapter($chapter->chapterid, $chapter->bookid)->chapterid . $suffix;
}

if ($chapter->nextChapter($chapter->chapterid, $chapter->bookid))
{
$nextUrl = '/read/' . $typeId . '/' . $book->bookid . '/' . $chapter->nextChapter($chapter->chapterid, $chapter->bookid)->chapterid . $suffix;
}
$enterUrl = '/chapter/' . $book->bookid . $suffix;
$homeUrl = '/';
$showUrl = '/show/' . $book->bookid . $suffix;
$chapterUrl = '/chapter/' . $book->bookid . $suffix;

$chapterContent = $chapter->content;
ob_start();
include($readTemplateFile);
$content = ob_get_clean();
IFileHelper::createFile($htmlFile, $content);
} 
分享到:
评论

相关推荐

    40个重要的HTML5面试题及答案

    - **方法**:通过`new Worker('worker.js')`创建一个新的Worker对象。 #### 终止Web Worker - **方法**:使用`worker.terminate()`终止一个正在运行的Worker线程。 #### HTML5服务发送事件 - **目的**:为实时...

    个人网站设计方案报告.doc

    (3)字段名称能够用汉字,也能够用字母、数字和下划线,命名规则和变量类似,考虑系统兼容问题,提议不要用汉字。 (4)至于数据类型,常见有“文本”、“备注”、“数字”、“日期/时间”、“是/否”和“自动编号...

    projeto-site:在git和githb课程中创建的网站设计

    - Pull请求:当有多个开发者同时工作时,他们可以通过创建Pull请求来提议合并代码更改,等待其他团队成员审查和合并。 - 问题追踪:GitHub的Issue功能用于记录项目中的待办事项、错误或讨论,帮助团队协作和管理...

    demo:静态网站,突出显示FeaturePeek功能

    在这种情况下,我们可以推测该仓库包含HTML文件(用于页面结构)、CSS文件(用于样式设计)和JavaScript文件(用于功能实现),以及其他可能的配置或资源文件。 综合以上信息,我们可以总结出以下知识点: 1. **...

    一个用JSP编写的毕业论文选题系统

    通过JSP,开发者可以将静态内容与动态生成的内容相结合,创建出交互式的Web应用。JSP页面通常包含HTML、CSS以及嵌入其中的Java代码,这些代码负责处理服务器端的逻辑,如数据处理和用户验证。 系统设计可能包含以下...

    fanhan-inside.github.io:个人博客

    这些工具可以将Markdown或HTML模板转换为静态HTML文件,简化了网站的管理和部署流程。在"fanhan-inside.github.io-master"这个文件名中,"master"通常是GitHub仓库的主分支,这可能意味着博客的源代码是以Markdown...

    wlawt.github.io

    - **Jekyll简介** Jekyll是一款静态站点生成器,常与GitHub Pages结合使用,能将Markdown、Textile或者其他格式的文本转换成静态HTML和CSS网站。 - **配置 `_config.yml`** 这个文件是Jekyll站点的核心配置,包含...

    promcon.github.io:对于更改,请在https上打开请求请求

    3. **静态网站生成器**:如Jekyll和Hugo,它们可以将Markdown、YAML、纯文本和模板文件转换为静态HTML、CSS和JavaScript文件,这些文件可以直接部署到服务器上,无需运行后端服务器。这对于个人博客、文档站点或者...

    PortletSpec_20

    Portlet API是JSR 286规范定义的一组接口和类,用于portlet的开发。这些API包括但不限于: - **渲染API**:用于处理portlet的渲染请求。 - **事件API**:用于处理portlet之间的事件传递。 - **资源API**:用于处理...

    project-codelou:代码路易斯维尔的项目要求

    - 确保项目文件按照逻辑和功能进行分类,如将HTML文件放在一个特定的目录下,CSS和JavaScript文件分别在各自的文件夹内。 7. **HTML基础** - 作为标签之一,HTML(超文本标记语言)是网页内容的基石。 - 学习...

    manifestgen:用于Firefox OS应用程序的清单生成器

    开发者可能会使用HTML来创建应用的用户界面,同时结合manifestgen生成的manifest.json文件来定义应用的行为和特性。 总的来说,manifestgen是一个有助于Firefox OS开发者管理应用元数据的工具,它简化了manifest....

    精易模块[源码] V5.15

    7、新增“类_线程池1”中的“等待”方法。 8、修复“编码_Utf8到Ansi“分配内存失败BUG,感谢易友【仁鹰】反馈。 9、改善“网页_访问”中最后一个参数(代理地址)为“”符号时无法访问网页,感谢易友【z00544】反馈...

    oscar-castellanos.github.io:Test Github页面

    此外,它还支持Jekyll,一个静态站点生成器,能够将Markdown、YAML头信息和Liquid模板转换为静态HTML页面。这使得开发者可以创建具有动态元素的静态网站,如博客、简历等。 3. **Git版本控制**: Git是一种分布式...

    official-hawks.github.io:JOH的官方网站

    2. **Pull Request**:如果"JOH"是一个开源项目,那么贡献者可能会通过创建Pull Request来提议修改,等待项目维护者的审查和合并。 3. **持续集成/持续部署(CI/CD)**:一些项目可能使用Jekyl、Hugo等静态站点生成器...

    上传代码霓霓

    3. Pull Request(PR)与代码审查:在协作开发中,通过创建Pull Request,一个开发者可以将自己的更改提议合并到主分支。其他团队成员可以查看并评论这些更改,确保代码质量和符合项目标准。代码霓霓在这里可能是...

    webrtc-examples

    - HTML文件:这些文件包含WebRTC的用户界面,用于启动和管理视频通话。 - JavaScript文件:这些文件实现了WebRTC API的逻辑,如获取本地媒体流、创建RTCPeerConnection、处理信令以及处理数据通道等。 - CSS文件:...

    cyberdiscovery.github.io:一个展示“网络发现”社区工作的网站!

    在这个项目中,HTML文件可能包含了网页的基本布局和内容结构,是用户在浏览器中看到的网页基础。 **GitHub Pages服务** GitHub Pages是GitHub提供的一项免费服务,允许用户托管静态网站。这些网站可以是个人博客、...

    simra-project.github.io:SimRa项目网站

    1. HTML文件:定义网页结构。 2. CSS文件:控制网页样式和布局。 3. JavaScript文件:实现网页交互逻辑和功能。 4. JSON或其他配置文件:存储项目配置信息。 5. 图片、字体和其他资源:用于网站的视觉呈现。 6. ...

    willcrichton.github.io:Github网站

    GitHub是一个面向开源及私有软件项目的托管平台,它广泛使用Git作为版本控制系统,用户可以通过创建仓库(Repository)来存放代码,并通过网页界面进行浏览、编辑和管理。"willcrichton.github.io"是用户名与自定义...

    dcr-and-alert-ionic:用于dcr和警报的示例应用

    TypeScript是JavaScript的一个超集,它引入了静态类型和面向对象的编程概念,提高了代码的可维护性和可读性。在 Ionic 应用中使用 TypeScript 可以提供更好的类型检查和代码完成,降低编程错误,并且方便大型项目的...

Global site tag (gtag.js) - Google Analytics