欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

dedecms标签解析

<?php   if(!defined('DEDEINC')) exit('Request Error!');
/**
 * 文章列表调用标记
 *
 * 9:19 2010年7月13日:修正对isweight属性的支持
 *
 * @version        $Id: arclist.lib.php 3 9:19 2010年7月13日Z tianya $
 * @package        DedeCMS.Taglib
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
 
/**
 *  arclist解析标签
 *
 * @access    public
 * @param     object  $ctag  解析标签
 * @param     object  $refObj  引用对象
 * @return    string  成功后返回解析后的标签内容
 */
 
/*>>dede>>
<name>文档列表</name>
<type>全局标记</type>
<for>V55,V56,V57</for>
<description>获取指定文档列表</description>
<demo>
{dede:arclist  flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}
</demo>
<attributes>
    <iterm>col:分多少列显示(默认为单列),5.3版中本属性可以通过多种方式进行多行显示</iterm>
    <iterm>row:返回文档列表总数</iterm> 
    <iterm>typeid:栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目</iterm>
    <iterm>getall:在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类</iterm>
    <iterm>titlelen:标题长度 等同于titlelength</iterm>
    <iterm>infolen:表示内容简介长度 等同于infolength</iterm>
    <iterm>imgwidth:缩略图宽度</iterm>
    <iterm>imgheight:缩略图高度</iterm>
    <iterm>listtype: 栏目类型 image含有缩略图 commend推荐</iterm>
    <iterm>orderby:文档排序方式</iterm>
    <iterm>keyword:含有指定关键字的文档列表,多个关键字用","分</iterm>
    <iterm>innertext:单条记录样式</iterm>
    <iterm>aid:指定文档ID</iterm>
    <iterm>idlist:提取特定文档(文档ID</iterm>
    <iterm>channelid:频道ID</iterm>
    <iterm>limit:(起始ID从0开始)表示限定的记录范围(如:limit='1,2'  表示从ID为1的记录开始,取2条记录</iterm>
    <iterm>flag:自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]</iterm>
    <iterm>noflag:同flag,但这里是表示不包含这些属性</iterm>
    <iterm>orderway:值为 desc 或 asc ,指定排序方式是降序还是顺向排序,默认为降序</iterm>
    <iterm>subday:表示在多少天以内的文档</iterm>
</attributes> 
>>dede>>*/
 
function lib_arclist( &$ctag, &$refObj )
{
    global $envs;
 
    $autopartid = 0;
    $tagid '';
    $tagname $ctag->GetTagName();
    $channelid $ctag->GetAtt('channelid');
    
    //增加对分页内容的处理
    $pagesize $ctag->GetAtt('pagesize');
    if($pagesize == '')
    {
        $multi = 0;
    else {
        $tagid $ctag->GetAtt('tagid');
    }
    // arclist是否需要weight排序,默认为"N",如果需要排序则设置为"Y"
    $isweight $ctag->GetAtt('isweight');
 
    if($tagname=='imglist' || $tagname=='imginfolist') {
        $listtype 'image';
    }
    else if($tagname=='specart') {
        $channelid = -1;
        $listtype='';
    }
    else if($tagname=='coolart') {
        $listtype 'commend';
    }
    else if($tagname=='autolist') {
        $autopartid $ctag->GetAtt('partsort');
    }
    else {
        $listtype $ctag->GetAtt('type');
    }
 
    //排序
    if($ctag->GetAtt('sort')!=''$orderby $ctag->GetAtt('sort');
    else if($tagname=='hotart'$orderby 'click';
    else $orderby $ctag->GetAtt('orderby');
 
    //对相应的标记使用不同的默认innertext
    if(trim($ctag->GetInnerText()) != ''$innertext $ctag->GetInnerText();
    else if($tagname=='imglist'$innertext = GetSysTemplets('part_imglist.htm');
    else if($tagname=='imginfolist'$innertext = GetSysTemplets('part_imginfolist.htm');
    else $innertext = GetSysTemplets("part_arclist.htm");
 
    //兼容titlelength
    if($ctag->GetAtt('titlelength')!=''$titlelen $ctag->GetAtt('titlelength');
    else $titlelen $ctag->GetAtt('titlelen');
 
    //兼容infolength
    if($ctag->GetAtt('infolength')!=''$infolen $ctag->GetAtt('infolength');
    else $infolen $ctag->GetAtt('infolen');
 
    $typeid = trim($ctag->GetAtt('typeid'));
    if(empty($typeid)) {
        $typeid = ( isset($refObj->Fields['typeid']) ? $refObj->Fields['typeid'] : $envs['typeid'] );
    }
 
    if($listtype=='autolist') {
        $typeid = lib_GetAutoChannelID($ctag->GetAtt('partsort'),$typeid);
    }
 
    if($ctag->GetAtt('att')=='') {
        $flag $ctag->GetAtt('flag');
    }
    else {
        $flag $ctag->GetAtt('att');
    }
 
    return lib_arclistDone
           (
             $refObj$ctag$typeid$ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen$infolen,
             $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype$orderby,
             $ctag->GetAtt('keyword'), $innertext$envs['aid'], $ctag->GetAtt('idlist'), $channelid,
             $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'),
             $tagid,$pagesize,$isweight
           );
}


完全看不懂怎么解析的的 {dede: article    函数也找不到调用的地方 蛋疼啊       让我蛋疼的是 最终生成的PHP代码放在哪里了 他又是如何生成html代码的 各种问题 各种蛋疼

来自  
http://bbs.csdn.net/topics/390707246
普通分类: