dede 栏目添加字段自定义图片字段 首页能截取图片url,列表却不能

dedecms 提取文章中第一个图片的URL地址。_百度知道
dedecms 提取文章中第一个图片的URL地址。
第一步:修改include/extend.func.php
// 提取图集第一张大图,为arclist用
function get_firstbigimg($arcid){
//获取图片附加表imgurls字段内容进行处理
$dsql = new DedeSql(false);
$row = $dsql-&GetOne(&Select imgurls Fr...
我有更好的答案
同你的方法, 只要在include/extend.func.php 加入一个自定义函数,然后再在列表页直接调用。函数:/**获取字符串的第一个图片地址*/function getbodyfirstpic($str_img){
preg_match_all(&/&img.*\&/isU&,$str_img,$ereg);//正则表达式把图片的整个都获取出来了
$img=$ereg[0][0];//图片
$p=&#src=('|\&)(.*)('|\&)#isU&;//正则表达式
preg_match_all ($p, $img, $img1);
$img_path =$img1[2][0];//获取第一张图片路径
//return $img_ //仅返回地址return $ //返回整个图片}列表调用:[field:body function=&getbodyfirstpic(@me)& /]
采纳率:9%
文章中默认的有一个把第一张图片做为缩览图,这样图片有就了。直接调缩览图这样就方便多了。是吧,如果达到你的要求了记得给个满意哦
你能不能有点智商?
所闻非所答,如果像你那么说,我需要这么费劲嘎哈。
你有没有道德好心帮你处理问题还这么说,你有智商你自已搞吧。不想理你这种没道德的人
一看 你就是。。。
一看你就是正宗的考试专用铅笔
一看你就是个“南北”,一天天二的喝的。 什么玩应呢。
我说上面的那话是什么意思不?
你对社会做出的贡献太大了。
你就瞅瞅你, 我就像知道了,你要是不会 你就别吓答,你答谁能S “ac”是的给你分咋的?一天天 混分,像你这种2“ac”你可快回家老死去吧。
你敢快回去吧,不然科学家们没得研究了
对了,刚才谁说我嘞我了?
咋还 “倩灯” 是的跟我俩白虎呢? 是不是贱?自己说 是不是?
为您推荐:
其他类似问题
您可能关注的内容
dedecms的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在制作dedecms模板的过程中经常会用到一些默认dedecms没有的字段,为此以dedecms以及以上的基础上做了一个关于dedecms自定义字段的添加和自定义字段在dedecms模板中的调用方法。 在制作dedecms模板的过程中经常会用到一些默认dedecms没有的字段,如:
这里的价格的调用,dedecms默认是没有这个标签的,那我们如果实现这个价格的调用呢? 在这里我们就需要使用到dedecms模型里的自定义字段了,下面我们以dedecms5.6为例介绍一下dedecms字段的添加和调用方法。(5.3版本后的所以版本的自定义字段的添加和调用相同) 首先我们打开网站后台,点击左侧的&核心&,找到模型管理,这是就可以看到&内容模型管理&的选项卡了。如图:
点击进入&内容模型管理&这是右侧会显示相应的各个模型了,下面我们以文章模型为例讲解自定义字段的添加。
点击右侧的更改小图标进入文章模型的管理页面。 这是我们会看到有&基本设置&和&字段管理&2个选项。我们选择字段管理选项进入。
进入以后我
们会看到有个&添加新字段&的按钮
点击&添加新字段&按钮进入,这时看到的就是添加字段的界面了。 我们以上面讲到的价格字段为例进行一个实例操作的讲解,如下图:
全部添加好后点击确定即可。然后我们进入栏目管理,开始添加内容,打开添加内容页面后我们会看到一个关于价格的内容输入框。
这个就是我们刚刚添加到关于价格的字段。 到这里就已经讲完关于dedecms自定义字段的一个添加过程,对于自定义字段的添加需要活学活用才能将这个功能的潜力完全发挥出来。下面讲一下关于自定义字段在dedecms模板中的的调用。 我们以在首页调用为例: Dedecms模板中默认调用文章标题的标签如下:
{dede:arclist row=6 titlelen=32} &li&&a href="[field:arcurl/]"&[field:title/]&/a&&/li& {/dede:arclist}
那么我们调用自定义字段就是在这个基础上加以修改来实现的,我们还是以最开始提到的价格为例,具体标签表现为:
{dede:arclist row=8 titlelen=32 addfields='jiage' channelid='1'} &li&&span&¥[field:jiage/]起&/span&&a href="[field:arcurl/]"&[field:title/]&/a&&/li& {/dede:arclist}
我们可以看到和第一个标签比较起来有2个不同的地方: 1, 在{dede:arclist row=6 titlelen=32}处多出了addfields='jiage' channelid='1' ,其中addfields='jiage'表示的是指定要获得的字段 addfields='字段1,字段' channelid='1' 表示的是该字段是属于哪个模型的,我们这里是指文章模型里添加到所以channelid=的值为1..。 确定文章模型的的ID是多少,我们里在文章模型管理里找到如下图红色框内的就是模型ID.
2,还多出一个&[field:jiage/]&这个就是我们在添加字段时添加到字段名了。如果你需要在列表页中的{dede:list}里调用自定义字段的话直接添加 &[field:jiage/]& 就可以了,但前提条件是你添加字段的时候必须选择了该项参数。
以上就是关于dedecms自定义字段的添加和调用方法。 另外也可以通过在数据库中添加字段,修改模板文件也能实现的。比如编辑栏目的时候,添加自己想要的栏目的自定义设置,比如添加栏目关键字等等。下面是具体的操作。 第一步:我们要进去mysql 数据库里添加字段,自己命名好!比如我下面添加了一个栏目搜索关键字字段,当然你字段可以自己新建,找到表dede_arctype (这个是栏目模型的数据库表,前面是你安装的表名)然后点击
在点击添加字段
到这里数据库字段添加好了。 接下来我们开始做后台。大家写找到后台栏目管理模版! 要更改的 2个 D:\www\dede\templets 模版:catalog_add.htm、catalog_edit.htm 下面就演示一个
然后添加 字段表单,这个一般大家都会的 我添加的代码是:
&tr& &td height="65"&栏目搜索关键字:&/td& &td& &textarea name="lanmukeywrod" cols="70" rows="4" id="lanmukeywrod"
&&?php echo $myrow['lanmukeywrod']?&&/textarea& &/td& &/tr&
这里注意了。表单的name 和id 要和添加的 mysql表字段一样,不应的话。还要多写个取值代码。一样的话。默认dedecms会自动取的,然后我们做最后一部,把数据添加进去。 大家找到: D:\www\dede\catalog_edit.php 目录可能和大家不一样 也就是后台 里面的 catalog_edit.php,catalog_add.php catalog_edit.php要改的地方有:38行
$upquery = "Update `dede_arctype` set issend='$issend', sortrank='$sortrank', typename='$typename', typedir='$typedir', isdefault='$isdefault', defaultname='$defaultname', issend='$issend', ishidden='$ishidden', channeltype='$channeltype', tempindex='$tempindex', templist='$templist', temparticle='$temparticle', namerule='$namerule', namerule2='$namerule2', ispart='$ispart', corank='$corank', description='$description', keywords='$keywords', moresite='$moresite', `cross`='$cross', `content`='$content', `crossid`='$crossid', `smalltypes`='$smalltypes' $uptopsql where id='$id' ";
sql语句里面添加我们刚才的 字段进去。也就是下面这个代码
$upquery = "Update `dede_arctype` set issend='$issend', sortrank='$sortrank', typename='$typename', typedir='$typedir', isdefault='$isdefault', defaultname='$defaultname', issend='$issend', ishidden='$ishidden', channeltype='$channeltype', tempindex='$tempindex', templist='$templist', temparticle='$temparticle', namerule='$namerule', namerule2='$namerule2', ispart='$ispart', corank='$corank', description='$description', keywords='$keywords', moresite='$moresite', `cross`='$cross', `content`='$content', `crossid`='$crossid', `smalltypes`='$smalltypes', `lanmukeywrod`='$lanmukeywrod' $uptopsql where id='$id' ";
看到了 这个是添加的:`lanmukeywrod`='$lanmukeywrod',这个是更新栏目的。catalog_add.php添加。也是同样的办法。 更改地址有:63行和196行。也是同样办法。添加字段信息 到sql里去 更改后的代码:63行:&
$queryTemplate = "insert into `dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype, tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`lanmukeywrod`) Values('~reid~','~topid~','~rank~','~typename~','~typedir~','$isdefault','$defaultname','$issend','$channeltype', '$tempindex','$templist','$temparticle','default','$namerule','$namerule2','0','0','','','0','','','0','0','0','','','$lanmukeywrod')";
添加了 lanmukeywrod 196行:
$in_query = "insert into `dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype, tempindex,templist,temparticle,modname,namerule,namerule2, ispart,corank,description,keywords,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`lanmukeywrod`) Values('$reid','$topid','$sortrank','$typename','$typedir','$isdefault','$defaultname','$issend','$channeltype', '$tempindex','$templist','$temparticle','default','$namerule','$namerule2', '$ispart','$corank','$description','$keywords','$moresite','$siteurl','$sitepath','$ishidden','$cross','$crossid','$content','$smalltypes','$lanmukeywrod')";
下面说下 如何调用到前台
{dede:field.lanmukeywrod/}
在模版里调用这个就可以了,如果大家是别的字段也是一样的调用,后面换成字段名称就可以了。 另外关于自定义字段的完全删除。 在修改网站的时候由于需要增加自定义字段,后来不需要的时候,发现自定义字段无法删除。 于是找到了数据库的dede_addonarticle这个表,看到了自定义字段,删除后,在后台的模型中看到自定义字段还存在,很多朋友都是做到这一步,就不知道如何做了。而且发布文章的时候还有错误,提示自定义字段找不到,而无法发布文章。 原来在dede_channeltype这里面也就是模型配置里面还存在这个自定义字段,进入数据库dede_channeltype表下,然后点击浏览内容,你会发现fieldset字段里面的内容还存在这个自定义字段。 以下为引用的内容:
&field:body itemname='文章内容' type='htmltext' isnull='true' default='' rename='' page='split'/& &field:daima itemname="代码" autofield="1" notsend="1" type="htmltext" isnull="true" islist="0" default="" function="" maxlength="" page=""& &/field:daima& 只要我们删除&field:你的字段&&/field&
这样就可以了,问题解决了。
阅读(...) 评论()如何直接调用dede织梦自定义字段图片地址
在默认的自定义图片字段模型调用时,一般调用出来是:
{dede:img text='' width='270' height='129'}
/uploads/-P.gif {/dede:img}这样的形式。
非常明显,这样是不能正确显示的,这是自定义图片字段的处理方式造成的。要解决这个问题,我们必须得创建一个自定义函数。这里我从新建模型到自定义字段的使用来举例说明下怎么直接调用图片地址。
假如我们要制作如下效果图中的幻灯片,方便在后台直接更改图片。而使用广告图片显然没法实现,我这里用的是新建一个模型,然后简历一个这个模型的栏目,再以发布文章的形式把图片添加进去,这个整个流程来说下。
一、新建一个模型,这个模型下共新添加两个字段:大图、小图。至于链接地址我直接使用的是跳转地址。其他设置默认即可。
大图、小图字段都这样添加
二、新建一个栏目,模型选择刚才新建的模型”幻灯片“
最好设置为隐藏该栏目
三、设置好以后在该栏目下新建需要显示的文档数目即可。我这里需要7个大图,那么我就建立了七个文档。
四、在建立文档的时候填写的方法如下图,我这里因为幻灯片点击需要调整到其他页,我没用新的字段,直接用的跳转地址更方便。
注意上图填写
五、下面就是开始调用了,我是用在头部的。
如果直接用一般的调用方法,直接用调用字段名的方法是显然就会出现如开头所说的现象。下面我们就来开始修改下程序,以便可以直接调用图片地址:
六、创建自定义函数
打开 /include/extend.func.
文件(注:这个文件就是系统预留的自定义函数接口文件,主要用于二次开发用的。如果你是老版本,默认没有这个文件,自己创建一个PHP文件即可),在最下面的?&上一行加入以下函数代码:(如果结尾没有?&那就直接在最下面添加)
function&GetOneImgUrl($img,$ftype=1){&&
if($img&&&/SPAN&&&''){&&
$dtp&=&new&DedeTagParse();&&
$dtp-&LoadSource($img);&&
if(is_array($dtp-&CTags)){&&
foreach($dtp-&CTags&as&$ctag){&&
if($ctag-&GetName()=='img'){&&
$width&=&$ctag-&GetAtt('width');&&
$height&=&$ctag-&GetAtt('height');&&
$imgurl&=&trim($ctag-&GetInnerText());&&
$img&=&'';&&
if($imgurl&!=&''){&&
if($ftype==1){&&
$img&.=&$&&
$img&.=&'.$imgurl.'"&width="'.$width.'"&height="'.$height.'"&/&';&&
$dtp-&Clear();&&
return&$&&
七、下面就可以开始调用图片地址了。
[field:自定义图片字段名
function="GetOneImgUrl(@me,显示类型)"/]
比如:我们的自定义图片字段名为 datu&和 xiaotu,
只举例调用datu字段的方法,那么调用方式有以下两种:
[field:datu
function='GetOneImgUrl(@me,0)'/]
调用图片的信息,自动调用宽度和高度(已包含Html代码的)
[field:datu&function='GetOneImgUrl(@me,1)'/]
只调用图片地址,一般可用于背景图嵌套
八、具体到调用代码里面的调用方法就是:
{dede:arclist typeid='12'
addfields='datu'
channelid='17'
limit='0,7'}
{/dede:arclist}
注意:上面蓝色的为要调用的字段要写进去,紫色为模型的颜色。
至此全部修改完毕。效果如下图:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Published on Mar 21, 2018 in
 我们用织梦制作企业网站时,点击进入每个栏目时,都会有“关于我们”,“新闻中心”,“产品展示”等提示性的图片,单独调用这些图片比较麻烦,我们可以修改程序,实现每个栏目都有上传栏目缩略图的功能,就方便多了。第一步:执行SQL命令为数据库的栏目表结构添加一个字段alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL
 第二步:修改涉及到文件:dede/catalog_add.php
dede/catalog_edit.php
dede/templets/catalog_add.htm
dede/templets/catalog_edit.htm
include/taglib/channel.lib.php
1、修改dede/catalog_add.php文件打开查找
$queryTemplate = “insert into `dede_arctype`
(reid,topid,sortrank,typename,typedir,
  替换为: (reid,topid,sortrank,typename,typedir,typeimg,
  将 (‘~reid~’,'~topid~’,'~rank~’,'~typename~’,'~typedir~’,
  替换为: (‘~reid~’,'~topid~’,'~rank~’,'~typename~’,'~typedir~’,'~typeimg~’,
  查找 $in_query = “INSERT INTO `dede_arctype`
  将 (reid,topid,sortrank,typename,typedir,
  替换为: (reid,topid,sortrank,typename,typedir,typeimg,
  将 (‘$reid’,'$topid’,'$sortrank’,'$typename’,'$typedir’,
  替换为: (‘$reid’,'$topid’,'$sortrank’,'$typename’,'$typedir’,'$typeimg’, 保存catalog_add.php。2、修改dede/catalog_edit.php文件查找 $upquery = “Update `dede_arctype` set
  在 typedir=’$typedir’, 其下面增加一行: `typeimg`=’$typeimg’,
  保存catalog_edit.php。 2、修改dede/templets/catalog_add.htm文件head头部增加如下代码&script language=”javascript” src=”../include/js/dedeajax2.js”&&/script&
&script language=’javascript’ src=”js/main.js”&&/script&
&script type=”text/javascript” src=”js/calendar/calendar.js”&&/script&
&!--增加栏目缩略图--&
&td width=&90& style=&padding-left:10&&栏目图片:&/td&
&td width=&560&&
&table width=&100%& border=&0& cellspacing=&1& cellpadding=&1&&
&td height=&30&&
&input name=&typeimg& type=&text& id=&typeimg& style=&width:240px& /&
&input type=&button&
value=&本地上传& style=&width:70cursor:display:none& /&
&iframe name='uplitpicfra' id='uplitpicfra' src='' style='display:none'&&/iframe&
&span class=&litpic_span&&&input name=&litpic& type=&file& id=&litpic&
onChange=&SeePicNew(this, 'divpicview', 'uplitpicfra', 165, 'archives_add.php');& size=&1& class='np coolbg'/&&/span&
&input type=&button& name=&Submit2& value=&选择图片& style=&margin-left:8& onClick=&SelectImage('form1.typeimg','small');& class='np coolbg'/&
&input type=&button& name=&Submit2& value=&裁剪& style=&margin-left:8& onClick=&imageCut('typeimg');& class='np coolbg'/&
&input type='checkbox' class='np' name='ddisremote' value='1' id='ddisremote'/&远程&br /&(栏目模板里用{dede:field.typeimg /}调用
&td width=&150& align=&center&&
&div id='divpicview' class='divpre'&&/div&
&!--增加栏目缩略图--&
缩略图调用 include/taglib/channel.lib.phpif($type=='top')
$sql = &Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From `dede_arctype` where reid=0 And ishidden&&1 order by sortrank asc limit 0,$row&;
else if($type==&son&)
//if($_sys_globals['typeid']&0) $typeid = $_sys_globals['typeid'];
if($typeid==0) {
return '';
$sql = &Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From `dede_arctype` where reid='$typeid' And ishidden&&1 order by sortrank asc limit 0,$row&;
else if($type==&self&)
if($reid==0) {
return '';
$sql = &Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From `dede_arctype` where reid='$reid' And ishidden&&1 order by sortrank asc limit 0,$row&;
内容页调用 includearc.archives.class.php $query = “Select arc.*,tp.reid,tp.typedir,ch.addtable
from `dede_archives` arc
left join dede_arctype tp on tp.id=arc.typeid
left join dede_channeltype as ch on arc.channel = ch.id
where arc.id=’$aid’ “;
$this-&Fields = $this-&dsql-&GetOne($query);
发表新评论
Designed By
/ Power By织梦dede自定义模型 数据类型图片调用方法 - DedeCMS教程 - 源码教程 - 学长源码
热门推荐:
你的位置: > >
> 织梦dede自定义模型 数据类型图片调用方法
(5.7sp1版测试通过)织梦DedeCMS网站内容模型普通文章调用自定义图片字段的方法:
方法一:我们首先需要创建一个自定义函数,
找到:/include/extend.func.php ,在& ?php 后加入以下代码:
function GetOneImgUrl($img,$ftype=1){
if($img && ''){
$dtp = new DedeTagParse();
$dtp-&LoadSource($img);
if(is_array($dtp-&CTags)){
foreach($dtp-&CTags as $ctag){
if($ctag-&GetName()=='img'){
$width = $ctag-&GetAtt('width');
$height = $ctag-&GetAtt('height');
$imgurl = trim($ctag-&GetInnerText());
$img = '';
if($imgurl != ''){
if($ftype==1){
$img .= '&img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" /&';
$dtp-&Clear();
调用实例:
{dede:arclist
addfields='pro_img1,pro_img2' channelid='1' }
&img src="[field:pro_img1 function='GetOneImgUrl(@me,1)'/]" width="100" height="100"
&a href="[field:pro_img2 function='GetOneImgUrl(@me,1)'/]"&&img src="[field:pro_img2function='GetOneImgUrl(@me,1)'/]" width="100" height="100"
{/dede:arclist}
channelid=说明一下是频道前面的id数字
‘pro_img1,pro_img2’ 这些是图片字段替换成你的就可
利用正则表达式来
{dede:arclist
addfields='pro_img1' channelid='1' }
&img src="[field:pro_img1 runphp='yes']
$ndtp = new DedeTagParse();
$ndtp-&LoadSource(@me);
$ntag = $ndtp-&GetTag("img");
@me = trim($ntag-&GetInnerText());
[/field:pro_img1]" width="100" height="100"
{/dede:arclist}
缺点只能保存一个 优点不用去改动源核心文件
channelid和typeid区别
channelid 频道调用 是在内容模型里管理,频道名称的前面也有一个id,这个ID用 channelid调用。
这个调用需要频道里面有子栏目才可以的。
而typeid 就是纯粹的栏目调用 可以调用里面的文章
这个就是 channelid频道和typeid栏目标签调用的区别。
转载请注明: &
与本文相关的文章

我要回帖

更多关于 dede搜索自定义字段 的文章

 

随机推荐