自定义DedeCMS频道内容模型与SQL标签应用

2012-7-9 13:52:37 来源:网络转载 浏览:250
DedeCMS也提供频道内容模型自定义功能,可以根据自己的需求建立频道模型,类似KingCMS的自定义模块。这篇文章不写如何建立频道内容模型,写写在首页或非自定义频道内容列表页如果要调用里面的内容使用的SQL标签。

要使用SQL标签,最基本的查看数据库字段是一定要会的,特别是如果用自定义模型字段都是自己加的,不是系统默认的。

先看下面这段调用的语句,我一行行解释吧,这样可能比较好理解。

    {dede:sql sql=" SELECT
    dede_addonevents.aid,
    dede_addonevents.typeid,
    dede_addonevents.events_place,
    dede_addonevents.begin_date,
    dede_addonevents.end_date,
    dede_events.ID,
    dede_events.typeid,
    dede_events.title,
    dede_events.description,
    dede_full_search.aid,
    dede_full_search.typeid,
    dede_full_search.url

    FROM dede_addonevents , dede_events , dede_full_search WHERE dede_addonevents.aid=dede_events.ID AND dede_events.ID=dede_full_search.aid ORDER BY dede_addonevents.aid DESC LIMIT 0, 4 " }

    [field:events_place/] [field:title function="cn_substr(@me,38)"/] [field:description function="cn_substr(@me,38)"/] [field:begin_date/] - [field:end_date /]

{/dede:sql}

dede_addonevents 和 dede_events 是自定义生成频道之后自动生成的表,默认的系统中是没有的。dede_full_search 这个表是存储DedeCMS中所有文章或自定义频道文章内容的路径的表,这里要调用URL,一定是需要打开的。

    dede_addonevents.aid,
    dede_addonevents.typeid,
    dede_addonevents.events_place,
    dede_addonevents.begin_date,
    dede_addonevents.end_date,
    dede_events.ID,
    dede_events.typeid,
    dede_events.title,
    dede_events.description,

这几个都是自定义表中需要调取的字段,在自定义频道生成的时候DedeCMS系统会自动加上.aid,.ID,.typeid,这样的ID字段,以实现多表关联查询。
这部分FROM dede_addonevents , dede_events , dede_full_search就不详细解释了,就是调用的表名。

下面这个部分就是多表关联查询的条件语句了

    WHERE dede_addonevents.aid=dede_events.ID AND dede_events.ID=dede_full_search.aid

当然是要ID能匹配上调用的内容才不出错。

    ORDER BY dede_addonevents.aid DESC LIMIT 0, 4

这句就是数据显示的倒序正序了,Mysql支持LIMIT 0, 4 这个设置起始位置非常方便。

[field:events_place/] [field:title function="cn_substr(@me,38)"/] [field:description function="cn_substr(@me,38)"/] [field:begin_date/] - [field:end_date /]
这个部分就是DedeCMS的标签了,自定义的时候会有字段名,跟系统默认标签基本相近,方法也一致。标签问题查看系统的帮助就可以。

从这个语句可以看出,如果对DedeCMS的数据库表和字段了解的够清楚基本可以实现想调用什么数据就调用什么数据。以后有时间再看看可以不可以实现多个SQL查询。

(0)
(0)