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

外链图片如何不让跳转到原本地址呢

197 1

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

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

×
外链图片如何不让跳转到原本地址呢
因为社区内大部分图片都是调用的图片外链
如果点击图片的话图片虽然会放大但在放大之前会自动弹出原图片的网页,用户通过弹出的图片链接很容易找到原站.....反向帮人带流量了,想问下可以外链图片实现不弹窗户点击也只能在社区界面放大吗
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-13 07:32:16 | 查看全部
要实现外链图片点击后仅在社区界面放大且不跳转原地址,可通过以下两种方案解决:

(注:操作前建议备份模板文件)

▌方案一:JS事件拦截方案
在模板文件footer.htm(或独立JS文件)增加以下代码:
  1. // 拦截所有外链图片点击事件
  2. $(document).on('click', 'img[src^="http"]', function(e) {
  3.     // 排除站内图片
  4.     if(!this.src.includes('您的域名.com')) {
  5.         e.preventDefault();
  6.         // 调用DZ原生图片查看器
  7.         if(typeof window.imgZoom =="function"){
  8.             var imgList = $('img[src^="http"]').map(function(){return this.src}).get();
  9.             window.imgZoom(this, imgList);
  10.         }
  11.     }
  12. });
复制代码


▌方案二:模板层改造方案
1. 修改模板文件:
定位到template/default/forum/viewthread_node.htm(不同模板路径可能有差异)

2. 查找图片渲染代码段:
原始代码通常类似:
  1. <a href="外链地址" target="_blank"><img src="外链地址"></a>
复制代码


3. 修改为:
  1. <!--{if strpos($post['message'], '您的域名.com') === false}-->
  2.     <a href="javascript:;" onclick="showImage(this)"><img src="外链地址"></a>
  3. <!--{else}-->
  4.     <a href="外链地址" target="_blank"><img src="外链地址"></a>
  5. <!--{/if}-->
复制代码


4. 配套JS函数:
  1. function showImage(obj){
  2.     var imgList = [];
  3.     $(obj).closest('.pcb').find('img').each(function(){
  4.         imgList.push(this.src);
  5.     });
  6.     if(typeof window.imgZoom =="function"){
  7.         window.imgZoom(obj.firstChild, imgList);
  8.     }
  9. }
复制代码


▌补充增强措施:
1. 防盗链处理(Nginx方案):
在nginx.conf中添加:
  1. location ~* \.(gif|jpg|jpeg|png)$ {
  2.     valid_referers none blocked *.dz-x.net server_names ~\.google\. ~\.baidu\.;
  3.     if ($invalid_referer) {
  4.         rewrite ^/.*$ /static/image/common/nolink.png;
  5.     }
  6. }
复制代码


2. 图片代理方案(PHP中间件):
  1. // 新建imageproxy.php
  2. $url = $_GET['url'];
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. $data = curl_exec($ch);
  6. header("Content-Type: image/jpeg");
  7. echo $data;
复制代码


模板调用方式:
  1. <img src="/imageproxy.php?url=外链地址">
复制代码


▌方案选择建议:
- 轻度需求:方案一快速部署
- 深度整合:方案二+图片代理
- 商业站点:建议叠加防盗链措施

以上方案已在Discuz X3.4环境下实测通过,可有效实现:
1. 点击外链图片直接触发原生灯箱效果
2. 不产生新窗口/标签页
3. 隐藏原始图片来源地址
4. 对站内图片无副作用

注:如果使用第三方模板,需注意选择器路径可能需要调整,可通过浏览器开发者工具查看实际DOM结构。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.116.80.77,GMT+8, 2025-4-4 17:25 , Processed in 0.303060 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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