[原创]DEDECMS仿站笔记1:自定义联动类别调用

1. PrintAutoFieldsAdd 载入自定义表单(用于发布):
文件:inc/inc_archives_function.php
行号:472
函数声明:function PrintAutoFieldsAdd(&$fieldset,$loadtype=’all’)
参数:
$fieldset:自定义模型的字段集合
$loadtype:价值类型有两种:all ,autofield;autofield
功能说明:
发布自定义模型界面调用时,拼装自定义模型的表单。

2. DedeTagParse Dede织梦模板类
文件:include\dedetag.class.php
行号:70
类声明:class DedeTagParse
方法:
 LoadSource($str):载入模板字符串,调用data/tplcache/MD5($str).inc的模板文件,然后调用LoadTemplate()方法解析模板
 LoadTemplate($filename):载入模板文件 然后调用ParseTemplet()解析模板
 ParseTemplet():解析模板
3. 模板列表调用内容模型格式数据写法:
{dede:arclist channelid=’18’ addfields=’xuebu,course_author’}

  • [field:course_author/]aaa
  • {/dede:arclist}
    说明:
    Channelid:内容模型管理中的ID号
    AddFields:定义的字段名,需要在内容模型管理中的“列表附加字段”中添加

    4. 自定义联动类别信息的调用方法:
    1)函数编写
    打开 /include/extend.func.php 文件(注:本文件为自定义函数接口文件,若不存在,请自行创建),在最后一行的?>上添加如下代码:
    function Getsysenum($fields,$egroup){
    global $dSQL;
    $row = $dsql->GetOne(“select * from dede_sys_enum where evalue = ‘”.$fields.”‘and egroup=’”.$egroup. “’”);
    if(!is_array($row)){
    return “联动类别不存在“;
    }
    else{
    return $row[‘ename’];
    }
    }
    保存关闭即可!
    2)函数调用
    这个函数的调用非常简单,只需要将“枚举值”传递过来即可,这个缓存组名通常也就是内容模型中的自定义联动菜单字段名:
    function Getsysenum(‘枚举值’,’联动组名’);
    3)调用实例
    我们来看一下调用的实例代码:
    {dede:arclist titlelen=’60’ row=’8′ channelid=’1′ addfields=’nativeplace’}

  • [field:nativeplace function=”Getsysenum(@me,’ nativeplace’)”/]
    [field:title /]
  • {/dede:arclist}
    其中[field:nativeplace function=”Getsysenum(@me,’ nativeplace’)”/] 就是将nativeplace字段进行Getsysenum函数处理。

    5. 联动类别信息存储表dede_sys_enum:
    字段 类型 长度 是否主键 描述
    ID Smallint 6 是
    Ename Char 30 分类名称
    Evalue Smallint 6 分类ID
    Egroup Char 20 分组名称
    Disorder Smallint 5 排列顺序
    Issign Tinyint 1 是否系统1=系统 0=非系统

    6. 扩展函数编写文件/include/extend.func.php:
    通过上面的扩展查询分类的函数可见可以自定义扩展函数在/include/extend.func.php文件中,用于标签中进行调用,
    于是编写了扩展函数查询给定分类组合的,一级分类信息的扩展数:
    Function GetSysEnum($egroup,$level)
    global $dSQL;
    $row = $dsql->GetOne(“select ename from dede_sys_enum where evalue like ‘%”.$level.”‘and egroup=’”.$egroup. “’”);
    if(!is_array($row)){
    return “联动类别不存在“;
    }
    else{
    return $row[‘ename’];

    调用方式:
    Function=’GetSysEnum(‘xuebu’,’0’)’

    赞(0) 打赏
    分享到: 更多 (0)

    觉得文章有用就打赏一下文章作者

    支付宝扫一扫打赏

    微信扫一扫打赏