163K网站系统

 找回密码
 注册
Mr.Li 发表于 2017-5-8 15:28:32 | 显示全部楼层 |阅读模式
主题5 | 帖子142 | 积分0

[后端开发文档] 插件开发 三:标签的结构和使用

[复制链接]
一标签系统分类:
1:系统标签 以{$开始}结束的特殊标志.如{$LoginUserInfochrname},在程序里不能使用这类标签作为页面独有标签.
2:数据标签 以{$开始}结束的特殊标志 如{$id}{$tizhong}等可以直接获取程序内具体数据的标签.
3:超级结构标签:
<标签名 参数集 注释>内容</标签名> 标签名可以是中文
如<UserList pageSize=20 >用户id:{$userid},昵称:{$chrname}</UserList>


二超级结构标签的解析:
1:cs中的解析:
Util.mh_Lable UserList = new Util.mh_Lable(ref strPage, "UserList");//解析strPage模板中browselist标签

2:获取标签中配置的参数,为两类:
2.1:数字值类型
  browselist.pagesize:每页条数/调用条数/特殊限制数字.
browselist.titlelen:标题类显示字符数限制.
browselist.strlen:内容,描述,简介等文字字符数限制.
2.2:字符型
  browselist.SqlCmdText:标签中设置的特殊用于控制sql语句的字符串,!谨慎使用,如 <browselist SqlCmdText="SELECT  userid,chrname  FROM mh163k_Regusers where styleid=2"
  browselist.tplpath:模板位置
  browselist.tplname:模板名
如:
<LivePaging pageSize=20 tplpath="live" tplname="list_live{$formid}.html" help="如果标签内容为空将加载tplpath,tplname模板"></LivePaging>
<UserList pageSize=20 >用户id:{$userid},昵称:{$chrname}</UserList>
这两个区别是:前者将加载live/list_live{$formid}.html模板作为标签内容(非自动).
2.3:特殊类型:
browselist.LableKeyValS:获取所有标签中参数集对象.用于以上两类自设参数不能满足你的需求,需要添加更多无限多的参数.
<UserList pageSize=20 orderby="userid desc" sqlwhere="styleid=2" >用户id:{$userid},昵称:{$chrname}</UserList>
解析后将可以获取:browselist.LableKeyValS["orderby"]:"userid desc" 等所有参数集中的参数



解析使用实例:

//获取web项目\template\pc(wap)\main\default\myplugin\index.html 模板文件
            nsb.PageRequest = new mhmode.PageRequest(20170501, nsb.doPage(1, "myplugin", "index.html", 1, -1));
            Util.mh_Lable UserList = new Util.mh_Lable(ref nsb.PageRequest.strPage, "UserList");//解析strPage模板中 UserList 标签

            if (!UserList.IsErr && String.IsNullOrWhiteSpace(UserList.DataStr) && !String.IsNullOrWhiteSpace(UserList.tplname))
            {
                //标签解析没出错,标签内容为空字符串,则加载tplpath/tplname配置模板作为标签内容
                UserList.DataStr = nsb.doPage(1, UserList.tplpath, UserList.tplname, 1, -1);
            }
            //判断参数是否有
            string sqlwhere = "", orderby="";
            UserList.LableKeyValS.TryGetValue("sqlwhere", out sqlwhere);
            UserList.LableKeyValS.TryGetValue("orderby", out orderby);
            if(!String.IsNullOrEmpty(sqlwhere)){sqlwhere= " where " + sqlwhere;}
             if(!String.IsNullOrEmpty(orderby)){orderby= " order by " + orderby;}
            //读取数据
             DataTable dt = nsb.selectGetDt("SELECT top " + UserList.pagesize.ToString() + " userid,chrname,openid  FROM mh163k_Regusers " + sqlwhere + orderby);

             //数据填充到UserList标签:1和2两种处理方式只用其中一种
            //1:对所有数据无需进行二次处理.
            // nsb.PageRequest.strPage = nsb.PageRequest.strPage.Replace(UserList.LableStr, nsb.Page_Replace(dt, UserList.DataStr, null));

            //2:对部分数据需要进行二次处理,如需要对绑定了微信的用户添加(微信)标志
             string UserListStr = "",OneData;
             int dtcount = dt.Rows.Count;
             for (int i = 0; i < dtcount; i++)
             {
                 OneData = UserList.DataStr.Replace("{$chrname}", dt.Rows["chrname"].ToString() + (!String.IsNullOrEmpty(dt.Rows["openid"].ToString()) ? "(微信)" : ""));
                 UserListStr += nsb.Page_Replace(dt, i, OneData, null);//对不需要特殊处理的数据进行集中处理
             }
             nsb.PageRequest.strPage = nsb.PageRequest.strPage.Replace(UserList.LableStr, UserListStr);


            nsb.ResponseE(nsb.PageRequest.strPage, "1", "1", "", 0);//输出模板文件






您需要登录后才可以回帖 登录 | 注册

本版积分规则

163K,为互联网事业发展提供源动力!

小黑屋|手机版|Archiver|163k.com.   

© 2001-2013 Comsenz Inc.( 皖ICP备11020229号

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