帝国cms常见问题:输出模型添加的字段信息(二开非常实用)

开发的时候我们经常需要把增加带有默认值的字段中的值调用出来的情况。后台修改,前台就得手动修改,非常不方便。用以下函数即可解决此问题。在Userfun.php中增加以下函数代码:<

开发的时候我们经常需要把增加带有默认值的字段中的值调用出来的情况。后台修改,前台就得手动修改,非常不方便。用以下函数即可解决此问题。nHGECMSPLUS

在Userfun.php中增加以下函数代码:nHGECMSPLUS

<?phpnHGECMSPLUS
//返回字段信息函数nHGECMSPLUS
//函数说明:f是字段名 tid是数据表ID tpl是模版nHGECMSPLUS
function ReturnF($f, $tid, $tpl = '<a href="{zhi}">{f}</a>') {nHGECMSPLUS
    global $empire, $dbtbpre;nHGECMSPLUS
    $f = RepPostVar($f);nHGECMSPLUS
    $tid = (int)$tid;nHGECMSPLUS
    if (!$f || !$tid) {nHGECMSPLUS
        return FALSE;nHGECMSPLUS
    }nHGECMSPLUS
    $sql = $empire->fetch1("select fvalue from {$dbtbpre}enewsf where f='$f' and tid=$tid limit 1");nHGECMSPLUS
    $arr = explode('|', $sql[fvalue]);nHGECMSPLUS
    foreach ($arr as $val) {nHGECMSPLUS
        $val = explode('==', $val); //值==名称时候用的nHGECMSPLUS
        $val[1] = $val[1] ? $val[1] : $val[0];nHGECMSPLUS
        $r.= str_replace(array('{zhi}', '{f}'), $val, $tpl); //替换模版变量nHGECMSPLUS
        nHGECMSPLUS
    }nHGECMSPLUS
    return str_replace(':default', '', $r);nHGECMSPLUS
}nHGECMSPLUS

简要说明:nHGECMSPLUS

f是要查询的字段名 tid是数据表ID(帝国后台数据表管理可查看) tpl是前台输出使用的模版nHGECMSPLUS

Tpl说明:nHGECMSPLUS

比如字段默认值中 0==中国nHGECMSPLUS

<a href="{zhi}">{f}</a> {zhi}为0,{f}为中国,以此类推。nHGECMSPLUS

前台使用:nHGECMSPLUS

<?=ReturnF('字段名',数据表ID,模板代码)?>nHGECMSPLUS

简单例子说明:nHGECMSPLUS
比如我在数据表ID1中有一个字段叫sort,里面的默认值为苹果,橘子,核桃nHGECMSPLUS
nHGECMSPLUS
前台模板中:<?=ReturnF('sort',1,'<a href="{zhi}">{f}</a>')?>nHGECMSPLUS
输出之后的html代码为:nHGECMSPLUS
<a href="苹果">苹果</a>nHGECMSPLUS
<a href="橘子">橘子</a>nHGECMSPLUS
<a href="核桃">核桃</a>nHGECMSPLUS

以下为不带模板使用(模板需要自定义):nHGECMSPLUS

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

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

---------------------------------------------------------------------------------------------------------nHGECMSPLUS

喜欢用数组的可以参考下面例子:nHGECMSPLUS
$all=returnf('type', 28,'|{zhi}{f}{zhi}|');nHGECMSPLUS
preg_match_all('/|([0-9+])(.*?)([0-9+])|/', $all, $b);nHGECMSPLUS
$num=count($b[1]);nHGECMSPLUS
for($i=-1;$i<$num;$i++){nHGECMSPLUS
$typearr[$b[1][$i]]=$b[2][$i];nHGECMSPLUS
}nHGECMSPLUS
print_r($typearr);nHGECMSPLUS

如下示例代码:

<p>&lt;?php<br />//返回字段信息函数<br />//函数说明:f是字段名 tid是数据表ID tpl是模版<br />function ReturnF($f, $tid, $tpl = &#39;&lt;a href=&quot;{zhi}&quot;&gt;{f}&lt;/a&gt;&#39;) {<br />&nbsp; &nbsp; global $empire, $dbtbpre;<br />&nbsp; &nbsp; $f = RepPostVar($f);<br />&nbsp; &nbsp; $tid = (int)$tid;<br />&nbsp; &nbsp; if (!$f || !$tid) {<br />&nbsp; &nbsp; &nbsp; &nbsp; return FALSE;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; $sql = $empire-&gt;fetch1(&quot;select fvalue from {$dbtbpre}enewsf where f=&#39;$f&#39; and tid=$tid limit 1&quot;);<br />&nbsp; &nbsp; $arr = explode(&#39;|&#39;, $sql[fvalue]);<br />&nbsp; &nbsp; foreach ($arr as $val) {<br />&nbsp; &nbsp; &nbsp; &nbsp; $val = explode(&#39;==&#39;, $val); //值==名称时候用的<br />&nbsp; &nbsp; &nbsp; &nbsp; $val[1] = $val[1] ? $val[1] : $val[0];<br />&nbsp; &nbsp; &nbsp; &nbsp; $r.= str_replace(array(&#39;{zhi}&#39;, &#39;{f}&#39;), $val, $tpl); //替换模版变量<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return str_replace(&#39;:default&#39;, &#39;&#39;, $r);<br />}</p>
分享到 :
相关推荐

发表评论

登录... 后才能评论

评论(3)

加入本站VIP会员订阅计划,海量资源免费下载查看

目前为止共有3位优秀的VIP会员加入!

立即加入VIP会员