admin 发表于 2015-1-14 17:03:50

帝国CMS输出模型添加的字段信息(二开非常实用)

帝国CMS输出模型添加的字段信息(二开非常实用)

本文关键字词:帝国cms二开,帝国字段值,帝国cms教程,帝国cms技巧

开发的时候我们经常需要把增加带有默认值的字段中的值调用出来的情况。后台修改,前台就得手动修改,非常不方便。用以下函数即可解决此问题。
在Userfun.php中增加以下函数代码:
<?php
//返回字段信息函数
//函数说明:f是字段名 tid是数据表ID tpl是模版
function ReturnF($f, $tid, $tpl = '<a href="{zhi}">{f}</a>') {
    global $empire, $dbtbpre;
    $f = RepPostVar($f);
    $tid = (int)$tid;
    if (!$f || !$tid) {
      return FALSE;
    }
    $sql = $empire->fetch1("select fvalue from {$dbtbpre}enewsf where f='$f' and tid=$tid limit 1");
    $arr = explode('|', $sql);
    foreach ($arr as $val) {
      $val = explode('==', $val); //值==名称时候用的
      $val = $val ? $val : $val;
      $r.= str_replace(array('{zhi}', '{f}'), $val, $tpl); //替换模版变量
      
    }
    return str_replace(':default', '', $r);
}
简要说明:
f是要查询的字段名 tid是数据表ID(帝国后台数据表管理可查看) tpl是前台输出使用的模版
Tpl说明:
比如字段默认值中 0==中国
<a href="{zhi}">{f}</a> {zhi}为0,{f}为中国,以此类推。
前台使用: <?=ReturnF('字段名',数据表ID,模板代码)?>


简单例子说明:
比如我在数据表ID1中有一个字段叫sort,里面的默认值为苹果,橘子,核桃

前台模板中:<?=ReturnF('sort',1,'<a href="{zhi}">{f}</a>')?>
输出之后的html代码为:
<a href="苹果">苹果</a>
<a href="橘子">橘子</a>
<a href="核桃">核桃</a>

以下为不带模板使用(模板需要自定义):
//返回字段信息函数
//函数说明:f是字段名 tid是数据表ID
function ReturnF($f, $tid) {
    global $empire, $dbtbpre;
    $f = RepPostVar($f);
    $tid = (int)$tid;
    if (!$f || !$tid) {
      return FALSE;
    }
    $sql = $empire->fetch1("select fvalue from {$dbtbpre}enewsf where f='{$f}' and tid=$tid limit 1");
    $arr = explode('|', $sql['fvalue']);
    foreach ($arr as $val) {
      $val = explode('==', $val); //值==名称时候用的
      $val = $val ? $val : $val;
      $r[$val] = str_replace(':default', '', $val);
    }
    return $r;
}

yonglan 发表于 2015-1-28 12:04:30

另一个例子:
比如一个字段初始值是 值==名称形式,而这个字段以后还会增加更多值==名称,在好多地方都用这个字段的名称。比如灵动或自己写的while循环,不可能以后加了值==名称所有调用地方都去逐一更改。那么就可以用此办法。
$typeall=returnf('type', 28,'|{zhi}{f}{zhi}|');
循环里面:
preg_match('/\|'.$r.'(.*?)'.$r.'\|/', $typeall,$a);
$type=$a;
循环里需要输出的地方写$type就可以了

---------------------------------------------------------------------------------------------------------

喜欢用数组的可以参考下面例子:
$all=returnf('type', 28,'|{zhi}{f}{zhi}|');
preg_match_all('/\|()(.*?)()\|/', $all, $b);
$num=count($b);
for($i=-1;$i<$num;$i++){
$typearr[$b[$i]]=$b[$i];
}
print_r($typearr);
页: [1]
查看完整版本: 帝国CMS输出模型添加的字段信息(二开非常实用)