织梦增加自定义页面不同模型调用方式不同

个性化展示内容,需要用到织梦的自定义字段
选择自动模型新建的情况下,调用方式是这样的,这个是自己经常使用的,并且是已经运用到实际的网页制作生成过程了!!

文章列表中(一般在首页和列表页)的调用方法

{dede:arclist addfields='add1,add2,...' channelid='自定义内容模型的ID' row='10' orderby='pubdate'} //(add1,add2为自字义的字段名) 
[field:add1 /]//(字段名1 调用 ) 
[field:add2 /]//(字段名2 调用 )
{/dede:arclist}
图片的调用比较复杂,下面会标红讲一下,不同于其它文本的调用方式

这里要注意的是,add1和add2是我们上面新建字段的时候定义的字段名称,内容模型的ID在内容模型管理页面可以看到,每个内容模型前面的数字就是,如文章模型的ID为1,其他的自行查阅。

内页(文章页)的调用

直接使用以下调用代码即可:

{dede:field.add1/}//(字段名add1的调用 )
====================================================下面这是在网上找的方法,自己没有亲自试用,选择独立模型的新建

一.如果某个字段需要在前台列表页显示,则在前台参数中勾选“使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,但是启用此选项将使列表查询变慢,如无必要请不要选择) ”;

二.独立模型的id一定要设置为负数,否则在列表页无法调出数据,这算是dedecms的一个bug。我本是计划修改下list标签,后来意外发现,只要将独立模型的id设置为负数即可正常显示。

建好独立模型和字段之后,在网站调用方法如下:

(1)首页调用自定义模型(独立模型):

独立模型的调用请用arclistsg 独立单表模型调用标签,而非arclist文档列表标签。网上大部分的教程文章都是针对已有的模型添加的自定义字段而非新建的独立模型,所以用arclist标签是调用不出独立模型的。

 

复制代码
代码如下:
{dede:arclistsg typeid='8' row='10' addfields='name,sex,tel' channelid='-101' }
[field:title/] 姓名:[field:name/] | 性别:[field:sex/] | 电话:[field:tel/]
{/dede:arclistsg}

 

要获取自定义字段的内容,必须符合两个条件,缺一不可:

1.指定 channelid 属性,我这是channelid='-101'
2.指定要获得的字段 addfields='字段1,字段2'

(2)列表页调用自定义模型(独立模型):

 

复制代码
代码如下:
{dede:list pagesize='10' addfields='name,sex,tel' channelid='-101' }
[field:title/] 姓名:[field:name/] | 性别:[field:sex/] | 电话:[field:tel/]
{/dede:list}


 
如果该栏目有内容,但是列表页没有掉出来,那就肯定是因为你的独立模型的id不为负数。

 

(3)内容页调用自定义模型的自定义字段数据(独立模型):

直接在要调用的地方写上{dede:field.name/},其中name改为你要调用的字段名称。

图片的调用比较复杂,下面会标红讲一下,不同于其它文本的调用方式


=============================这里详细的说一下图片调用,一般情况下图片调用都会出错,需要修改文件
一般情况下回出现这种错误
{dede:img text='' width='270' height='129'} /uploads/117517/1-11751H21F54P.png {/dede:img}
需要修改文件::::::extend.func.php
打开 /include/extend.func.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 .= $imgurl;    
                        }    
                        else{    
                            $img .= '<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />';    
                        }    
                    }    
                                
                }    
            }    
        }    
        $dtp->Clear();    
        return $img;        
    }    
 
--------------------- 
修改之后调用方式也要更改一下 ,正确的调用自定义图片的方式是:
[field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/]  
例如:自定义图片字段名为 nextimg ,其调用方式有如下两种:
第一:只调用图片路径
[field:nextimg function='GetOneImgUrl(@me,1)'/]  
第二:调用整个img标签
[field:nextimg function='GetOneImgUrl(@me,0)'/] 
---------------------