DedeCMS 是一款功能强大的内容管理系统,其自带的自定义属性(如头条[h]、推荐[c]、幻灯[f]等)可以灵活调用,满足不同场景的需求。以下是如何在首页或列表中调用这些自定义属性的方法,并结合 PHP 代码实现更高级的功能。
### 调用自定义属性的基本方法 如果你需要在首页或列表页调用带有特定自定义属性的文章,可以使用以下代码:

{dede:arclist typeid='1' flag='c'}
    
  • [field:title/]
  • {/dede:arclist}
    上述代码表示:从分类 ID 为 1 的文章中调用所有带有“推荐”属性(flag='c')的文章,并以列表形式展示。
    ### 在内容页调用自定义属性 如果需要在文章内容页显示自定义属性,可以直接使用以下标签:
    
    {dede:field.flag/}
        
    不过,默认情况下,显示的结果并不是文字描述,而是类似“c”、“p”这样的标识符。这是因为系统直接读取了数据库中的原始值。若要将这些标识符转换为对应的中文描述,需要通过 PHP 处理。
    ### 使用 PHP 实现自定义属性的文字转换 以下是一个示例代码,展示如何将“c”转换为“[推荐]”:
    
    {dede:field name='array' runphp='yes'}
    if(@me['typeid']=='1' && strstr(@me['flag'],'c')=='c') @me='[推荐]'.@me['title'];
    else @me=@me['title'];
    {/dede:field}
        
    此代码增加了栏目的 ID 判断条件。如果不需要判断栏目 ID,可以简化为:
    
    {dede:field name='array' runphp='yes'}
    if(strstr(@me['flag'],'c')=='c') @me='[推荐]'.@me['title'];
    else @me=@me['title'];
    {/dede:field}
        

    ### PHP 判断字符串是否包含指定字符的方法 在实际开发中,我们经常需要判断一个字符串是否包含某个子字符串。以下是几种常见的方法: #### 方法一:使用 `strstr` `strstr` 函数返回被查找字符串首次出现的位置到字符串末尾的部分。如果没有找到,则返回空值。
    
    
        
    #### 方法二:使用 `stristr` `stristr` 的用法与 `strstr` 类似,但不区分大小写。可以根据需求选择是否区分大小写。
    #### 方法三:使用 `strpos` `strpos` 返回子字符串首次出现的位置,如果没有找到,则返回 `false`。执行速度较快,但对中文支持不够友好。
    
    
        

    #### 方法四:使用 `explode` 拆分数组 将字符串拆分为数组后,通过判断数组长度来确定是否包含指定字符。
    
    function chstr($str, $in) {
        $tmparr = explode($in, $str);
        if (count($tmparr) > 1) {
            return true;
        } else {
            return false;
        }
    }
    
    $str = 'abc#defg';
    $in = '#'; // 判断是否包含 # 字符
    $bh = chstr($str, $in);
    
    if ($bh) {
        echo '字符串' . $str . '包含' . $in;
    } else {
        echo '字符串' . $str . '不包含' . $in;
    }
        

    通过以上方法,你可以轻松实现 DedeCMS 自定义属性的高级调用和处理。希望这些技巧能帮助你更好地优化网站内容展示!