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

原文大致如下:

当文章缩略图是自动选取文章内第一个图片裁减所得时 他的命名规则是有规律的 比如原文是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. SSH--1

    package com.etc.action; import java.io.IOException; import java.io.PrintWriter; import java.util.Has ...

  2. 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理

    var params = $("#myform").serializeArray(); var values = {}; for (var item in params) { va ...

  3. Java学习笔记12

    循环 打印一个字符串(例如: "Welcome to Java!") 100次,就需要吧下面的输出语句重复写100遍,这是相当繁琐的: System.out.println(&qu ...

  4. ubuntu一些基本软件安装方法

    ubuntu一些基本软件安装方法 首先说明一下 ubuntu 的软件安装大概有几种方式:1. deb 包的安装方式deb 是 debian 系 Linux 的包管理方式, ubuntu 是属于 deb ...

  5. js 时间相关函数

    实例: <!doctype html> <html> <head> <meta charset="utf-8"> <title ...

  6. zabbix添加监控主机(三)

    zabbix添加监控服务器. zabbix添加监控服务器(以添加10.10.100.137为例) (1)创建要监控的主机.点击配置(configuration)–>主机(host) –>创 ...

  7. c# 网络

    http://www.cnblogs.com/fuchongjundream/p/4079128.html http://stackoverflow.com/questions/21728773/th ...

  8. springmvc 表单提交

    Spring MVC自带的表单标签比较简单,很多时候需要借助EL和JSTL来完成. 下面是一个比较简单的表单提交页面功能: 1.User model package com.my.controller ...

  9. python 环境配置

    每个项目都应该有自己的虚拟环境,如何方便的操作呢? 1. 安装 virtualenv 2. 安装 virtualenvwrapper 3. 创建目录用来存放虚拟环境 mkdir $HOME/.virt ...

  10. iOS开发——高级篇——通讯录

    一.简介 1.如何访问用户的通讯录1)在iOS9之前有2个框架可以访问用户的通讯录AddressBookUI.framework提供了联系人列表界面.联系人详情界面.添加联系人界面等一般用于选择联系人 ...