在网上找过资料,效果不是很满意,第一个是原理说的不对,第二个是后缀写死。

原文大致如下:

当文章缩略图是自动选取文章内第一个图片裁减所得时 他的命名规则是有规律的 比如原文是1.jpg 它对应的缩略图是1******* 后面多了7个随机字符,既然如此,那么删除缩略图字符串最后七位,然后再补上后缀.jpg不就能反向得到文章的一张图片的地址了,于是作如下处理:
修改include/extend.func.php
添加如下代码:
//取第一张图地址
function firstimg($str_pic)
{
$str_sub=substr($str_pic,0,-7).".jpg";//删除缩略图字符串最后七位,然后再补上后缀.jpg
return $str_sub;
}
然后在模板里循环调用:
[field:litpic function=firstimg('@me')/]
直接调用用:
{dede:field name=’litpic’ function=”firstimg(@me)”/} 问题解决。

实际上无论上传的图片原名叫什么,都会被dede自动在服务器生成两个文件,一个原图一个缩略图,

原图名称形如:string-n.xxx,例:095A1J39-3.jpg

缩略图名称形如:string-n-"lp".xxx,例:095A1J39-3-lp.jpg

string是一个随机的8位字符串,n代表一个数字。

上述代码到是能用,问题是dedecms在上传文件的时候,并不会强制修改后缀名,所以如果文章编辑上传的是png的图片的话,

图片url后缀会被改为“jpg”从而显示不出来。所以我们对代码稍作修改。

修改include/extend.func.php
添加如下代码:
//取第一张图地址
function firstimg($str_pic)
{
$str_sub=substr($str_pic,0,-7).".".substr($str_pic,-3);//删除缩略图字符串最后七位,然后再补上上传文件的后缀
return $str_sub;
}
然后在模板里循环调用:
[field:litpic function=firstimg('@me')/]
直接调用用:
{dede:field name=’litpic’ function=”firstimg(@me)”/}

这样网站后台会对网站编辑会更加友好。

2017年2月7日11:30:23编辑

有时候文章有的缩略图是后缀有-lp的,但有的抓取文章缩略图路径和原图路径一样,如果同样处理就错了。

另外图片文件自动命名长度有时候未必是固定长度,于是对算法做了改进。如下:

//取第一张图地址
function firstimg($str_pic)
{
if(strstr($str_pic,'-lp'))
{
$n=strlen(strstr($str_pic,'-lp')); $str_sub=substr($str_pic,,-$n).".".substr($str_pic,-);//删除缩略图字符串最后七位,然后再补上上传文件的后缀
}
else{
$str_sub=$str_pic;
}
return $str_sub;
}

诸君可用此新方法

dedecms在列表或首页取得文章首图的功能改进的更多相关文章

  1. WordPress D8 主题当中截取文章首图并显示的函数

    取自 WordPress D8 主题; 路径 theme\d8\modules ; if ( ! function_exists( 'deel_thumbnail' ) ) : function de ...

  2. dedecms列表页如何让文章列表里面的文章每隔五篇就隔开一段空间

    dedecms列表页如何让文章列表里面的文章每隔五篇就隔开一段空间,运用js控制列表样式的方法. 代码如下: <script type="text/javascript"&g ...

  3. dedecms列表页文章有图调用缩略图 无图留空或自定义图片的方法!

    默认情况下,织梦的文章列表页会调用出当前栏目下的文章列表,并且调用出每个文章的缩略图:如果文章本身就有图,会调用出一张小图,如果没有,则会显示默认的织梦图片.这种处理方式有时候比较影响美观,其实可以修 ...

  4. Laravel大型项目系列教程(四)显示文章列表和用户修改文章

    小编心语:不知不觉已经第四部分了,非常感谢很多人给小编提的意见,改了很多bug,希望以后能继续帮小编找找茬~小编也不希望误导大家~这一节,主要讲的 是如何显示文章列表和让用户修改文章,小编预告一下(一 ...

  5. dedecms调用所有顶级栏目最新文章的实现方法

    做dedecms的模板,我们会遇到各种各样的调用问题,dedecms列表页调用所有顶级栏目文章列表的方法如下所述: 在文章页面经常使用的是 {dede:arclist orderby='pubdate ...

  6. 如何用PC标签在列表页中调出文章内容 phpcms

    如何用PC标签在列表页中调出文章内容 phpcms v9 moreinfo=”"参数说明 {pc:content action="lists" catid="$ ...

  7. 如何实现dede首页栏目文章指定调用

    如何实现dede首页栏目文章指定调用,首页文章栏目指定ID调用 dobote | 浏览 11891 次 推荐于2016-05-20 10:53:26 最佳答案 {dede:arclist flag=' ...

  8. 给destoon商城的列表中和首页添加购物车功能

    如何给destoon商城的列表中和首页添加购物车功能? 目前加入购物车的功能只存在商城的详细页面里,有时候我们需要批量购买的时候,希望在列表页就能够使用这个加入购物车的功能. 修改步骤见下: 例如在商 ...

  9. WordPress文章首行缩进

    WordPress后台编辑文章的时候会自动删除多余的空格,也就是说,你在后台编辑文章的时候添加的一些空格和换行在前台都是看不见的,都是被WordPress忽略了的,今天就讲讲怎么给所有文章添加首行缩进 ...

随机推荐

  1. Python Day6

    面向对象 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强...&qu ...

  2. JAVA教师:给JAVA初学者的忠告

    我带过不少JAVA,C++班的课,来学习的同学很多都是初学者,一部分是急着找工作的,一部分是很感兴趣的.他们都想在短短一两个星期内掌握Java,这是不切实际的.而且这样做很容易让自己心浮气燥,难以静下 ...

  3. Fedora 23安装 NS2 (network simulator 2)

    1 实验环境 OS: Fedora 23 workstation 2 实验步骤 ( 参考了:http://www.isi.edu/nsnam/ns/ns-build.html) 本次实验的实验环境: ...

  4. code::blocks编译出错

    问题描述: 在windows xp 上编译的cbp项目(已经生成.obj文件),放到fedora上无法顺利编译.(build) collect2:error: ld returned 1 exit s ...

  5. Json.Net 数据解析

    参考资料: 随笔分类 - Json.Net系列

  6. PHP图片上传类

    前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...

  7. Tomcat端口被占用错误

    所报错误: 严重: Error initializing endpointjava.lang.Exception: Socket bind failed: [730013] ????????????? ...

  8. Codeforces#262_1002

    Codeforces#262_1002 B. Little Dima and Equation time limit per test 1 second memory limit per test 2 ...

  9. iphone如何导出微信聊天记录到电脑?

    有个小美眉买了个iphone,但发现自己就是一小白,很多功能都不会用,微信倒是用得挺上手的,可以晚上聊到三四点,流量直接飙升500MB.最近她说手机太卡了,问ytkah帮她整一下.拿起她的IPhone ...

  10. PHP判断远程文件是否存在

    <?php /* 函数:remote_file_exists 功能:判断远程文件是否存在 参数: $url_file -远程文件URL 返回:存在返回true,不存在或者其他原因返回false ...