发帖添加作者水印 发帖添加作者水印pc+手机版v1.2(youyacao_watermark)
本插件是发帖打上自己的水印,本功能参考腾讯企鹅号,知乎和csdn,本功能有助于作者积极发帖,曾经发内容均是社区自身的水印如今可以设置为自己的水印,增强知识产权文字归属感,有利于站长运营社区所有作者们自行去分享和推广自己的帖子。后台配置默认文字,效果即为 作者ID名@默认文字
例如:
优雅草
ID为 垂死挣扎的老八
那么得到
垂死挣扎的老八@优雅草
后台可以自定义配置字体,颜色(带颜色选择器),间距,角度,大小
字体可自己上传字体至youyacao_watermark\template\font 目录
要实现发帖时自动添加作者水印的功能,可以参考以下步骤进行开发和配置。这个功能的核心是在用户发帖时,自动在帖子内容中添加一个水印,水印的内容可以是作者ID和自定义的文字组合。
### 1. 插件目录结构
首先,确保插件的目录结构如下:
youyacao_watermark/
├── template/
│ ├── font/// 存放自定义字体文件
│ └── watermark.tpl// 水印模板文件
├── youyacao_watermark.class.php// 插件主类文件
└── youyacao_watermark.inc.php// 插件配置文件
### 2. 后台配置
在后台配置中,站长可以设置默认的文字、字体、颜色、间距、角度和大小等参数。这些配置可以通过插件的配置文件 `youyacao_watermark.inc.php` 来实现。
// youyacao_watermark.inc.php
$config = array(
'default_text' => '优雅草',// 默认文字
'font_color' => '#000000',// 字体颜色
'font_size' => 20,// 字体大小
'font_angle' => 0,// 字体角度
'font_spacing' => 10,// 字体间距
'font_file' => 'arial.ttf'// 默认字体文件
);
### 3. 水印生成逻辑
在用户发帖时,插件会自动生成水印并将其添加到帖子内容中。可以在 `youyacao_watermark.class.php` 中实现这个逻辑。
// youyacao_watermark.class.php
class plugin_youyacao_watermark {
function post_submit_end($param) {
global $_G;
// 获取作者ID和用户名
$author_id = $_G['uid'];
$author_name = $_G['username'];
// 获取后台配置
$config = include 'youyacao_watermark.inc.php';
// 生成水印文字
$watermark_text = $author_name . '@' . $config['default_text'];
// 生成水印图片
$font_file = 'template/font/' . $config['font_file'];
$font_size = $config['font_size'];
$font_color = $config['font_color'];
$font_angle = $config['font_angle'];
$font_spacing = $config['font_spacing'];
// 使用GD库生成水印图片
$image = imagecreatetruecolor(200, 50);
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, hexdec(substr($font_color, 1, 2)), hexdec(substr($font_color, 3, 2)), hexdec(substr($font_color, 5, 2)));
imagefilledrectangle($image, 0, 0, 199, 49, $background_color);
imagettftext($image, $font_size, $font_angle, 10, 35, $text_color, $font_file, $watermark_text);
// 保存水印图片
$watermark_image_path = 'data/attachment/watermark/' . $author_id . '_watermark.png';
imagepng($image, $watermark_image_path);
imagedestroy($image);
// 将水印图片添加到帖子内容中
$param['message'] .= '<img src="' . $watermark_image_path . '" alt="水印" />';
return $param;
}
}
### 4. 模板文件
在 `template/watermark.tpl` 中,可以定义水印的显示样式。
<!-- template/watermark.tpl -->
<div class="watermark">
<img src="{watermark_image_path}" alt="水印" />
</div>
### 5. 插件安装与卸载
在插件的安装和卸载过程中,需要创建和删除相关的目录和文件。
// youyacao_watermark.class.php
function install() {
// 创建水印图片存放目录
if (!is_dir('data/attachment/watermark')) {
mkdir('data/attachment/watermark', 0777, true);
}
}
function uninstall() {
// 删除水印图片存放目录
if (is_dir('data/attachment/watermark')) {
rmdir('data/attachment/watermark');
}
}
### 6. 插件启用与禁用
在插件启用和禁用时,可以添加一些额外的逻辑,比如清理缓存或更新数据库。
// youyacao_watermark.class.php
function enable() {
// 插件启用时的逻辑
}
function disable() {
// 插件禁用时的逻辑
}
### 7. 测试与调试
在开发完成后,务必进行充分的测试,确保水印功能在各种情况下都能正常工作。特别是要测试不同字体、颜色、大小和角度的组合,确保水印显示效果符合预期。
### 8. 发布与更新
在插件开发完成后,可以将其打包并发布到 DZ插件网(https://www.dz-x.net/)供站长下载和使用。后续如果有更新或修复,也可以通过该平台发布新版本。
### 总结
通过以上步骤,你可以实现一个发帖时自动添加作者水印的插件。这个插件不仅可以帮助站长增强社区内容的知识产权保护,还能激励作者积极发帖和分享内容。如果你在开发过程中遇到任何问题,可以参考 Discuz 开发手册(https://addon.dismall.com/library/)获取更多帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 要实现发帖时自动添加作者水印的功能,可以通过开发一个Discuz插件来实现。以下是一个基本的实现思路和步骤:
### 1. 插件结构
首先,创建一个插件目录 `youyacao_watermark`,并在其中创建以下文件和目录结构:
youyacao_watermark/
├── plugin/
│ └── youyacao_watermark.class.php
├── template/
│ ├── font/
│ └── youyacao_watermark.htm
├── install.php
└── uninstall.php
### 2. 插件安装脚本
在 `install.php` 中编写插件的安装脚本,用于创建插件所需的数据库表或配置项。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_youyacao_watermark` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`watermark_text` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOF;
runquery($sql);
$finish = TRUE;
?>
### 3. 插件卸载脚本
在 `uninstall.php` 中编写插件的卸载脚本,用于清理插件安装时创建的数据。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = "DROP TABLE IF EXISTS `pre_youyacao_watermark`";
runquery($sql);
$finish = TRUE;
?>
### 4. 插件主类
在 `plugin/youyacao_watermark.class.php` 中编写插件的主类,处理插件的逻辑。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_youyacao_watermark {
public function post_attach_insert($param) {
global $_G;
$uid = $_G['uid'];
$username = $_G['username'];
$default_text = '优雅草'; // 后台配置的默认文字
$watermark_text = $username . '@' . $default_text;
// 获取帖子内容
$post = C::t('forum_post')->fetch($param['pid']);
$content = $post['message'];
// 添加水印
$content .= "\n\n" . $watermark_text;
// 更新帖子内容
C::t('forum_post')->update($param['pid'], array('message' => $content));
}
}
?>
### 5. 后台配置页面
在 `template/youyacao_watermark.htm` 中编写插件的后台配置页面。
<form method="post" action="admin.php?action=plugins&operation=config&do=youyacao_watermark">
<table class="tb tb2 ">
<tr>
<th colspan="2" class="partition">水印设置</th>
</tr>
<tr>
<td class="td27">默认文字:</td>
<td class="vtop rowform"><input type="text" name="default_text" value="{$_G['setting']['youyacao_watermark_default_text']}" class="txt"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" class="btn" value="提交"></td>
</tr>
</table>
</form>
### 6. 插件配置保存
在 `plugin/youyacao_watermark.class.php` 中添加配置保存的逻辑。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_youyacao_watermark {
public function config() {
global $_G;
if (submitcheck('configsubmit')) {
$default_text = $_GET['default_text'];
C::t('common_setting')->update('youyacao_watermark_default_text', $default_text);
updatecache('setting');
cpmsg('设置更新成功', 'action=plugins&operation=config&do=youyacao_watermark', 'succeed');
}
showformheader('plugins&operation=config&do=youyacao_watermark');
showtableheader();
showsetting('默认文字', 'default_text', $_G['setting']['youyacao_watermark_default_text'], 'text');
showtablefooter();
showformfooter();
}
}
?>
### 7. 字体上传
用户可以将自定义字体上传到 `youyacao_watermark/template/font/` 目录中,插件可以通过读取该目录中的字体文件来应用自定义字体。
### 8. 水印效果
在 `plugin/youyacao_watermark.class.php` 中,可以通过GD库或Imagick库来实现水印的添加,包括字体、颜色、间距、角度、大小等设置。
### 9. 插件启用
将插件上传到Discuz的 `source/plugin/` 目录下,然后在Discuz后台启用插件。
### 10. 测试
在发帖时,插件会自动在帖子内容中添加作者的水印信息。
### 注意事项
- 确保插件目录和文件的权限设置正确,以便Discuz可以读取和执行插件代码。
- 在开发过程中,建议在本地或测试环境中进行测试,避免影响线上站点的正常运行。
通过以上步骤,你可以实现一个简单的发帖添加作者水印的Discuz插件。如果需要更复杂的功能,可以进一步扩展插件的逻辑和功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]