20241127 给typecho文章编辑附件 添加视频 图片预览

Typecho在写文章时,如果一次性上传太多张图片可能分不清哪张,因为附件没有略缩图,无法实时阅览图片,给文章插入图片时很不方便。

编辑admin/file-upload.php

大约十八行的位置

一个while 循环里面,这是在进行html元素更新操作,在合适的位置插入视频或者图片标签即可.

最终成为这样

复制代码
<?php while ($attachment->next()): ?>
    <li data-cid="<?php $attachment->cid(); ?>" data-url="<?php echo $attachment->attachment->url; ?>" data-image="<?php echo $attachment->attachment->isImage ? 1 : 0; ?>"><input type="hidden" name="attachment[]" value="<?php $attachment->cid(); ?>" />
    
    <!-- 视频,图片预览 -->
    <?php if($attachment->attachment->isImage==1): ?>
    <img src="<?php echo $attachment->attachment->url; ?>" width="80%"></src><br/>
    <?php endif; ?>
    <?php if ($attachment->attachment->mime == "video/mp4"): ?>
    <video src="<?php echo $attachment->attachment->url; ?>" width="100%" controls="true"></video><br/>
    <?php endif; ?>

    <a class="insert" title="<?php _e('点击插入文件'); ?>" href="###"><?php $attachment->title(); ?></a>
        <div class="info">
            <?php echo number_format(ceil($attachment->attachment->size / 1024)); ?> Kb
            <a class="file" target="_blank" href="<?php $options->adminUrl('media.php?cid=' . $attachment->cid); ?>" title="<?php _e('编辑'); ?>"><i class="i-edit"></i></a>
            <a href="###" class="delete" title="<?php _e('删除'); ?>"><i class="i-delete"></i></a>
        </div>
    </li>
<?php endwhile; ?>

当然仅仅是这里还不够,还有admin/file-upload-js.php需要修改,原理差不多

大约103行,额外追加一点代码

复制代码
function fileUploadComplete (id, url, data) {
    let media = ''
    if(data.type==="png"){
        media=' <img src='+data.url+' width="80%"></src><br/>'
    }else if(data.type==="mp4"){
       media=' <video src='+data.url+' width="80%" controls="true"></video><br/>'
    }
    var li = $('#' + id).removeClass('loading').data('cid', data.cid)
        .data('url', data.url)
        .data('image', data.isImage)
        .html('<input type="hidden" name="attachment[]" value="' + data.cid + '" />'
        + media
            + '<a class="insert" target="_blank" href="###" title="<?php _e('点击插入文件'); ?>">' + data.title + '</a><div class="info">' + data.bytes
            + ' <a class="file" target="_blank" href="<?php $options->adminUrl('media.php'); ?>?cid=' 
            + data.cid + '" title="<?php _e('编辑'); ?>"><i class="i-edit"></i></a>'
            + ' <a class="delete" href="###" title="<?php _e('删除'); ?>"><i class="i-delete"></i></a></div>')
        .effect('highlight', 1000);
        
    attachInsertEvent(li);
    attachDeleteEvent(li);
    updateAttacmentNumber();

    if (!completeFile) {
        completeFile = data;
    }
}
相关推荐
weixin_4080996715 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
王莎莎-MinerU19 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
AC赳赳老秦19 小时前
OpenClaw 采集任务日志审计:全程记录采集行为,满足合规溯源与企业审计要求
java·大数据·python·数据挖掘·数据分析·php·openclaw
跨境技工小黎21 小时前
海外抢票:2026icketmaster注册、抢票及退票攻略
php
Helen_cai1 天前
OpenHarmony 通用状态加载、空页面、错误兜底组件封装(全局业务通用 UI 组件 API23)
开发语言·ui·华为·php·harmonyos
REDcker1 天前
基于 eBPF 的网络可观测:协议栈路径与 sk_buff
linux·服务器·网络·php·ebpf·bpf
CRMEB系统商城1 天前
商城系统二次开发友好度横向体验
java·大数据·开发语言·小程序·php
weixin_BYSJ19872 天前
django在线图书销售平台---附源码16192
java·javascript·spring boot·python·django·flask·php
__log3 天前
弱网环境下的“生命线“:从AI流式响应到大文件上传的稳定性
开发语言·人工智能·php
TlSfoward3 天前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php