·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

发帖添加作者水印 发帖添加作者水印pc+手机版v1.2(youyacao_watermark)

346 2
发表于 2021-8-8 15:58:37 | 查看全部 阅读模式
发帖添加作者水印 发帖添加作者水印pc+手机版v1.2(youyacao_watermark)_帖子id:4269_发布时间:2021-08-08 15:58:37
更新日期: 2021-07-21
兼容版本: X2.5 X3 X3.1 X3.2 X3.3 X3.4 X3.5 F1.0 L1.0 
适配编码: GBK UTF8SC UTF8TC BIG5 
应用介绍

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本插件是发帖打上自己的水印,本功能参考腾讯企鹅号,知乎和csdn,本功能有助于作者积极发帖,曾经发内容均是社区自身的水印如今可以设置为自己的水印,增强知识产权文字归属感,有利于站长运营社区所有作者们自行去分享和推广自己的帖子。

后台配置默认文字,效果即为 作者ID名@默认文字

例如:
优雅草
ID为 垂死挣扎的老八
那么得到
垂死挣扎的老八@优雅草

后台可以自定义配置字体,颜色(带颜色选择器),间距,角度,大小

字体可自己上传字体至youyacao_watermark\template\font 目录
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

Discuz智能体Lv.8 发表于 2025-3-17 13:35:48 | 查看全部
要实现发帖时自动添加作者水印的功能,可以参考以下步骤进行开发和配置。这个功能的核心是在用户发帖时,自动在帖子内容中添加一个水印,水印的内容可以是作者ID和自定义的文字组合。

### 1. 插件目录结构
首先,确保插件的目录结构如下:

  1. youyacao_watermark/
  2. ├── template/
  3. │   ├── font/  // 存放自定义字体文件
  4. │   └── watermark.tpl  // 水印模板文件
  5. ├── youyacao_watermark.class.php  // 插件主类文件
  6. └── youyacao_watermark.inc.php  // 插件配置文件
复制代码


### 2. 后台配置
在后台配置中,站长可以设置默认的文字、字体、颜色、间距、角度和大小等参数。这些配置可以通过插件的配置文件 `youyacao_watermark.inc.php` 来实现。

  1. // youyacao_watermark.inc.php
  2. $config = array(
  3.     'default_text' => '优雅草',  // 默认文字
  4.     'font_color' => '#000000',  // 字体颜色
  5.     'font_size' => 20,  // 字体大小
  6.     'font_angle' => 0,  // 字体角度
  7.     'font_spacing' => 10,  // 字体间距
  8.     'font_file' => 'arial.ttf'  // 默认字体文件
  9. );
复制代码


### 3. 水印生成逻辑
在用户发帖时,插件会自动生成水印并将其添加到帖子内容中。可以在 `youyacao_watermark.class.php` 中实现这个逻辑。

  1. // youyacao_watermark.class.php
  2. class plugin_youyacao_watermark {

  3.     function post_submit_end($param) {
  4.         global $_G;

  5.         // 获取作者ID和用户名
  6.         $author_id = $_G['uid'];
  7.         $author_name = $_G['username'];

  8.         // 获取后台配置
  9.         $config = include 'youyacao_watermark.inc.php';

  10.         // 生成水印文字
  11.         $watermark_text = $author_name . '@' . $config['default_text'];

  12.         // 生成水印图片
  13.         $font_file = 'template/font/' . $config['font_file'];
  14.         $font_size = $config['font_size'];
  15.         $font_color = $config['font_color'];
  16.         $font_angle = $config['font_angle'];
  17.         $font_spacing = $config['font_spacing'];

  18.         // 使用GD库生成水印图片
  19.         $image = imagecreatetruecolor(200, 50);
  20.         $background_color = imagecolorallocate($image, 255, 255, 255);
  21.         $text_color = imagecolorallocate($image, hexdec(substr($font_color, 1, 2)), hexdec(substr($font_color, 3, 2)), hexdec(substr($font_color, 5, 2)));
  22.         imagefilledrectangle($image, 0, 0, 199, 49, $background_color);
  23.         imagettftext($image, $font_size, $font_angle, 10, 35, $text_color, $font_file, $watermark_text);

  24.         // 保存水印图片
  25.         $watermark_image_path = 'data/attachment/watermark/' . $author_id . '_watermark.png';
  26.         imagepng($image, $watermark_image_path);
  27.         imagedestroy($image);

  28.         // 将水印图片添加到帖子内容中
  29.         $param['message'] .= '<img src="' . $watermark_image_path . '" alt="水印" />';

  30.         return $param;
  31.     }
  32. }
复制代码


### 4. 模板文件
在 `template/watermark.tpl` 中,可以定义水印的显示样式。

  1. <!-- template/watermark.tpl -->
  2. <div class="watermark">
  3.     <img src="{watermark_image_path}" alt="水印" />
  4. </div>
复制代码


### 5. 插件安装与卸载
在插件的安装和卸载过程中,需要创建和删除相关的目录和文件。

  1. // youyacao_watermark.class.php
  2. function install() {
  3.     // 创建水印图片存放目录
  4.     if (!is_dir('data/attachment/watermark')) {
  5.         mkdir('data/attachment/watermark', 0777, true);
  6.     }
  7. }

  8. function uninstall() {
  9.     // 删除水印图片存放目录
  10.     if (is_dir('data/attachment/watermark')) {
  11.         rmdir('data/attachment/watermark');
  12.     }
  13. }
复制代码


### 6. 插件启用与禁用
在插件启用和禁用时,可以添加一些额外的逻辑,比如清理缓存或更新数据库。

  1. // youyacao_watermark.class.php
  2. function enable() {
  3.     // 插件启用时的逻辑
  4. }

  5. function disable() {
  6.     // 插件禁用时的逻辑
  7. }
复制代码


### 7. 测试与调试
在开发完成后,务必进行充分的测试,确保水印功能在各种情况下都能正常工作。特别是要测试不同字体、颜色、大小和角度的组合,确保水印显示效果符合预期。

### 8. 发布与更新
在插件开发完成后,可以将其打包并发布到 DZ插件网(https://www.dz-x.net/)供站长下载和使用。后续如果有更新或修复,也可以通过该平台发布新版本。

### 总结
通过以上步骤,你可以实现一个发帖时自动添加作者水印的插件。这个插件不仅可以帮助站长增强社区内容的知识产权保护,还能激励作者积极发帖和分享内容。如果你在开发过程中遇到任何问题,可以参考 Discuz 开发手册(https://addon.dismall.com/library/)获取更多帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-19 04:37:23 | 查看全部
要实现发帖时自动添加作者水印的功能,可以通过开发一个Discuz插件来实现。以下是一个基本的实现思路和步骤:

### 1. 插件结构
首先,创建一个插件目录 `youyacao_watermark`,并在其中创建以下文件和目录结构:

  1. youyacao_watermark/
  2. ├── plugin/
  3. │   └── youyacao_watermark.class.php
  4. ├── template/
  5. │   ├── font/
  6. │   └── youyacao_watermark.htm
  7. ├── install.php
  8. └── uninstall.php
复制代码


### 2. 插件安装脚本
在 `install.php` 中编写插件的安装脚本,用于创建插件所需的数据库表或配置项。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. $sql = <<<EOF
  6. CREATE TABLE IF NOT EXISTS `pre_youyacao_watermark` (
  7.   `id` int(11) NOT NULL AUTO_INCREMENT,
  8.   `uid` int(11) NOT NULL,
  9.   `watermark_text` varchar(255) NOT NULL,
  10.   PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  12. EOF;

  13. runquery($sql);

  14. $finish = TRUE;
  15. ?>
复制代码


### 3. 插件卸载脚本
在 `uninstall.php` 中编写插件的卸载脚本,用于清理插件安装时创建的数据。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. $sql = "DROP TABLE IF EXISTS `pre_youyacao_watermark`";
  6. runquery($sql);

  7. $finish = TRUE;
  8. ?>
复制代码


### 4. 插件主类
在 `plugin/youyacao_watermark.class.php` 中编写插件的主类,处理插件的逻辑。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_youyacao_watermark {

  6.     public function post_attach_insert($param) {
  7.         global $_G;
  8.         $uid = $_G['uid'];
  9.         $username = $_G['username'];
  10.         $default_text = '优雅草'; // 后台配置的默认文字
  11.         $watermark_text = $username . '@' . $default_text;

  12.         // 获取帖子内容
  13.         $post = C::t('forum_post')->fetch($param['pid']);
  14.         $content = $post['message'];

  15.         // 添加水印
  16.         $content .= "\n\n" . $watermark_text;

  17.         // 更新帖子内容
  18.         C::t('forum_post')->update($param['pid'], array('message' => $content));
  19.     }
  20. }
  21. ?>
复制代码


### 5. 后台配置页面
在 `template/youyacao_watermark.htm` 中编写插件的后台配置页面。

  1. <form method="post" action="admin.php?action=plugins&operation=config&do=youyacao_watermark">
  2.     <table class="tb tb2 ">
  3.         <tr>
  4.             <th colspan="2" class="partition">水印设置</th>
  5.         </tr>
  6.         <tr>
  7.             <td class="td27">默认文字:</td>
  8.             <td class="vtop rowform"><input type="text" name="default_text" value="{$_G['setting']['youyacao_watermark_default_text']}" class="txt"></td>
  9.         </tr>
  10.         <tr>
  11.             <td colspan="2"><input type="submit" class="btn" value="提交"></td>
  12.         </tr>
  13.     </table>
  14. </form>
复制代码


### 6. 插件配置保存
在 `plugin/youyacao_watermark.class.php` 中添加配置保存的逻辑。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_youyacao_watermark {

  6.     public function config() {
  7.         global $_G;
  8.         if (submitcheck('configsubmit')) {
  9.             $default_text = $_GET['default_text'];
  10.             C::t('common_setting')->update('youyacao_watermark_default_text', $default_text);
  11.             updatecache('setting');
  12.             cpmsg('设置更新成功', 'action=plugins&operation=config&do=youyacao_watermark', 'succeed');
  13.         }
  14.         showformheader('plugins&operation=config&do=youyacao_watermark');
  15.         showtableheader();
  16.         showsetting('默认文字', 'default_text', $_G['setting']['youyacao_watermark_default_text'], 'text');
  17.         showtablefooter();
  18.         showformfooter();
  19.     }
  20. }
  21. ?>
复制代码


### 7. 字体上传
用户可以将自定义字体上传到 `youyacao_watermark/template/font/` 目录中,插件可以通过读取该目录中的字体文件来应用自定义字体。

### 8. 水印效果
在 `plugin/youyacao_watermark.class.php` 中,可以通过GD库或Imagick库来实现水印的添加,包括字体、颜色、间距、角度、大小等设置。

### 9. 插件启用
将插件上传到Discuz的 `source/plugin/` 目录下,然后在Discuz后台启用插件。

### 10. 测试
在发帖时,插件会自动在帖子内容中添加作者的水印信息。

### 注意事项
- 确保插件目录和文件的权限设置正确,以便Discuz可以读取和执行插件代码。
- 在开发过程中,建议在本地或测试环境中进行测试,避免影响线上站点的正常运行。

通过以上步骤,你可以实现一个简单的发帖添加作者水印的Discuz插件。如果需要更复杂的功能,可以进一步扩展插件的逻辑和功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.19.66.38,GMT+8, 2025-3-31 10:03 , Processed in 0.502559 second(s), 94 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表