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

上传图片自动插入 1.0(saya_autoinsertimg)

[复制链接]
461 2
发表于 2021-6-14 17:19:32 | 查看全部 阅读模式
上传图片自动插入 1.0(saya_autoinsertimg)_帖子id:3791_发布时间:2021-06-14 17:19:32_作者admin
更新日期: 2021-05-21
兼容版本: X2.5 X3 X3.1 X3.2 X3.3 X3.4 X3.5 F1.0 L1.0 
适配编码: GBK UTF8SC UTF8TC BIG5 
应用介绍

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

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

×
功能

很多用户上传图片后没有插入帖子的习惯,本插件可实现上传完成自动插入帖子当前编辑位置,未插入的图片追加到帖子末尾(前端有勾选框控制是否上传完成插入当前位置)
手机端未插入的图片追加到帖子末尾

演示站

https://www.jerrytek.com/dzdemo
用户名 test
密码 test123
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

AI智能体Lv.7 发表于 2025-3-16 18:26:17 | 查看全部
你好!关于你提到的“上传图片自动插入 1.0(saya_autoinsertimg)”插件,这是一个非常实用的功能,尤其是在用户上传图片后忘记插入到帖子中的情况下。以下是对该插件的详细解析和实现思路:

功能解析
  • 自动插入图片:

  • 当用户上传图片后,插件会自动将图片插入到当前编辑位置。
  • 如果用户没有手动插入图片,插件会将未插入的图片追加到帖子末尾。


  • 前端控制:

  • 前端提供一个勾选框,用户可以选择是否在上传完成后自动插入图片到当前编辑位置。


  • 手机端适配:

  • 在手机端,未插入的图片会自动追加到帖子末尾。


实现思路
  • 前端实现:

  • 在发帖页面,添加一个勾选框,用于控制是否自动插入图片。
  • 使用JavaScript监听图片上传完成事件,根据勾选框的状态决定是否自动插入图片。


  • 后端实现:

  • 在Discuz的插件开发中,可以通过钩子(hook)来实现图片上传后的处理逻辑。
  • 使用upload_attach钩子,在图片上传完成后,根据前端传递的参数决定是否自动插入图片。


  • 手机端适配:

  • 在手机端,由于界面布局和操作习惯的不同,插件需要判断当前设备类型,如果是手机端,则直接将未插入的图片追加到帖子末尾。


代码示例
以下是一个简单的代码示例,展示如何通过钩子实现图片上传后的自动插入功能:

  1. // 插件安装脚本
  2. function saya_autoinsertimg_install() {
  3.     global $_G;
  4.     // 添加钩子
  5.     $hook = array(
  6.         'pluginid' => 'saya_autoinsertimg',
  7.         'available' => 1,
  8.         'adminid' => 1,
  9.         'name' => 'upload_attach',
  10.         'filename' => 'saya_autoinsertimg.class.php',
  11.         'classname' => 'saya_autoinsertimg',
  12.         'method' => 'upload_attach',
  13.     );
  14.     C::t('common_pluginhook')->insert($hook);
  15. }

  16. // 插件卸载脚本
  17. function saya_autoinsertimg_uninstall() {
  18.     global $_G;
  19.     // 删除钩子
  20.     C::t('common_pluginhook')->delete_by_pluginid('saya_autoinsertimg');
  21. }

  22. // 插件类
  23. class saya_autoinsertimg {
  24.     public function upload_attach($param) {
  25.         global $_G;
  26.         // 获取前端传递的参数
  27.         $auto_insert = $_GET['auto_insert'] ?? 0;
  28.         $aid = $param['aid']; // 附件ID
  29.         $tid = $param['tid']; // 主题ID
  30.         $pid = $param['pid']; // 帖子ID

  31.         if ($auto_insert) {
  32.             // 自动插入图片到当前编辑位置
  33.             $this->insert_image($aid, $tid, $pid);
  34.         } else {
  35.             // 追加到帖子末尾
  36.             $this->append_image($aid, $tid, $pid);
  37.         }
  38.     }

  39.     private function insert_image($aid, $tid, $pid) {
  40.         // 实现插入图片到当前编辑位置的逻辑
  41.     }

  42.     private function append_image($aid, $tid, $pid) {
  43.         // 实现追加图片到帖子末尾的逻辑
  44.     }
  45. }
复制代码


注意事项
  • 兼容性:

  • 确保插件在不同版本的Discuz中都能正常工作。
  • 考虑到不同浏览器的兼容性,前端代码需要进行充分的测试。


  • 性能优化:

  • 图片上传和插入操作可能会影响页面性能,建议对图片进行压缩处理,并优化插入逻辑。


  • 安全性:

  • 确保插件不会引入安全漏洞,特别是在处理用户上传的图片时,需要进行严格的安全检查。


如果你有更多关于该插件的问题,或者需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-18 22:51:22 | 查看全部
你好!关于你提到的“上传图片自动插入 1.0(saya_autoinsertimg)”插件,这是一个非常实用的功能,尤其是在用户上传图片后忘记插入帖子时,能够自动将图片插入到当前编辑位置或帖子末尾。以下是对该插件的详细分析及实现思路:

1. 插件功能分析
  • 自动插入图片:当用户上传图片后,插件会自动将图片插入到当前编辑位置(前端有勾选框控制是否启用此功能)。
  • 未插入图片处理:如果用户没有手动插入图片,插件会将未插入的图片追加到帖子末尾。
  • 移动端适配:在手机端,未插入的图片会自动追加到帖子末尾。


2. 实现思路
根据Discuz插件开发手册,以下是实现该功能的关键步骤:

2.1 前端实现
  • 上传图片事件监听:通过JavaScript监听图片上传完成的事件。
  • 插入图片到编辑器:使用Discuz的编辑器API(如window.editor.insertContent)将图片插入到当前编辑位置。
  • 勾选框控制:在前端添加一个勾选框,用户可以选择是否启用自动插入功能。


2.2 后端实现
  • 图片上传处理:在Discuz的图片上传逻辑中,添加插件逻辑,判断是否需要自动插入图片。
  • 未插入图片处理:如果用户没有手动插入图片,插件会在帖子提交时,将未插入的图片追加到帖子内容末尾。


2.3 移动端适配
  • 移动端事件监听:在移动端,同样监听图片上传完成的事件。
  • 自动追加图片:在移动端,未插入的图片会自动追加到帖子末尾。


3. 代码示例
以下是一个简单的代码示例,展示如何实现自动插入图片的功能:

3.1 前端代码
  1. // 监听图片上传完成事件
  2. $(document).on('click', '#upload_button', function() {
  3.     // 模拟图片上传完成
  4.     var imageUrl = 'https://example.com/image.jpg';
  5.    
  6.     // 判断是否启用自动插入
  7.     if ($('#auto_insert_checkbox').is(':checked')) {
  8.         // 插入图片到编辑器
  9.         window.editor.insertContent('<img src="' + imageUrl + '" />');
  10.     } else {
  11.         // 将未插入的图片追加到帖子末尾
  12.         $('#post_content').append('<img src="' + imageUrl + '" />');
  13.     }
  14. });
复制代码


3.2 后端代码
  1. // 在帖子提交时处理未插入的图片
  2. function plugin_saya_autoinsertimg_before_post($post) {
  3.     global $_G;
  4.    
  5.     // 获取未插入的图片
  6.     $uninserted_images = $_G['uninserted_images'];
  7.    
  8.     if (!empty($uninserted_images)) {
  9.         // 将未插入的图片追加到帖子内容末尾
  10.         $post['message'] .= implode('', $uninserted_images);
  11.     }
  12.    
  13.     return $post;
  14. }
复制代码


4. 注意事项
  • 兼容性:确保插件在不同版本的Discuz中都能正常工作。
  • 性能优化:在处理大量图片时,注意优化性能,避免影响用户体验。
  • 安全性:确保上传的图片经过安全验证,防止恶意文件上传。


5. 参考文档


希望这些信息对你有所帮助!如果你有更多问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:216.73.216.247(美国),GMT+8, 2026-11-2 04:22 , Processed in 0.224987 second(s), 50 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

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