不知道在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);
}
分享到:
相关推荐
- **方法**:通过`new Worker('worker.js')`创建一个新的Worker对象。 #### 终止Web Worker - **方法**:使用`worker.terminate()`终止一个正在运行的Worker线程。 #### HTML5服务发送事件 - **目的**:为实时...
(3)字段名称能够用汉字,也能够用字母、数字和下划线,命名规则和变量类似,考虑系统兼容问题,提议不要用汉字。 (4)至于数据类型,常见有“文本”、“备注”、“数字”、“日期/时间”、“是/否”和“自动编号...
- Pull请求:当有多个开发者同时工作时,他们可以通过创建Pull请求来提议合并代码更改,等待其他团队成员审查和合并。 - 问题追踪:GitHub的Issue功能用于记录项目中的待办事项、错误或讨论,帮助团队协作和管理...
在这种情况下,我们可以推测该仓库包含HTML文件(用于页面结构)、CSS文件(用于样式设计)和JavaScript文件(用于功能实现),以及其他可能的配置或资源文件。 综合以上信息,我们可以总结出以下知识点: 1. **...
通过JSP,开发者可以将静态内容与动态生成的内容相结合,创建出交互式的Web应用。JSP页面通常包含HTML、CSS以及嵌入其中的Java代码,这些代码负责处理服务器端的逻辑,如数据处理和用户验证。 系统设计可能包含以下...
这些工具可以将Markdown或HTML模板转换为静态HTML文件,简化了网站的管理和部署流程。在"fanhan-inside.github.io-master"这个文件名中,"master"通常是GitHub仓库的主分支,这可能意味着博客的源代码是以Markdown...
- **Jekyll简介** Jekyll是一款静态站点生成器,常与GitHub Pages结合使用,能将Markdown、Textile或者其他格式的文本转换成静态HTML和CSS网站。 - **配置 `_config.yml`** 这个文件是Jekyll站点的核心配置,包含...
3. **静态网站生成器**:如Jekyll和Hugo,它们可以将Markdown、YAML、纯文本和模板文件转换为静态HTML、CSS和JavaScript文件,这些文件可以直接部署到服务器上,无需运行后端服务器。这对于个人博客、文档站点或者...
Portlet API是JSR 286规范定义的一组接口和类,用于portlet的开发。这些API包括但不限于: - **渲染API**:用于处理portlet的渲染请求。 - **事件API**:用于处理portlet之间的事件传递。 - **资源API**:用于处理...
- 确保项目文件按照逻辑和功能进行分类,如将HTML文件放在一个特定的目录下,CSS和JavaScript文件分别在各自的文件夹内。 7. **HTML基础** - 作为标签之一,HTML(超文本标记语言)是网页内容的基石。 - 学习...
开发者可能会使用HTML来创建应用的用户界面,同时结合manifestgen生成的manifest.json文件来定义应用的行为和特性。 总的来说,manifestgen是一个有助于Firefox OS开发者管理应用元数据的工具,它简化了manifest....
7、新增“类_线程池1”中的“等待”方法。 8、修复“编码_Utf8到Ansi“分配内存失败BUG,感谢易友【仁鹰】反馈。 9、改善“网页_访问”中最后一个参数(代理地址)为“”符号时无法访问网页,感谢易友【z00544】反馈...
此外,它还支持Jekyll,一个静态站点生成器,能够将Markdown、YAML头信息和Liquid模板转换为静态HTML页面。这使得开发者可以创建具有动态元素的静态网站,如博客、简历等。 3. **Git版本控制**: Git是一种分布式...
2. **Pull Request**:如果"JOH"是一个开源项目,那么贡献者可能会通过创建Pull Request来提议修改,等待项目维护者的审查和合并。 3. **持续集成/持续部署(CI/CD)**:一些项目可能使用Jekyl、Hugo等静态站点生成器...
3. Pull Request(PR)与代码审查:在协作开发中,通过创建Pull Request,一个开发者可以将自己的更改提议合并到主分支。其他团队成员可以查看并评论这些更改,确保代码质量和符合项目标准。代码霓霓在这里可能是...
- HTML文件:这些文件包含WebRTC的用户界面,用于启动和管理视频通话。 - JavaScript文件:这些文件实现了WebRTC API的逻辑,如获取本地媒体流、创建RTCPeerConnection、处理信令以及处理数据通道等。 - CSS文件:...
在这个项目中,HTML文件可能包含了网页的基本布局和内容结构,是用户在浏览器中看到的网页基础。 **GitHub Pages服务** GitHub Pages是GitHub提供的一项免费服务,允许用户托管静态网站。这些网站可以是个人博客、...
1. HTML文件:定义网页结构。 2. CSS文件:控制网页样式和布局。 3. JavaScript文件:实现网页交互逻辑和功能。 4. JSON或其他配置文件:存储项目配置信息。 5. 图片、字体和其他资源:用于网站的视觉呈现。 6. ...
GitHub是一个面向开源及私有软件项目的托管平台,它广泛使用Git作为版本控制系统,用户可以通过创建仓库(Repository)来存放代码,并通过网页界面进行浏览、编辑和管理。"willcrichton.github.io"是用户名与自定义...
TypeScript是JavaScript的一个超集,它引入了静态类型和面向对象的编程概念,提高了代码的可维护性和可读性。在 Ionic 应用中使用 TypeScript 可以提供更好的类型检查和代码完成,降低编程错误,并且方便大型项目的...