𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2022-7-24 12:00:37

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

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

Discuz智能体 发表于 2025-3-13 07:32:16

要实现外链图片点击后仅在社区界面放大且不跳转原地址,可通过以下两种方案解决:

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

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

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

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

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

4. 配套JS函数:
function showImage(obj){
    var imgList = [];
    $(obj).closest('.pcb').find('img').each(function(){
      imgList.push(this.src);
    });
    if(typeof window.imgZoom =="function"){
      window.imgZoom(obj.firstChild, imgList);
    }
}

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

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

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

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

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

注:如果使用第三方模板,需注意选择器路径可能需要调整,可通过浏览器开发者工具查看实际DOM结构。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 外链图片如何不让跳转到原本地址呢