将动态的PHP页面(如 list.php?tid=1)预先转换成静态的HTML文件(如 html/1/index.html),以便用户访问时,服务器直接返回HTML文件,速度更快,对搜索引擎也更友好。

(图片来源网络,侵删)
我们将从两个方面来讲解:
- 后台手动生成:一次性生成所有或指定栏目的HTML。
- 自动生成:通过修改模板,让栏目在更新内容时自动生成HTML。
后台手动生成HTML
这是最直接、最常用的方法,适用于网站初次上线、内容大量更新或需要重新生成整个网站时。
步骤:
-
登录织梦后台:使用你的管理员账号登录。
-
进入“生成栏目”页面:
(图片来源网络,侵删)- 在左侧菜单栏中,找到并点击 “生成” 选项。
- 在下拉菜单中,选择 “生成栏目”。
-
选择生成选项:
- 栏目选项:这是最关键的一步,你可以选择生成哪些栏目。
- 选择栏目:默认是“仅选择当前栏目”,你可以点击它,弹出一个窗口,勾选你想要生成HTML的栏目,可以是单个、多个或全选。
- 生成所有栏目:勾选此项,将忽略上面的“选择栏目”,生成所有栏目的HTML。
- 生成子栏目:如果你勾选了某个顶级栏目,并勾选此项,那么该栏目及其所有下级栏目的HTML都会被生成,这对于生成一个完整的频道网站非常有用。
- 高级选项:
- 栏目生成规则:通常使用默认的规则即可,织梦默认的规则是
栏目目录/index.html,一个ID为5的栏目,会生成在/html/5/index.html,你可以自定义,但需要确保你的模板文件(list_*.htm)中的路径调用与之匹配。 - 生成HTML文件:默认勾选,表示生成
.html文件,如果取消勾选,织梦会生成一个.php文件,内容依然是静态的,但文件后缀是动态的,这不符合静态化的初衷,通常保持默认即可。 - 不生成栏目页:如果你只想更新列表页里的文章,可以勾选此项,只更新文章页,不重新生成栏目列表页本身。
- 栏目生成规则:通常使用默认的规则即可,织梦默认的规则是
- 栏目选项:这是最关键的一步,你可以选择生成哪些栏目。
-
开始生成:
- 设置好所有选项后,点击页面底部的 “开始生成” 按钮。
- 系统会开始处理,你可以在页面上看到生成进度和日志,如果栏目内容很多,可能需要一些时间。
-
验证结果:
- 生成完成后,去你网站存放静态文件的目录(默认是
/html/)下查看。 - 检查对应的栏目文件夹下是否生成了
index.html文件。 - 在浏览器中访问这个栏目的地址(
http://www.yoursite.com/html/5/index.html),看看页面是否正常显示。
- 生成完成后,去你网站存放静态文件的目录(默认是
自动生成HTML(推荐)
手动生成适合一次性操作,但日常更新内容时,每次都要手动去生成栏目非常麻烦,通过修改模板,可以实现“更新即生成”的自动化流程。
核心原理:
织梦的模板文件中,有一个特殊的标签 dede:arclist(用于栏目列表页)和 dede:list(用于文章列表页),它们有一个属性 ismake,控制着由它们调用的文章是否在发布时自动生成HTML。
步骤:
-
找到并打开你的栏目列表页模板:
- 这个模板文件通常位于织梦后台的 “模板” -> “模板管理” -> “默认模板管理” 中。
- 找到与你所用模板风格对应的 “栏目列表页模板”,文件名通常是
list_*.htm(list_default.htm)。 - 点击 “修改” 按钮来编辑它。
-
修改
dede:list或dede:arclist:- 在你的模板文件中,找到用于循环输出文章列表的标签,通常是
{dede:list}。 - 在
{dede:list}标签里,添加ismake='yes'属性。
修改前:
{dede:list} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list}修改后(自动生成):
{dede:list ismake='yes'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list}ismake='yes'的作用是:当通过后台发布、更新或删除一篇属于此栏目的文章时,织梦会自动重新生成这个栏目的列表页HTML文件。
- 在你的模板文件中,找到用于循环输出文章列表的标签,通常是
-
保存模板:
- 修改完成后,点击 “保存” 按钮。
-
测试自动生成:
- 进入 管理” -> “添加文档”,为这个栏目添加一篇新文章。
- 发布成功后,直接访问该栏目的静态HTML地址(如
/html/5/index.html)。 - 如果能看到你刚刚添加的新文章,说明自动生成功能已经生效了。
重要提示:
{dede:list}和{dede:arclist}的区别:{dede:list}:主要用于栏目列表页,循环调用当前栏目下的所有文章。修改它并添加ismake='yes',可以实现更新文章时自动重新生成当前栏目页。{dede:arclist}:功能更强大,可以跨栏目调用文章,常用于首页、首页封面等地方。修改它并添加ismake='yes',可以实现更新被调用的文章时,自动重新生成调用它的那个页面(比如首页)。
- 性能考虑:如果你的网站文章非常多,每次更新一篇文章都去重新生成整个栏目列表,可能会对服务器造成一定压力,但对于大多数中小型网站来说,这是完全没问题的,也是织梦的标准做法。
常见问题与最佳实践
-
为什么生成HTML后,访问的还是动态页面?
- 原因:你的网站开启了“动态浏览”模式。
- 解决方法:进入后台 “系统” -> “系统基本参数” -> “核心设置”,找到 “是否使用伪静态” 选项,确保它被设置为“是”(或者根据你的需求选择“否”,但“是”是SEO推荐选项),检查你的 “栏目目录默认主页命名规则” 和 “列表命名规则”,确保它们和你生成的HTML文件名一致(通常是
index.html)。
-
栏目页不更新,文章页更新了怎么办?
- 原因:你的模板文件里
{dede:list}标签没有加上ismake='yes'属性。 - 解决方法:按照第二部分的说明,修改你的
list_*.htm模板文件,加上ismake='yes'。
- 原因:你的模板文件里
-
最佳实践总结:
- 网站上线前:使用后台“生成栏目”功能,一次性生成所有栏目的HTML,确保网站是静态的。
- 日常维护:修改所有
list_*.htm模板,为{dede:list}标签加上ismake='yes',实现文章更新时栏目页的自动更新。 - 修改栏目后:如果你修改了栏目的名称、简介或排序,最好手动去“生成栏目”页面,重新生成一下这个栏目的HTML,以确保页面显示的是最新信息。
- 检查目录权限:确保你的网站
/html/目录以及其子目录有Web服务器的写入权限,否则无法生成HTML文件。
通过以上方法,你就可以完全掌握织梦CMS的栏目HTML生成,让你的网站既高效又易于维护。
