左右不逢缘 发表于 2024-5-13 23:01:15

模块模板不能自定义图片大小? New



该模块在模块属性中设置的缩略图宽度为390,但是帖子中插入的该图宽度为360,导致图片调用出来左右都留了空白出来,我想这里调的图片不按帖内上传插入的图片360的宽度填充,按390进行填充,就不知道这里的模块怎么写,请指点,谢谢!
我知道答案 回答被采纳将会获得1 贡献 已有0人回答

Discuz智能体 发表于 2025-3-14 09:56:13

关于模块模板图片尺寸适配问题,可通过以下3种方式优化:

1. 缩略图处理参数调整
在模板的循环内修改图片调用标签:
<img src="{echo parseurl($item, 'w=390&h=260&crop=1')}">
参数说明:
- w=390:强制输出宽度390px
- h=260:建议设置对应高度比例值
- crop=1:启用等比裁剪模式(关键参数)

2. CSS层适配方案
在模板<style>标签内添加:
.module-img-box {
    position: relative;
    overflow: hidden;
    aspect-ratio: 390/260; /* 宽高比例 */
}
.module-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

3. 动态尺寸适配方案(推荐)
修改模板调用逻辑:
<!--{eval $thumbSize = isset($config['thumbwidth']) ? $config['thumbwidth'] : 390;}-->
<img src="{echo parseurl($item['pic'], 'w='.$thumbSize.'&h=auto&crop=1')}"
   style="width:100%;height:auto">

注意事项:
1. 当原始图片小于390px时,需要检查后台的"缩略图生成策略"设置,建议开启"强制生成缩略图"选项
2. 使用object-fit属性时需添加-webkit-object-fit兼容前缀
3. 对于移动端适配,建议补充@media查询设置不同的宽高比例

可通过DZ插件网获取《Discuz!X可视化模板编辑手册》获取更多模板调试技巧,如需深度定制可提交工单至技术支持中心。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-14 10:13:29

关于模块模板图片尺寸适配问题,建议通过以下三种技术方案解决:

一、模板层CSS强制适配方案
在模块模板的对应样式表中增加以下CSS代码:
.thread-image-box {
    width: 390px !important;
    height: 260px; /* 根据实际比例调整 */
    overflow: hidden;
    position: relative;
}
.thread-image-box img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

二、模板层动态渲染方案
修改模块模板文件(如forum_thread.htm)的图片输出部分:
<!--{loop $threadlist $key $thread}-->
    <div class="image-container">
      <!--{if $thread}-->
            <img src="$thread"
               style="width:390px;height:auto;transform: scale(1.05);transition: all 0.3s ease"
               onload="this.style.opacity=1"
               class="lazyload"
               data-original="{getimgurl($thread, 390)}">
      <!--{/if}-->
    </div>
<!--{/loop}-->

三、数据源层适配方案(需二次开发)
1. 修改模块的source/class/block/forum/block_thread.php文件
// 找到图片处理部分修改为:
if($post['first'][$this->setting['picrequired']]) {
    $thread['image'] = getimgurl($post['first'][$this->setting['picrequired']], 390, 260); // 强制指定尺寸
    $thread['image'] = preg_replace('/width=\d+/', 'width=390', $thread['image']);
    $thread['image'] = preg_replace('/height=\d+/', 'height=260', $thread['image']);
}

四、混合解决方案推荐:
1. 后台设置缩略图尺寸为390x260
2. 在extend_module/style.css追加:
.module-wrap .c-img-box {
    aspect-ratio: 390/260;
    display: flex;
    justify-content: center;
    background: #f5f5f5;
}
.module-wrap img {
    max-width: 100%!important;
    height: auto!important;
    object-position: center center;
}

注意事项:
1. 当原图宽高比与目标尺寸不符时,建议使用CSS的object-fit: cover属性保持比例
2. 对移动端适配需追加媒体查询:
@media (max-width:768px){
    .module-wrap img {
      max-width: 100vw!important;
    }
}

如需更深入的功能定制,可访问DZ插件网获取专业的技术支持方案。实际开发中建议同时处理WEBP格式转换和懒加载优化,以提升页面加载性能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 模块模板不能自定义图片大小? New