为织梦添加***文档功能,需在后台管理系统中进行相应的插件安装或代码修改。
为织梦(DedeCMS)添加***文档的功能,可以通过自定义一个插件或模块来实现,以下是一个详细的步骤指南,包括代码示例和解释:

创建插件目录和文件
在织梦的/plus 目录下创建一个新目录,例如copy_doc,并在该目录下创建一个 PHP 文件,例如copy_doc.php。
// /plus/copy_doc/copy_doc.php
<?php
require_once dirname(__FILE__) . '/../../../include/common.inc.php';
if (!defined('DEDEINC')) {
exit('Request Denied');
}
// 检查是否登录
if (!IsLogin()) {
ShowMsg("请先登录", "/login.php", 0, 1000);
exit();
}
// 获取当前文档ID
$arcid = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($arcid <= 0) {
ShowMsg("无效的文档ID", "", 0, 1000);
exit();
}
// 获取当前文档信息
$dsql = new DedeSql();
$query = "SELECT * FROM dede_archives WHERE id = $arcid";
$result = $dsql>GetOne($query);
if (!is_array($result)) {
ShowMsg("未找到对应的文档", "", 0, 1000);
exit();
}
// 复制文档内容到新的文档
$newArcId = AddNews($result['title'], $result['typeid'], $result['channelid'], $result['ismake']);
if ($newArcId > 0) {
// 复制文章内容
$content = addslashes($result['body']);
$query = "UPDATE dede_archives SET body='$content' WHERE id=$newArcId";
$dsql>ExecuteNoneQuery($query);
// 复制其他字段
$fields = ['flag', 'pubdate', 'senddate', 'arcrank', 'click', 'litpic'];
foreach ($fields as $field) {
$value = isset($result[$field]) ? addslashes($result[$field]) : '';
$query = "UPDATE dede_archives SET $field='$value' WHERE id=$newArcId";
$dsql>ExecuteNoneQuery($query);
}
ShowMsg("文档复制成功", "plus/view.php?aid=$newArcId", 1, 1000);
} else {
ShowMsg("文档复制失败", "", 0, 1000);
}
?>
修改模板文件
在模板文件中添加一个按钮,用于触发***文档的功能,假设我们要在文章详情页添加这个按钮,可以在/templets/default/article_article.htm 文件中添加如下代码:
<div class="btngroup">
<a href="plus/copy_doc/copy_doc.php?id={$id}" class="btn btndefault">复制文档</a>
</div>
测试功能
现在可以登录后台,查看一篇文章的详情页,点击“***文档”按钮,应该会跳转到新的页面,并显示刚刚***的文档。
常见问题解答(FAQs)
Q1: 如何更改***文档后的标题?
A1: 在copy_doc.php 文件中,可以找到AddNews 函数调用的地方,将$result['title'] 修改为你想要的标题即可。
$newTitle = "复制 " . $result['title']; $newArcId = AddNews($newTitle, $result['typeid'], $result['channelid'], $result['ismake']);
Q2: 如何限制只有管理员才能使用***文档的功能?
A2: 可以在copy_doc.php 文件开头添加权限检查代码,只允许管理员用户访问该功能。
// 检查用户权限
if ($cfg_ml>M_Type != 'manage') {
ShowMsg("仅管理员可以使用此功能", "", 0, 1000);
exit();
}
这样,只有管理员用户才能使用***文档的功能。