PHPIN.NET

 找回密码
 立即注册
查看: 8870|回复: 1

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

[复制链接]

469

主题

31

回帖

5509

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5509
发表于 2015-1-14 17:03:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

开发的时候我们经常需要把增加带有默认值的字段中的值调用出来的情况。后台修改,前台就得手动修改,非常不方便。用以下函数即可解决此问题。
在Userfun.php中增加以下函数代码:
  1. <?php
  2. //返回字段信息函数
  3. //函数说明:f是字段名 tid是数据表ID tpl是模版
  4. function ReturnF($f, $tid, $tpl = '<a href="{zhi}">{f}</a>') {
  5.     global $empire, $dbtbpre;
  6.     $f = RepPostVar($f);
  7.     $tid = (int)$tid;
  8.     if (!$f || !$tid) {
  9.         return FALSE;
  10.     }
  11.     $sql = $empire->fetch1("select fvalue from {$dbtbpre}enewsf where f='$f' and tid=$tid limit 1");
  12.     $arr = explode('|', $sql[fvalue]);
  13.     foreach ($arr as $val) {
  14.         $val = explode('==', $val); //值==名称时候用的
  15.         $val[1] = $val[1] ? $val[1] : $val[0];
  16.         $r.= str_replace(array('{zhi}', '{f}'), $val, $tpl); //替换模版变量
  17.         
  18.     }
  19.     return str_replace(':default', '', $r);
  20. }
复制代码

简要说明:
f是要查询的字段名 tid是数据表ID(帝国后台数据表管理可查看) tpl是前台输出使用的模版
Tpl说明:
比如字段默认值中 0==中国
<a href="{zhi}">{f}</a> {zhi}为0,{f}为中国,以此类推。
前台使用:
  1. <?=ReturnF('字段名',数据表ID,模板代码)?>
复制代码



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

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

以下为不带模板使用(模板需要自定义):
  1. //返回字段信息函数
  2. //函数说明:f是字段名 tid是数据表ID
  3. function ReturnF($f, $tid) {
  4.     global $empire, $dbtbpre;
  5.     $f = RepPostVar($f);
  6.     $tid = (int)$tid;
  7.     if (!$f || !$tid) {
  8.         return FALSE;
  9.     }
  10.     $sql = $empire->fetch1("select fvalue from {$dbtbpre}enewsf where f='{$f}' and tid=$tid limit 1");
  11.     $arr = explode('|', $sql['fvalue']);
  12.     foreach ($arr as $val) {
  13.         $val = explode('==', $val); //值==名称时候用的
  14.         $val[1] = $val[1] ? $val[1] : $val[0];
  15.         $r[$val[0]] = str_replace(':default', '', $val[1]);
  16.     }
  17.     return $r;
  18. }
复制代码


34

主题

2

回帖

731

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

喜欢用数组的可以参考下面例子:
$all=returnf('type', 28,'|{zhi}{f}{zhi}|');
preg_match_all('/\|([0-9+])(.*?)([0-9+])\|/', $all, $b);
$num=count($b[1]);
for($i=-1;$i<$num;$i++){
$typearr[$b[1][$i]]=$b[2][$i];
}
print_r($typearr);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-4-26 05:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表