- 在织梦CMS中,将多个“文本字段”的内容保存为一个完整的HTML页面。 (最常见的需求)
- 通过织梦CMS,将多个文本内容分别保存为独立的HTML文件。
我将针对这两种情况,为您提供详细的、可操作的解决方案。

(图片来源网络,侵删)
将多个文本字段合并成一个HTML页面(最常用)
这是最常见的需求,比如制作一个产品详情页、文章详情页或一个自定义的单页,页面上有多个部分,每个部分对应一个后台的文本编辑器字段。
核心思路
- 创建数据表:在数据库中为你的内容模型增加多个字段,用于存储不同的文本内容。
- 修改后台模板:在后台的内容编辑界面,为这些新字段添加对应的输入框。
- 修改前台模板:在前台显示页面,调用这些新字段的内容,并用HTML标签将它们组织起来,形成一个完整的页面。
详细操作步骤(以添加“产品特性”和“产品规格”为例)
第1步:为内容模型增加字段
- 登录织梦DedeCMS后台。
- 进入【核心】 -> 【内容模型管理】。
- 找到你想要修改的内容模型(文章模型”或“产品模型”),点击其后面的【管理字段】。
- 点击【添加新字段】。
- 添加第一个字段(产品特性”):
- 字段名:
teatures(英文,不含空格) - :
产品特性(前台和后台显示的名称) - 字段类型:
编辑器(这是关键,可以让你用富文本编辑器,插入图片、格式等) - 是否为必填项:根据需要选择。
- 保存。
- 字段名:
- 添加第二个字段(产品规格”):
- 重复步骤4-5,创建一个名为
specs为“产品规格”的编辑器字段。
- 重复步骤4-5,创建一个名为
- 更新缓存:添加完字段后,系统会提示你“更新表结构成功”,请务必点击后台右上角的【系统】 -> 【一键更新网站】 -> 【更新所有】,让新字段在后台生效。
第2步:修改后台内容编辑模板 (可选但推荐)
默认情况下,新字段会出现在编辑界面的下方,你可以通过修改模板来调整它们的布局。
- 进入【模板】 -> 【默认模板管理】。
- 找到并打开你的内容模型对应的编辑模板,通常是
article_add.htm(文章添加) 或article_edit.htm(文章编辑)。 - 在模板文件中,你会看到类似
{dede:field.body/}的代码,在其下方,你可以手动添加新字段的调用标签,<tr> <td height="24" colspan="2" bgcolor="#f5f5f5"><strong>产品特性</strong></td> </tr> <tr> <td height="24" colspan="2">{dede:field.teatures/}</td> </tr> <tr> <td height="24" colspan="2" bgcolor="#f5f5f5"><strong>产品规格</strong></td> </tr> <tr> <td height="24" colspan="2">{dede:field.specs/}</td> </tr> - 保存模板,现在你去后台编辑文章,就会看到按照你自定义布局排列的“产品特性”和“产品规格”编辑器了。
第3步:修改前台内容显示模板
这是最关键的一步,决定了前台如何展示这些数据。
-
进入【模板】 -> 【默认模板管理】。
(图片来源网络,侵删) -
找到并打开你的内容详情页模板,通常是
article_article.htm。 -
在模板中,你需要用HTML结构来组织这些字段,假设你的页面布局如下:
- 标题:
{dede:field.title/} - 缩略图:
{dede:field.litpic/} - 内容A (产品特性):
{dede:field.teatures/} - 内容B (产品规格):
{dede:field.specs/} {dede:field.body/}
- 标题:
-
修改
article_article.htm文件,将这些内容用<div>或其他标签包裹起来,形成一个结构化的HTML页面。<article class="product-detail"> <h1>{dede:field.title/}</h1> <img src="{dede:field.litpic/}" alt="{dede:field.title/}"> <section class="features"> <h2>产品特性</h2> {dede:field.teatures/} </section> <section class="specs"> <h2>产品规格</h2> {dede:field.specs/} </section> <section class="description"> <h2>产品详情</h2> {dede:field.body/} </section> </article> -
保存模板,当你访问一篇包含了“产品特性”和“产品规格”内容的文章时,前台就会按照你设计的HTML结构来展示它们,浏览器查看源代码,你会发现这就是一个完整的、由多个文本内容组成的HTML页面。
(图片来源网络,侵删)
将多个文本内容分别保存为独立的HTML文件
这个需求相对少见,通常用于生成静态文件、API导出或特定格式的文档,织梦本身的核心机制是“一篇文章一个HTML文件”,但我们可以通过二次开发或特定脚本来实现。
方法A:使用织梦的“批量生成HTML”功能(伪实现)
织梦的“一键更新”或“批量生成”功能,本质上是重新生成所有已存在内容的静态HTML文件,它不会为你的新字段(如 teatures, specs)创建新的独立文件,但它会确保包含这些新字段的页面被正确更新。
这个方法不能“分别保存”,但能确保你的多字段内容所在的页面是最新的。
方法B:编写自定义PHP脚本(真正的解决方案)
如果你确实需要为每个文本字段生成一个独立的HTML文件,你需要写一个PHP脚本。
核心思路:
- 连接数据库。
- 查询出你需要处理的文章数据。
- 循环每一篇文章,为每个你想要的字段(如
teatures,body)创建一个独立的HTML内容。 - 将这个HTML内容写入到服务器的一个指定目录中,文件名可以是
文章ID_字段名.html。
示例代码(需要一定的PHP基础):
<?php
// 引入织梦的配置文件,确保数据库连接正常
// 假设你的脚本放在网站根目录下
require_once (dirname(__FILE__) . "/include/common.inc.php");
// 定义要生成HTML的字段数组
$fields_to_generate = array('body', 'teatures', 'specs');
// 定义生成文件的存放目录
$output_dir = dirname(__FILE__) . '/generated_html/';
if (!is_dir($output_dir)) {
mkdir($output_dir, 0777, true);
}
// 查询所有文章 (可以根据需要添加 where 条件)
$dsql->SetQuery("SELECT id, title FROM `#@__archives`");
$dsql->Execute();
while ($row = $dsql->GetArray()) {
$article_id = $row['id'];
$article_title = $row['title'];
// 查询这篇文章的详细字段内容
$detail_query = "SELECT body, teatures, specs FROM `#@__addonarticle` WHERE aid = '$article_id'";
$detail_row = $dsql->GetOne($detail_query);
if ($detail_row) {
// 循环每个需要生成的字段
foreach ($fields_to_generate as $field) {
$content = $detail_row[$field];
// 如果内容为空,则跳过
if (empty($content)) {
continue;
}
// 创建一个简单的HTML页面结构
$html_content = <<<HTML
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">{$article_title} - {$field}</title>
</head>
<body>
<h1>{$article_title} - {$field}</h1>
<div class="content">
{$content}
</div>
</body>
</html>
HTML;
// 定义输出文件名
$filename = $output_dir . $article_id . '_' . $field . '.html';
// 将HTML内容写入文件
file_put_contents($filename, $html_content);
echo "已生成: " . $filename . "<br>";
}
}
}
echo "所有文件生成完毕!";
?>
如何使用这个脚本:
- 将上述代码保存为一个PHP文件,
generate_html.php。 - 通过FTP将它上传到你的织梦网站根目录。
- 在浏览器中访问
http://你的域名/generate_html.php。 - 脚本会运行,并在网站根目录下创建一个
generated_html文件夹,里面会包含类似1_body.html,1_teatures.html,2_body.html等独立文件。
| 需求 | 推荐方案 | 优点 | 缺点 |
|---|---|---|---|
| 将多个文本内容合并成一个页面展示 | 场景一:修改模型字段和前台模板 | 官方标准做法,稳定、易于维护,符合CMS设计理念 | 需要理解织梦的模板和模型机制 |
| 将多个文本内容分别保存为独立HTML文件 | 场景二:编写自定义PHP脚本 | 功能强大,高度灵活,可实现任何自定义逻辑 | 需要PHP编程能力,不属于织梦常规操作,维护成本高 |
对于绝大多数用户来说,场景一的解决方案是正确且唯一的答案,请根据您的具体需求选择合适的方法。
