MetInfo开发文档

澳门新葡亰娱乐官网 6

后天通告多个王国cms纠正列表式分页模板教程,希望对那地点不熟练的人爱不忍释

【1】本人校勘帝国cms默许的分页样式(css),那样做的平价是你不用去更动帝国的宗旨文件,方便以元朝升。

MetInfo应用开拓文书档案

王国cms未有松开后台改正列表式分页模板,所以必要改进php文件

【2】本人入手去改善帝国的分页(php+css),帝国的分页在e>class>下的t_functions.php那个文件里。

澳门新葡亰娱乐官网 1

因为多数新手对Php不怎么通晓,所以前不久发表叁个列表式分页模板改良教程,教我们修改性格风格的列表式分页模板

===============================================

MetInfo.png

率先解释一下,使用本身的这几个艺术更改列表页模板不会形成帝国cms不健康,

列表页模板[!–show.page–]:分页导航(下拉式卡塔尔国  大约在10-98行;

1. 付出计划

因为使用了自定义函数,跟帝国原函数文件t_funciton.php分离的,所以请我们方向照着自个儿的法子做

列表页模板[!–show.listpage–]:分页导航(列表式卡塔尔 在101-169行;

1.1 前言

MetInfo选取制作介绍
MetInfo集团网址管理种类是米拓集团旗下的一款特地为厂家花费的建站CMS,具有简易、易于SEO、安全稳固性、多语言的特点,前段时间有30万活跃公司客户,布满满世界各市。
Metinfo应用开荒框架是根据MetInfo公司网址管理体系的二个行使开拓包,使用Metinfo应用开辟框架开采的网址作用可以直接嵌入当前系统,並且因为开垦包集成了多量连串底层帮助,使整个开荒进程轻松、飞快,况兼扶植系统进级。使用Metinfo应用开荒框架开辟的使用,通过我们核准后,能够上架到MetInfo应用市场,开采人士也得以一直入住MetInfo在线服务平台。
假定你想学习Metinfo公司应用开拓,能够参见此文档,通过此文书档案的学习,能够直接领悟Metinfo集团应用开荒方式。别的我们除文书档案外,也提供录制教程。倘让你想直接教学学习Metinfo集团应用开垦,直接和我们的开辟人士进行调换,能够参加咱们的Metinfo集团应用开采的在线课程。

效果与利益如下:

内容页模板(重回内容分页):分页导航 在172-228行;

1.2 根基知识与工具

功底知识
开展MetInfo应用开垦要求调控以下基本功支撑,若无对景挂画底子,能够点击前边链接进行学习。
PHP:熟练,PHP教程;
HTML:基本驾驭,HTML教程;
CSS:基本领会,CSS教程;
JavaScript(简称JS)与 Jquery
基本掌握,JS教程、Jquery教程;

下边走入校勘列表模板正题:

剧情页模板(重临下拉式内容分页导航):标题式分页导航 在231-262行。

1.3 情形搭建

碰着搭建
要选取MetInfo开拓使用,就务须搭建 MetInfo运维所急需的条件以至安装
MetInfo
,以便在你协和的微微处理器上就可以预知营造和测量试验。搭建完结以后也便是你协和的微处理器便是二个网址服务器,能够设置和周转网址,运维浏览器网站栏输入http://localhost/
就会访谈本地网址,当然,外网是不可能访谈的。

先是,你须要在本地计算机搭建网站运转情形:
MetInfo 基于 PHP+Mysql 构造,由此需求在您的微机上设置能够协助 PHP+Mysql
程序运维的情况。(Mac
OS自带Apache+PHP,下载MySQL就可以;Windows可使用wamp、phpstudy等集成境遇;Linux搭建lamp或lnmp卡塔尔
然后,你须要在本地Computer安装 MetInfo :
1、从 MetInfo官网
下载最新版本;
2、在地面Computer wamp 网站根目录下新建文件夹,名称自定义,如 metinfo ;
3、把下载的 MetInfo 最新版本解压到 metinfo 下;
注意解压后 metinfo 下要直接能找到 index.php
等好多顺序文件,而无法在其子文件夹下;
4、运转浏览器,访问
http://localhost/metinfo/
就可以走入安装分界面;
5、根据步骤一步一步操作完结安装;
** 注意**:数据库消息中的数据库名称自定义填写,数据库帐号 root
,密码不用填写。

第一步:

===============================================

澳门新葡亰娱乐官网,1.4 代码标准

此标准为MetInfo应用开荒代码书写提议,代码总体原则是“使代码清晰易读。全体代码风格要保持一致。”固然有书写代码未有正经的,请参见此文书档案。

代码规范

1、全数类,方法,文件名,链接地址等都要小写。常量要大写。未有强调要大写的,一律小写。(注:唯有MetInfo应用框架首要的基本类,方法是大写的,应用中实际不是选拔大写类,方法名称卡塔尔
2、全部的 SQL语句的要害词都要大写,如:

SELECT  *  FROM met_applist WEHER 
        no > 1000 ORDER BY no DESC。

3、运算符,两边要打空格,如:

if ($a == $b || $c > $f) $c .= $m;

4、双引号里面有变量要用{}括起来。如 :

$a = "你好:{$a},有什么事情";

5、使用echo <<进行块输出的时候,里面包车型大巴变量也要用{}括起来。

<table class="display dataTable ui-table" 
       data-table-ajaxurl="{$_M[url][own_form]}a=doindex_json" 
       data-table-pagelength="20">

6、数组的键值要用单引号引起来。如 :

$array['key1']['key2']

7、循环、判定语句等,含有{}这种协会的言语。“{”(初始标签卡塔尔此前要留空格。“(”从前也要留空格。“}”(甘休标签卡塔尔要另起一行,而且与函数类名或言辞的关键词对齐,里面包车型大巴代码块要一个TAB的缩进。

if ($a > $b) { // 运算符前后有空格, “(”前有空格,“{”前有空格
    $a = 1; // 运算符前后有空格 
    $b = 2; // 一个tab的缩进
} else {// 另起一行,注意else两边有空格
    $b = 3;
}
$i = 0;
while ($i > 10) {  // 运算符前后有空格, “(”前有空格,“{”前有空格
    $i++;// 一个tab的缩进
}
foreach ($array as $key => $val) {//“(”前有空格,“{”前有空格,“=>”前后后空格
    $i++;// 一个tab的缩进
}
switch ($i) { //“(”前有空格,“{”前有空格
 case 10://一个tab的缩进
        $i++;//一个tab的缩进
 break;//一个tab的缩进
}

8、当if语句后边独有一行代码的时候能够不是用{}但是(卡塔尔前面要加空格。如:

if ($a == $b || $c > $f)  $c = $m; //  if 后面有空格

9、函数的参数有用“,”(逗号隔绝后)要有空格,函数定义的时候“卡塔尔(قطر‎”与“{”之间有空格。里面包车型客车代码也要有一个tab的缩进。

function ceshi($a, $b) {  // “{”前有空格“ $a,”逗号后有空格
    $a += $b;//一个tab的缩进
}

10、类定义“{”在此以前要有空格,属性,方法之间要有三个空行。里面代码要有一个tab的缩进

class metinfo { //“{”前有空格
 //一个空行
 public $met;//一个tab的缩进
 public $met2;
 //一个空行
 public function doindex() {//public 不要省略,类的方法内部代码规范同函数//一个tab的缩进

 }
 //一个空行
 public function doindex() {//public 不要省略,类的方法内部代码规范同函数

 }
}

11、代码中有显明效率界其他区块,能够方便加空行,但空行不宜太多。

讲明规范


主意的注释(蕴含类的措施):

/**                                        //  另起一行
 * 函数作用                                
 * @param  int    $afg      变量作用       //  *后面空一格
 * @param  array  $abbcvbcv 变量作用       //  变量对齐
 * @param  array  $a        变量作用       //  变量作用对齐
 * @param  int    $afff     变量作用       //  int 对齐
 * @return int              返回值作用     //  返回值不用写变量名
 */
functinon ceshi($a) {
}

1、总体上看,*对齐,全体风格保持一致。
2、/**要新起一行。
3、以/**开头,/与functinon的f对齐。
4、以*/结尾,*与functinon的u对齐。
5、*/要换行后,在写被讲明代码。
6、中间已*开头,*与functinon的u对其。*自此要空一格
7、内容第一行,表达函数成效。
8、第二行初始表明函数参数,@param开始,之后依次表明项目,名称,成效,之间用空格隔离空格。能够适度加TAB,使项目,名称,效用3列对其。之间隔离不宜过宽。
9、内容最终只要函数有再次来到值,用@return开始,只用依次是体系,成效。
潜心:若是申明的变量取值为一定的多少个值。相当少能够在一行表明。很多能够新起一行表达,内容比较多的意况下也足以。如

/*
 * 函数作用
 *  @param int $a (1=左上角,2=右上角)
 */

/*
 * 函数作用
 * @param int $a 
 * 为1时,表示左上角
 * 为2时,表示右上角
 */

//用作单行注释的时候,直接加载要解说的行后,多行注释的时候,单独起一行。如:

//多行注释
a = 1+1;
b = 2+1;//单行注释

类的讲授:

/**                                       // 另起一行
 * 类作用                                 // *后面空一格
 * 类字段注释
 */  
class a {
     pbulic b; 
}

1、/**,*,*/的接受方法与函数一致,要与被讲明的代码早先对其。
2、内容说明类的功力就可以。
3、类字段注释写法和函数参数一致。
4、类措施注释写法和函数一致。

步入帝国cms后台,点击系统装置-新闻设置:里面有个列表分页函数(列表卡塔尔国选项,将中间的函数名更改为user_ShowListMorePage

地点大约介绍了下那个文件下有那一个分页,那上边大家就来匡正程序分页,但是又不会在进步程序时候带给劳动。

2. 创办应用

第二步:

第一步:进入帝国cms后台,点击系统装置->系统参数设置->音信设置:里面有个”列表分页函数(列表卡塔尔国”选项,将中间的函数名校正为user_ShowListMorePage
第二部:复制t_function.php列表式分页代码到 e/class/userfun.php
<?php   ?>  之间

2.1 创立应用文本

开创四个全新应用的率先步是创设一个应用文本,整个应用框架的文件结构如下图所示。网站根目录下的app文件,就是漫天应用的框架开采包。
应用框架文件结构:

|--app 应用框架文件夹,存放框架文件和应用文件
   |--system 应用框架系统文件
   |--app 应用文件夹
   |--entrance.php 应用入口文件,实际指向框架入口。
   |--yingyong1 一个应用
   |--yingyong2 一个应用
        |--admin 应用后台模块
              |--templates 应用后台模板文件夹
        |--web 应用前台模块
              |--templates 应用前台模板文件夹
        |--include 应用自定义公用文件
             |--class 公用类文件
             |--function 公用函数文件
        |--plugin 应用插件
        |--icon.png 应用图标

如上海教室所示,全体的公司应用都是放在app/app/文件夹下,在那目录中新建一个文书夹,就是四个全新的使用。文件夹的名字必需只可以由叁12个小写字母,数字,下划线组成
yingyong2下的公文构造正是应用的内部文件布局。能够遵照实际运用必要新建,比方plugin文本,若无插件,能够不新建。

复制t_function.php列表式分页代码到 e/class/userfun.php ?php ? 之间

上面我把分页导航(列表式)拿出来,并带上了讲解,如下:

2.2 创造模块文件

选择模块能够分成两类,后台模块和前台模块,在那之中后台模块必需继续admin类(后台模块基类),寄存在admin文本夹中。前台模块必得继承web类(后台模块基类),存放在web文件夹中。在运用模块中,模块类名称与格局名称,只可以由小写字母,下划线,数字构成。模块文件要已UTF-8无BOM格式保存。

新建后台模块:新建三个“app/app/应用文件夹/admin/模块类名.class.php”文件,则此文件就是三个后台模块文件。后台模块代码实例如下:

defined('IN_MET') or exit('No permission');//所有文件都是已这句话开头,保证系统单入口。

load::sys_class('admin');//包含后台基类,“.class.php”可以省略。

class 模块类名 extends admin {//继承后台基类。类名称要与文件名一致
    public function __construct() {
        parent::__construct();//如果重写了初始化方法,一定要调用父类的初始化函数。
    }
    public function doindex(){//定义自己的方法
        global $_M;//引入全局数组
        //自己的代码
        require $this->template('own/index');//引入模板文件,必须global $_M
    }
}

新建前台模块:新建一个“app/app/应用文件夹/web/模块类名.class.php”文件,则此文件正是二个前台模块文件。前台模块代码实例如下:

defined('IN_MET') or exit('No permission');//所有文件都是已这句话开头,保证系统单入口。

load::sys_class('web');//包含后台基类,“.class.php” 可以省略。

class 模块类名 extends web {//继承后台基类。类名称要与文件名一致
    public function __construct() {
        parent::__construct();//如果重写了初始化方法,一定要调用父类的初始化函数。
    }
    public function doindex(){//定义自己的方法
        global $_M;//引入全局数组
        //自己的代码
        require $this->custom_template('own/index',1);//引入模板文件,必须global $_M
    }
}

或然复制以下代码也行

澳门新葡亰娱乐官网 2澳门新葡亰娱乐官网 3

2.3 创造模板文件

选择模板布局同模板制作中的模板构造,当前应用框架能够相配全航站调度室用的沙盘标签,然则在有个别模块下利用的竹签不可能再页面中利用。不要在利用框架中选拔模板标签。模板标签会在未来极其优化,优化后的沙盘标签将能够一向在模板制作和行使框架中行使。
模板文件寄存在选取文本的模块文件夹下。此外利用的模板文件都是PHP文件,不要用html或htm。模板文件要用utf-8无BOM格式保存。前台模板文件和后台文件语法是同一的。

后台模板文件
诚如选用模板构造(后台文件State of Qatar:贮存在“app/app/应用文件夹/admin/templates/”目录下,后台模板平常选用基类的template办法引进。

<!--<?php
# MetInfo Enterprise Content Management System 
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved. 

defined('IN_MET') or exit('No permission');//保持入口文件,每个应用模板都要添加
//PHP代码
require_once $this->template('ui/head');//引用头部UI文件
echo <<<EOT
-->
<a>html代码</a>
<!--
EOT;
require_once $this->template('ui/foot');//引用底部UI文件
# This program is an open source system, commercial use, 
    # please consciously to purchase commercial license.
# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.
?>
//页面结尾-->只有当这个文件是页面整体(包括包含文件)是最后一个文件时候才添加,
   // 一般在应用制作中的可以自定义的文件,都不是最后一个,所以一般不需要添加。

小心:复制上边代码时候,请复制后将“//页面结尾”后的代码删除。

前台模板文件
貌似选用模板构造(前台文件卡塔尔国:寄放在“app/app/应用文件夹/web/templates/”目录下,前台模板日常采取前台基类的custom_template主意引进

<!--<?php
# MetInfo Enterprise Content Management System 
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved. 

defined('IN_MET') or exit('No permission');//保持入口文件,每个应用模板都要添加
//PHP代码
echo <<<EOT
-->
<a>html代码</a>
<!--
EOT;
# This program is an open source system, commercial use, 
  # please consciously to purchase commercial license.
# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.
?>//页面结尾-->只有当这个文件是页面整体(包括包含文件)是最后一个文件时候才添加,
    //一般在应用制作中的可以自定义的文件,都不是最后一个,所以一般不需要添加。

介意:复制上面代码时候,请复制后将“//页面结尾”后的代码删除。

模板布局详整

日常代码格式

<!--
EOT;
//这里面编写PHP 嵌入语言
//可以有多行
//.....
echo <<<EOT
-->

地点代码中的1、2行和6、7行是必须要的,用于保证PHP嵌入代码,何况亟需顶格写。
有心人看会开采,其实正是用HTML的表明符号包裹。

PHP嵌入代码能够一向写到模板页面

<div class="newslist">
 <ul>
<!--
EOT;
foreach(methtml_getarray(2,'','','',10,'','',1,'') as $key=>$val){
echo <<<EOT
-->
 <li>
 [{$val[updatetime]}]
 <a href="{$val[url]}" target="_blank" title="{$val[title]}">{$val[title]}</a>
 </li>
<!--
EOT;
}
echo <<<EOT
-->
    </ul>
</div>

上边代码中的3至7行与12至16行都以PHP嵌入代码,之外的正是HTML代码。
PHP嵌入代码能够非常的在模板中应用。

PHP嵌入代码有多少个非常处境
页面开首代码

<!--<?php
//这里还可以加入PHP 嵌入语言
echo <<<EOT
-->

上面代码中的第一行与PHP嵌入代码格式略有分歧,要专心那或多或少,每一种模板文件的始发必得这样写。

页面结尾代码

<!--
EOT;
//这里还可以加入PHP嵌入语言
?>-->

地方代码中的第四行,与PHP嵌入代码格式略有不一样,要留意那一点,每一个模板文件的后面部分必需这么写。
专心:上面代码第四行最后的–>不是各类页面都亟待,独有页面引用的最尾部文件才供给,如若是中等或底部引用页面请去除–>,那几个主题材料会体今后页面中央行政机构接出现–>相通的号子。

/*自定义分页*/functionuser_ShowListMorePage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search=){global$fun_r,$public_r;if($num=$line){$pager[showpage]=;return$pager;}$page_line=$public_r[listpagelistnum];$snum=2;$totalpage=ceil($num/$line);//取得总页数$firststr=liclass=am-disabledahref=#共.$num./.$totalpage.页/a/li;//$num意思是信息总数$totalpage代表总页数//if($page1){$toppage=liclass=nextahref=.$dolink.index.$type..$fun_r[startpage]./a/li;//首页$pagepr=$page-1;if($pagepr==1){$prido=index.$type;}else{$prido=index_.$pagepr.$type;}$prepage=liclass=nextahref=.$dolink.$prido..$fun_r[pripage]./a/li;//}//if($page!=$totalpage){$pagenex=$page+1;$nextpage=liclass=nextahref=.$dolink.index_.$pagenex.$type..$fun_r[nextpage]./a/li;//$lastpage=liclass=lastlyahref=.$dolink.index_.$totalpage.$type..$fun_r[lastpage]./a/li;//最后一页}$starti=$page-$snum1?1:$page-$snum;$no=0;for($i=$starti;$i=$totalpage$no$page_line;$i++)//详细页码信息{$no++;if($page==$i){$is_1=liclass=am-activeahref=;//当前$is_2=/a/li;}elseif($i==1){$is_1=liahref=.$dolink.index.$type.;//第一页$is_2=/a/li;}else{$is_1=liahref=.$dolink.index_.$i.$type.;//其他页$is_2=/a/li;}$returnstr.=$is_1.$i.$is_2;}$returnstr=divclass=listpageulclass=am-paginationam-pagination-centered.$firststr..$toppage..$prepage..$returnstr..$nextpage..$lastpage./ul/div;$pager[showpage]=$returnstr;return$pager;}
//列表模板之列表式分页
function sys_ShowListMorePage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search="",$add){
    global $fun_r,$public_r
    //num是取得的当前总的文章数,line是栏目设定里的一页显示多少文章数。如果当前文章总数少于设定数,中断程序返回,并且什么也不显示。
    if($num<=$line)
    {
        $pager['showpage']='';
        return $pager;
    }
    //文件名
    if(empty($add['dofile']))
    {
        $add['dofile']='index';
    }
    //静态页数
    $repagenum=$add['repagenum'];
    //listpagelistnum是"系统参数设置" 里的 "信息设置" 下的 "列表分页函数(列表)"下的 "每页显示12个页码"这一项。
    $page_line=$public_r['listpagelistnum'];
    //这个$snum可以控制 "当前页" 显示的位置,设置成2,当前页就显示在第3个位置。
    $snum=2;
    //$totalpage=ceil($num/$line);//取得总页数
    $firststr='<a title="Total record">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';//显示总文章数
    //上一页
    if($page<>1)
    {
        //若当前页不是第一页,则显示它的上一页链接
        //$dolink是栏目的地址,$type是网页文件的扩展名,比如 .html ,那个$type之前有个点,是起连接作用的连接符,也就是说$type里面的内容是  .html
        $toppage='<a href="'.$dolink.$add['dofile'].$type.'">'.$fun_r['startpage'].'</a>&nbsp;';
        $pagepr=$page-1;
        if($pagepr==1)
        {
            $prido=$add['dofile'].$type;
        }
        else
        {
            $prido=$add['dofile'].'_'.$pagepr.$type;
        }
        $prepage='<a href="'.$dolink.$prido.'">'.$fun_r['pripage'].'</a>';
    }
    //下一页
    if($page!=$totalpage)
    {
        //如果当前页不是最后一页,则显示它的下一页链接
        $pagenex=$page+1;
        $nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$type;
        $lastpagelink=$repagenum&&$repagenum<$totalpage?eReturnRewritePageLink2($add,$totalpage):$dolink.$add['dofile'].'_'.$totalpage.$type;
        $nextpage='&nbsp;<a href="'.$nextpagelink.'">'.$fun_r['nextpage'].'</a>';
        $lastpage='&nbsp;<a href="'.$lastpagelink.'">'.$fun_r['lastpage'].'</a>';
    }
    //通过判断当前页码与上面讲述的snum的大小,确定页码显示的状态。如果$page-$snum<1,$starti赋值为1,否则$starti赋值为$page-$snum。
    $starti=$page-$snum<1?1:$page-$snum;
    $no=0;
    //此处的for循环就是用来显示页码的,包括从第几个页码开始显示,以及当前页码加粗和显示多少个页码
    for($i=$starti;$i<=$totalpage&&$no<$page_line;$i++)
    {
        $no++;
        //如果是当前页码,则加粗,有需要修改当前页码样式的可在此修改
        if($page==$i)
        {
            $is_1="<b>";
            $is_2="</b>";
        }
        //如果当前页是首页
        elseif($i==1)
        {
            $is_1='<a href="'.$dolink.$add['dofile'].$type.'">';
            $is_2="</a>";
        }
        //其余的页码,可以通过给a加样式来修改显示效果
        else
        {
            $thispagelink=$repagenum&&$repagenum<$i?eReturnRewritePageLink2($add,$i):$dolink.$add['dofile'].'_'.$i.$type;
            $is_1='<a href="'.$thispagelink.'">';
            $is_2="</a>";
        }
        $returnstr.='&nbsp;'.$is_1.$i.$is_2;//$returnstr即是生成的显示页号的代码
    }
    $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
    $pager['showpage']=$returnstr;
    return $pager;
}

2.4 应用嵌入系统

首先步,注册应用
利用必需先在met_applist表中开展注册。表构造如下:

字段名 类型 是否为空 默认 属性 注释
id int(11) 主键
no int(11) 应用编号,本地自己开发的应用编号
在2001到10000之间。2000以前是系统保留,
10000之后为上线到官方应用市场中
使用的编号,由官方分配。
ver varchar(50)) 应用版本号
m_name varchar(50)) 应用系统名称,也就是你在app/app下建立
应用夹名称。他是系统识别应用的一个名称。
只能是英文、数字、下换线组成。
m_class varchar(50)) 后台“我的应用”中默认启动的模块类名称。
m_action varchar(50)) 后台“我的应用”中默认启动的应用模块的方法。
appname varchar(50)) 应用名称,如:防伪码查询,这种文本文字,
也可以使用$_M[word][]中的语言数据。
这样就有可以实现多语言。
使用这种方法直接在字段中填写$_M[word][]即可。
info text 应用的简介描述,同样可以使用$_M[word]
中的语言变量。
addtime varchar(50)) 应用发布时间。unix时间戳。
updatetime varchar(50)) 应用更新时间。unix时间戳。

一条数据即表示两个利用,每个应用都必须要要注册,注册后得以在后台“笔者的利用”中见到此接收。
注:updatetime字段由于书写错误,在5.3.0之前版本被错写成updateime。

其次步,创设前台入口
创设前台文件输入,直接待上访谈前台入口文件,可以实施钦定的前台模块的点子。若无前台模块,能够不新建。前台页面必要团结新建一个文书,比如说ceshi/index.php文件。然后再文件之中,钦命上面二个常量。

平日代码结构如下:

define('M_NAME', 'ceshi');//指定应用名称,即创建的应用的文件夹的名称。
define('M_MODULE', 'web');//指定模块类型
define('M_CLASS', 'ceshi');//指定模块,即创建的前台模块类名称,不要加“.class.php”。

//指定调用的模块方法,必须是用“do”;开头的方法。
define('M_ACTION', 'doindex');//或define('M_ACTION', $GET['action']);
require_once '../app/app/entrance.php';//包含入口文件

其三步,步向后台入口

从后台如后访问应用模块,后台模块无需向前台形似树立文件才得以访谈,直接通过后台通用入口就能够访谈。后台通过入口地址:**admin/index.php?n=应用名称&c=模块类名称&a=方法名称**艺术名称必得已do起头
至此三个新的施用就创办达成。下边可以对各类模块举办编码,来完成区别的行使。在正经八百开拓使用早先,请先读书下系统数据布局、系统调用、前台控件、应用开采用国际标准和国外先进标准准内容。能够大幅节约费用时间,也可使开采的应用适合大家的花费标准,进而能够寻常晋级。

第三步:

View Code

3. 系统调用

修改php代码要求当心的在蕴藏的代码中不能够用,只可以用
,建议大家平昔改正,html不用加双引号和单引号也行,不会鬼使神差其余难点

 

3.1 数据构造

数据布局

序号表 名称 说明
1 met_admin_array 用户组表
2 met_admin_table 用户表
3 met_admin_column 后台导航表
4 met_config 网站配置信息表
5 met_lang 网站语言设置表
6 met_language 网站语言表
7 met_column 网站栏目信息表
8 met_flash bannner管理信息表
9 met_news 新闻模块信息表
10 met_product 产品模块信息表
11 met_download 下载模块信息表
12 met_img 图片模块信息表
13 met_job 招聘模块信息表
14 met_cv 简历信息表
15 met_feedback 反馈系统信息表
16 met_message 留言系统信息表
17 met_link 友情链接信息表
18 met_parameter 字段信息表
19 met_list 字段选项信息表
20 met_plist 字段内容信息表
21 met_mlist 留言字段内容信息表
22 met_flist 反馈系统字段内容信息表
23 met_skin_table 网站模板信息表
24 met_templates 模板配置数据表
25 met_infoprompt 后台短消息表
26 met_wapmenu 手机版底部
27 met_sms 发送短信信息表
28 met_label 热门标签信息表
29 met_online 在线客服信息表
30 met_otherinfo 其他信息字段表
31 met_visit_day 访客信息表
32 met_visit_detail 访客数据分析信息表
33 met_visit_summary 访客每日统计信息表
34 met_app 应用信息表
35 met_ifcolumn 栏目接口表
36 met_ifcolumn_addfile 应用生成文件所调用事件的信息表
37 met_ifmember_left 会员侧导航信息表
38 met_app_plugin 应用插件表
39 met_applist 应用注册表

一经有php相关编写翻译软件,可将代码复制步向订正,不但升高成效仍然为能够检查测量试验错误

3.2 常量与$_M数组

常量

PATH_WEB:网站根目录
PATH_CONFIG:配置文件根目录
PATH_CACHE:缓存文件根目录
PATH_OWN_FILE:当前执行的应用的class的根目录
PATH_APP_FILE:当前执行的应用的根目录
PATH_ALL_APP:应用文件根目录
TIME_SYS_START:程序运行开始时间
MAGIC_QUOTES_GPC:表单变量自动过滤
HTTP_HOST:当前访问的主机名
HTTP_REFERER:来源页面
PHP_SELF:脚本路径
PATH_TEM:模板文件地址(前台有效)

$_M数组

$_M 数组是一个包含了网站设置,系统调用等信息的总和数组,具体内容如下:

全站通用:

    $_M[config]:网站配置数组,里面可以查询到所有的网站配置数据。
    $_M[form]:提交的GET,POST,COOKIE表单数组。在系统中不要直接使用$_POST,$_GET,$_COOKIE,
        这些都是没有过滤的,$_M[form]中是已经安全过滤后的数组。
    $_M[langlist]:语言设置数组,其中$_M[langlist][web]为前台语言设置,
            $_M[langlist][admin]为后台语言设置。
    $_M[lang]:前台语言,如果你是在网站前台,则这个值是你当前访问的语言,
        如果是后台,则这个值是你当前编辑的语言。
    $_M[table]:系统表名称。
    $_M[url]:系统一些常用URL入口地址。
    $_M[url][site_admin] :网站后台地址
    $_M[url][site] :网站前台地址
    $_M[url][entrance] :框架入口地址
    $_M[url][own] :当前执行的应用根目录地址
    $_M[url][app] :应用根目录地址
    $_M[url][pub] :系统公用文件(html.css,js)地址
    $_M[url][ui] :当前class所使用的UI地址,前台为“系统ui根目录/web”;,
                    后台为“系统ui根目录/admin”。
    $_M[user][cookie]:用户cookie信息,建议不要直接取值,使用get_met_cookie()取值。
    $_M[word]:当前的语言参数。
    $_M[plugin]:系统插件数组。

后台专项使用:

$_M[langset]:后台语言,前台此值为空。

$_M[url][own_form] :系统提供的一个可以调用的后台入口URL,“n=应用名称&c=模块类名称&a=方法名称”

,那多个值,系统会扶植您活动选定为当前施行的艺术的行使,模块类。约等于n,c的值。你只必要校勘“a=方法名称”。

$_M[url][own_name] :系统提供的一个可以调用的后台入口URL,
            “n=应用名称&c=模块类名称&a=方法名称”

,那八个值,系统会赞助你活动选定为近年来试行的主意的运用。也正是n的值。你只要求校正“c=模块类名称”和“a=方法名称”。

$_M[url][adminurl] :系统后台入口URL。
$_M[url][tem] :系统后台模板文件地址,应用开发中请不要使用。
$_M[url][own_tem] :系统后台模块模板文件地址,应用开发中请不要使用。

前台专项使用:

$_M[html_plugin]:WEB插件数组
$_M[flashset]:flash设置数组

里头第一改良地点是$returnstr变量,在最后面,在以上代码我们可以看看自身写的相关标签,假如和谐知道相当的少,能够先把本身写的html标签和class,id形成投机的

3.3 接口

接口是水保系统机能仍旧其余使用模块为利用二个系统调用,应用能够经过设置参数,在现成系统功用照旧别的使用模块中实现都部队分功能。通过接口,应用能够在系统功效或任何使用实施一些一定操作,只怕页面增多一些一定内容。上边来介绍下现成接口:

栏目接口

作用:能够在栏目设置中拉长应用的栏目,并成功部分永世的操作。
设置方式:通过向met_ifcolumn与met_ifcolumn_addfile表中写入数据来落成效果。
met_ifcolumn 栏目接口表
作用:设置栏目接口

字段名 类型 是否为空 默认 属性
id int(11) 主键
no int(11)
name varchar(50)
appname varchar(50)
addfile tinyint(1) 1
memberleft tinyint(1) 0
uniqueness tinyint(1) 0
fixed_name varchar(50)

met_ifcolumn_addfile表 新建文件列表
作用:当加多栏目时候,需求新建文件的时候,会按此表设置,创建文件,一条数据便是贰个文本。

字段名 类型 是否为空 默认 属性
id int(11) 主键
no int(11)
filename varchar(255)
m_name varchar(255)
m_module varchar(255)
m_class varchar(255)
m_action varchar(255)

实例:
譬喻说笔者插入一条之类数据:
id:1
no:10001
filename:index.php
m_name:ceshi
m_module:web
m_class:ceshi
m_action:doindex
则在新建栏目,并点名了栏目文件夹为ceshi后,会在网址根目录下新建ceshi/index.php文件。文件内容如下:

# MetInfo Enterprise Content Management System 
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved. 

define('M_NAME', 'ceshi');
define('M_MODULE', 'web');
define('M_CLASS', 'ceshi);
define('M_ACTION', 'doindex');
require_once '../app/app/entrance.php';

# This program is an open source system, commercial use, please consciously to purchase commercial license.
# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.

会员接口

met_ifmember_left 会员右侧导航表
作用:通过安装此表能够向前台会员模块增多侧边导航,在那表增多的侧面导航将要“会员宗旨首页”前面突显。

字段名 类型 是否为空 默认 属性
id int(11) 主键
no int(11)
columnid int(11)
title varchar(50)
foldername varchar(255)
filename varchar(255)

不用任何改换

3.4 插件

插件是足以在有个别类的有个别方法下插入代码实践的控件。能够让编码人士在系统插件所钦赐的地址,平常是有个别类的某些方法施行的某部阶段后插入一段自个儿的代码。用于拍卖部分工作。

创办步骤
1、在行使的目录下新建“plugin/plugin_接受种类名.class.php”。
2、在里头新建三个类“plugin_运用系统名”;。
3、在这里个类里面新建艺术,方法名叫“插件系统名称”。
实例代码:

defined('IN_MET') or exit('No permission');

class plugin_myapp{
 public function doweb(){
 global $_M;
        echo 'doweb';
 }
 public function doadmin(){
 global $_M;
        echo 'doadmin';
 }
}

4、在表met_app_plugin写入调用消息后,系统会自动在插件处调用应用的插件方法。
met_app_plugin表结构:

字段名 类型 是否为空 默认 属性
id int(11) 主键
no_order int(11)
no int(11)
m_name varchar(50)
m_action varchar(50)
effect tinyint(1)

幸存插件介绍
一时一刻系统有多个插件。doweb插件和doadmin插件
doweb插件:
插件系统名叫doweb,能够在系统二级基类web.class.php前台基类开首化的末段插入代码。doweb插件,提供3个奇特变量,通过修正那多个变量内容,能够转移前台页面包车型客车功效。

1、
$_M[‘html_plugin’][‘head_script’],能够在页前面插入html代码,日常用来加多JS代码。写成:

$_M['html_plugin']['head_script'].="";

2、$_M[‘html_plugin’][‘foot_script’]名能够在页面后面部分插入html代码(前,然而会被包在尾部代码的DIV里面)。平常也是用来增加JS代码。写成:

$_M['html_plugin']['foot_script'].="";

3、$_M[‘html_plugin’][‘top_script’],此变量是一个数组,能够在页面最上端的语言切换页面插入HTML代码。平日用来插入八个a标签的链接。写成:

$_M['html_plugin']['top_script'][] = "<a></a>";
$_M['html_plugin']['top_script'][] = "<a></a>";

doadmin插件
插件系统名字为doadmin,能够在系统二级基类admin.class.php后台基类伊始化的最后插入代码。

注意事项:
在近些日子系统插件中只好动用DB类与$_M数组四个种类调用,其余的类,方法等系统调用不能够运用。

还要前边加个地方矫正时候,只需加标签大概改一些html相关标签就能够

3.5 类与函数


序号 名称 作用 使用范围
1 基类 整个框架的核心基础类 继承前台、后台模块基类,
或直接继承基类
2 后台模块基类 后台模块核心类 继承后台模块基类
3 前台模块基类 前台模块核心类 继承前台模块基类
4 加载类 用来加载系统或应用的函数库和类的类 全局
5 数据库操作类 用来操作数据库的类 全局
6 发送邮件类 发送邮件 需要手动使用load::sys_class加载
7 远程连接类 远程连接服务器,实质是用PHP模拟浏览器
发送一个post给某个网址,
可以把网址输出内容回传回来。
需要手动使用load::sys_class加载
8 短信发送类 使用后台短信功能,发送短信。 需要手动使用load::sys_class加载
9 上传文件类 上传文件 需要手动使用load::sys_class加载
10 水印类 给图片添加水印 需要手动使用load::sys_class加载
11 缩略图类 对图片进行缩小 需要手动使用load::sys_class加载
12 后台选项卡控制类 提供默认的后台选项卡样式,和调用方法。与系统前端空间配置使用。 后台模块
13 表格数据获取类 和系统前端控件中的表格控件配合使用,过去数据返回给表格控件。 需要手动使用load::sys_class加载

函数


序号 名称 作用 使用范围
1 全局通用函数 全局通用的常用函数 全局
2 前台通过函数 前台通用的常用函数 前台模块
3 后台通用函数 后台通用的常用函数 后台模块
4 用户登录函数 后台权限管理相关函数 全局
5 文件处理函数 文件处理相关函数 需要手动使用load::sys_func加载
6 字符串管理函数 字符串处理相关函数 需要手动使用load::sys_func加载
7 数组管理函数 数组处理相关函数 需要手动使用load::sys_func加载

4. 前端控件

4.1 表单控件

利用前端控件能够十分的快营造人机联作体验佳的效应操作页面,多量的节约工作量,仅仅必要部分复制代码的操作。
点此下载前端控件示例代码大全
表单控件

表单代码布局

<form method="POST" class="ui-from" name="myform" action="" target="_self">
 <div class="v52fmbx">
        控件一
        控件二
        控件三
        ....
 <dl class="noborder">
 <dt> </dt>
 <dd>
 <input type="submit" name="submit" value="保存" class="submit">
 </dd>
 </dl>
 </div>
</form>
序号 控件名称 说明
1 功能分区 用于在单个页面中选项多的时候划分区域,提升用户体验
2 注意事项 用户给用户较全面的提示信息
3 简短文本输入框 用于输入简短文字
4 文本输入框 用于输入较长文字
5 编辑器 加载ckeditor可见即可得编辑器
6 单选按钮 用于让用户选择一项
7 多选按钮 用于让用户可选择多个选项
8 下拉菜单 用于让用户可以下拉选择一项
9 上传组件 便于用户上传图片或文件
10 颜色选择器 便于用户直接选择颜色
11 标签增加器 便于用户输入多个文字标签,可用于多个邮箱、关键词等等
12 滑块 可以让用户拖动滑块选择对应的数值
13 日期选择器 便于选择具体日期
14 联动菜单 可自定义菜单数据的联动菜单,默认包含中国城市数据
15 动态隐藏显示选项 根据单选、多选的操作实现动态显示指定选项
16 模态对话框 可以替代alert,轻松实现更为丰富的交互体验

4.2 表单验证

因而HTML标签属性的法子开展表单验证,因而利用办法就是给HTML标签加上对应的品质。

留意:form表单的class类须要丰硕’ui-from’,不然不可能奉行验证办法,验证的质量参数须求填写在相应表单控件标签上。

属性名 说明 支持类型
data-required 输入框或选项的值不能为空 input/textarea/radio/checkbox/select
data-errortxt 自定义错误提示,可以不设置,不设置则采用默认文字 input/textarea/radio/checkbox/select
data-size 限制输入框的文字字数,支持限制最小、最大、字数范围 input[text]/textarea
data-mobile 验证输入的值是否为手机号码 input[text]
data-email 验证输入的值是否为邮箱地址 input[text]
data-password 用于重复输入密码时验证是否一致 input[type=’password’]
data-ajaxcheck-url 可以无刷新验证输入框信息,一般用于验证用户名是否被注册 input[text]
data-norepeat 不允许重复值 input[type=’text/password’]
data-confirm 弹框提示信息让用户再次确认操作 a/input[type=’submit’]
data-custom 自定义验证 input/textarea/radio/checkbox/select

4.3 表格控件

报表控件通过特有的主意获取数据,获取的数额支撑无刷新分页,能够对表格数据实行相应的筛选、搜索,以至是动态编辑、扩充表格内容。

获取表格数据

注脚:最大旨的报表数据体现效果,自动完结无刷新分页。
参数:参数请写在table标签上

data-table-ajaxurl      //表格数据来源,URL
data-table-pagelength   //表格每页显示条数,数值

HTML代码构造:

<div class="v52fmbx">
 <table class="display dataTable ui-table" 
     data-table-ajaxurl="{$_M[url][own_form]}a=dotable_list_json" 
     data-table-pagelength="20">
 <thead>
 <tr>
 <th width="25">排序</th>
 <th>标题</th>
 <th width="50">前台</th>
 <th width="50">推荐</th>
 <th width="30">置顶</th>
 <th width="70">更新时间</th>
 </tr>
 </thead>
 <tbody>
 <!--这里的数据由控件自动生成-->
 </tbody>
 <tfoot>
 <tr>
 <th width="25">排序</th>
 <th>标题</th>
 <th width="50">前台</th>
 <th width="50">推荐</th>
 <th width="50">置顶</th>
 <th width="100">更新时间</th>
 </tr>
 </tfoot>
 </table>
</div>

瞩目:class类要一致,特别ui-table,是激活控件的class类

PHP代码实例:

function dotable_list_json(){
    global $_M;
    $table = load::sys_class('tabledata', 'new'); //加载表格数据获取类
    $where = "lang='{$_M[form][lang]}'"; //查询条件
    $order = "no_order"; //排序方式
    $array = $table->getdata($_M[table][news], '*', $where, $order);//获取数据

    foreach($array as $key => $val){
        $list = array();
        $list[] = $val[no_order];//当前行的第一列
        $list[] = $val[title]; //当前行的第二列
        $list[] = $val[displaytype]?'显示':'不显示';
        $list[] = $val[com_ok]?'是':'否';
        $list[] = $val[top_ok]?'是':'否';
        $list[] = date('Y-m-d',strtotime($val[updatetime]));
        $rarray[] = $list;
    }

    $table->rdata($rarray);//返回数据
}

查看表格数据类的应用办法

报表效果:

澳门新葡亰娱乐官网 4

chart.png

报表数据筛选、寻找

表达:能够完成让内定的input输入框或select下拉菜单输入音信后无刷新检索。
参数:
data-table-search //启用找寻,1为启用。
启用寻找后,该找寻框或下拉菜单的name、value会被传送到表格数据源UEnclaveL,只必要在这里边获得到值并开展数据库查询就可以。
示例:

HTML代码部分(筛选)

<select name="search_fod" data-table-search="1">
 <option value="">导航栏显示</option>
 <option value="0">不显示</option>
 <option value="1">头部主导航条</option>
 <option value="2">尾部导航条</option>
 <option value="3">都显示</option>
</select>

这段HTML代码能够松手表格thead>th标签中

HTML代码部分(寻找)

<div class="ui-table-search">
 <i class="fa fa-search"></i>
 <input name="search_title" data-table-search="1" type="text" value="" class="ui-input" placeholder="请输入栏目名称" style="width:120px;">
</div>

PHP代码示例:

function table_edit_json(){ //表格数据获取
    global $_M;

    /*获取表格ajax传递的参数*/
    $term1   = $_M[form]['search_title'];   //获取搜索关键词 
    $term2  = $_M[form]['search_displaytype'];   //获取搜索关键词 
    $term3 = $_M[form]['search_com_ok'];   //获取搜索关键词 
    //在还可以获取多个搜索关键词

    /*查询表*/
    $search = $term1    ?"and title       like '%{$term1}%' ":'';    //增加查询条件
    $search.= $term2!=''?"and displaytype =     '{$term2}'  ":'';    //获取查询条件
    $search.= $term3!=''?"and com_ok      =     '{$term3}'  ":'';    //获取查询条件
    //如果有更多查询条件,还可以继续增加

    $table = load::sys_class('tabledata', 'new');
    $where = "lang='{$_M[form][lang]}' {$search}"; //在条件语句中加入查询条件 $search
    $order = "no_order";
    $array = $table->getdata($_M[table][news], '*', $where, $order);

    foreach($array as $key => $val){
        $list = array();
        $list[] = "<input name=""id"" type=""checkbox"" value=""{$val[id]}"">";
        $list[] = "<input type=""text"" name=""no_order-{$val[id]}"" 
                   class=""ui-input" met-center"="" 
                   style=""width:20px;"" value=""{$val[no_order]}"">";
        $list[] = "<a href="">{$val[title]}</a>";
        $list[] = $val[displaytype]?'显示':'不显示';
        $list[] = $val[com_ok]?'是':'否';
        $list[] = $val[top_ok]?'是':'否';
        $list[] = date('Y-m-d',strtotime($val[updatetime]));
        $list[] = "<a href="""" class=""edit"">编辑</a>|<a href="""" 
                   class=""delet"" data-confirm="{$_M[word][js7]}">删除</a>";
        $rarray[] = $list;
    }
    $table->rdata($rarray);

}

依然是表格数据得到部分的PHP代码,只是扩张了查询条件。
要是搜索框或下拉菜单需求放在表格右上角建议用下边包车型大巴HTML标签包裹。

<div class="v52fmbx-table-top">
 <div class="ui-float-right">
 <!---这里放搜索框或下拉菜单代码--->
 </div>
 <div class="ui-float-left">
 <a href="javascript:;" class="ui-addlist ui-table-addlist">
    <i class="fa fa-plus-circle">
    </i>添加一级栏目
</a>
 </div>
</div>

让表格内容能够一向编辑和保留

报表须求嵌套form表单并安装数据保存的UMuranoL:

<form method="POST" name="myform" class="ui-from" 
       action="数据提交处理的URL" target="_self">
 <div class="v52fmbx">

            ....
            ....
            ....
 <table class="display dataTable ui-table" data-table-ajaxurl="表格数据源URL" 
             data-table-pagelength="10"></table>
 </div>
</form>

因为表格数据源援助回到HTML,因而在必要让客户设置的选项中回到input输入框。

一些代码示例:

$list[]="<input type=""text"" name=""no_order-{$val[id]}"" 
           class=""ui-input" met-center"="" style=""width:20px;"" 
           value=""{$val[no_order]}"">";

如此,就能够在显示的页直面输入框进行编写制定。
而是编辑却不能够保存,也不掌握到底保存的是何许行的新闻,大家需求四个保留按键和每行设定贰个选拔项。

选择项:

在表格数据源中可以给每行设置接收项,提议坐落第一列,name名称必得为id。

$list[]="<input name=""id"" type=""checkbox"" value=""{$val[id]}"">";//第一列

接下来,大家要求有个全选的接纳项,请放在 table > thead > th 里面。

<input name="id" data-table-chckall="id" type="checkbox" value="">

当中 input 的质量 data-table-chckall=”id” 就是启用全选的法力。

保存开关:

支持input[type=’submit’]抑或select提交的不二等秘书技。

input[type='submit']:
 <tfoot>
     <tr>
         <th><input name="id" type="checkbox" data-table-chckall="id" value=""></th>
<th colspan="7" class="formsubmit">
 <input type="submit" name="submit1" value="保存排序" class="submit">
 <input type="submit" name="submit3" value="删除" class="submit">
</th>
     </tr>
 </tfoot>

请放在tfoot标签中,th中的colspan是表格单元格可跨过的列数,需求与表格的总列数完全一样,class=”formsubmit”是暗中同意样式调节,请必需保留。

select下拉菜单:

 <tfoot>
     <tr>
         <th><input name="id" type="checkbox" data-table-chckall="id" value=""></th>
<th colspan="7" class="formsubmit">
 <select name="com_ok" data-isubmit="1">
 <option value="">推荐</option>
 <option value="1">是</option>
 <option value="0">否</option>
 </select>
 <select name="top_ok" data-isubmit="1">
 <option value="">置顶</option>
 <option value="1">是</option>
 <option value="0">否</option>
 </select>
</th>
     </tr>
 </tfoot>

参数表达:
data-isubmit
1为启用select提交表单,如供给将select做为表单提交功用,必得安装。
效果:

澳门新葡亰娱乐官网 5

1427077526199241.png

下拉菜单接收提交后什么在表单管理页面实行管理?

交由表单后,select的name和value能够被传送到form表单中,因而得以根据传递的值进行拍卖。

什么赢得供给保留的音讯ID?

保存消息时看中的行的选用处ID会以逗号’,’隔离,积攒在name名叫allid的input中(该input遮盖不可以预知),由此能够在表单管理页面中经过
$_M[form][allid] 获取到选拔项,拆分后就能够行使。

有多个保存开关,比如叁个封存三个剔除,提交后如何区分?

input[submit]交付的时候其name值会赋给name为submit_type的蒙蔽input,因而能够在表单处理页面中通过
$_M[form][submit_type] 来获取保存的品种。

动态扩大行
设置叁个链接或按键,点击后方可动态扩充一行,况且点击保存后能够将此行数据增至数据库中。
第一,须求安装叁个按键,平日坐落于表格左上角,以至表格底部:

<div class="v52fmbx-table-top">
 <div class="ui-float-left">
 <a href="javascript:;" class="ui-addlist" 
   data-table-addlist="{$_M[url][own_form]}a=do_table_add_list">
   <i class="fa fa-plus-circle"></i>
    添加一级栏目
</a>
 </div>
</div>
<table>
...
...
</table>

参数表明:
data-table-addlist新扩张行的多寡源U路虎极光L,给链接或按键设置此属性后,点击该开关将会实行动态扩充行,同有难点间会给数据源传递叁个不休增量的变量
$_M[form][ai],用于累计扩张的多少和界别每一个新扩充的行。
数码源PHP代码示例:

function do_table_add_list(){
 global $_M;
    $id = 'new-'.$_M[form][ai];
    $metinfo ="返回的HTML代码"; //HTML代码请看下面的示例
    echo $metinfo;
}

返回的HTML代码:

<tr class="even newlist">
 <td class="met-center"></td>
 <td class="met-center"><input name="id" type="checkbox" value="{$id}" checked=""></td>
 <td class="met-center"><input type="text" name="no_order-{$id}" class="ui-input met-center" style="width:20px;" value="0"></td>
 <td><input type="text" name="name-{$id}" class="ui-input listname" value="" placeholder="请输入栏目名称" data-required="1"></td>
 <td class="met-center">
 <select name="nav_{$id}">
 <option value="">导航栏显示</option>
 <option value="0" selected="">{$_M[word][funNav1]}</option>
 <option value="1">{$_M[word][funNav2]}</option>
 <option value="2">{$_M[word][funNav3]}</option>
 <option value="3">{$_M[word][funNav4]}</option>
 </select>
 </td>
 <td class="met-center"></td>
 <td><input type="text" name="foldername-{$id}" class="ui-input" value="" placeholder="目录名称" data-required="1" style="width:90%;"></td>
 <td><a href="" class="delet">撤销</a></td>
</tr>

如此那般点击按键或链接,页面表格底部就会自动扩展一行。
在执行保存的时候,为了差别每行的数据,可以设定新添行的抉择项值为
‘new-$_M[form][ai]’ ,这样在保留的时候能够用PHP解析带 ‘new-‘
正是要新添的多寡,下边PHP代码示例就很好的接收了这么些方式。
删除行

注脚:动态扩大的行供给删除的时候就足以接受那些点子。
用法:只需追加三个class为delet的链接或按键就能够,该开关或链接供给放在该行的td代码中,平日位于最左侧,点击后就可以删除该行。
自己要作为表率据守规则代码:

<tr class="even newlist">
 <td></td>
 <td></td>
 <td></td>
 <td></td>
 <td></td>
 <td></td>
 <td></td>
 <td><a href="javascript:;" class="delet">撤销</a></td>
</tr>

PHP管理表格数据示例:

function dosave(){
    global $_M;
    $list = explode(",",$_M[form][allid]) ;   //将选择项列表ID拆分为数组
    $type = $_M[form][submit_type];           //表格提交类型
    foreach($list as $id){
        if($id){//不能为空
            if($type=='save'){//用户点击了保存按钮
                $oldwords = $_M['form']['oldwords-'.$id];
                $newwords = $_M['form']['newwords-'.$id];
                $newtitle = $_M['form']['newtitle-'.$id];
                $url    = $_M['form']['url-'.$id];
                $num    = $_M['form']['num-'.$id];
                if(is_number($id)){//修改
                    $query = "UPDATE {$_M['table']['label']} SET 
                    oldwords = '{$oldwords}',
                    newwords = '{$newwords}',
                    newtitle = '{$newtitle}',
                    url      = '{$url}',
                    num      = '{$num}'
                    WHERE id = '{$id}' and lang = '{$_M[lang]}'
                    ";
                }else{//新增
                    $query = "INSERT INTO {$_M['table']['label']} SET 
                    oldwords = '{$oldwords}',
                    newwords = '{$newwords}',
                    newtitle = '{$newtitle}',
                    url      = '{$url}',
                    num      = '{$num}',
                    lang  = '{$_M[lang]}'
                    ";
                }
            }elseif($type=='del'){//删除
                if(is_number($id)){
                    $query = "DELETE FROM {$_M['table']['label']} WHERE id='{$id}' and lang='{$_M[lang]}' ";
                }
            }
            DB::query($query);
        }
    }
    turnover("{$_M[url][own_form]}a=doindex");
}
自定义每行class类

表达:能够自定义表格每行class类,供给在报表数据来源中JSON的回传数据处理中增添。
参数:toclass
示范代码:

function table_list_json(){
    global $_M;
    $table = load::sys_class('tabledata', 'new');
    $where = "lang='{$_M[form][lang]}'";
    $order = "no_order";
    $array = $table->getdata($_M[table][news], '*', $where, $order);

    foreach($array as $key => $val){
        $list = array();
        $list[] = $val[no_order];
        $list[] = $val[title];
        $list[] = $val[displaytype]?'显示':'不显示';
        $list[] = $val[com_ok]?'是':'否';
        $list[] = $val[top_ok]?'是':'否';
        $list[] = date('Y-m-d',strtotime($val[updatetime]));
        $list['toclass'] = 'class1'; //给该行定义class类
        $rarray[] = $list;
    }
    $table->rdata($rarray);
}
点名列设置class类

证实:能够给钦赐一列装置class类,在 table > thead > th
标签上定义。
参数:data-table-columnclass=”定义class类名”
言传身教代码:

<thead>
    <tr>
        <th width="25" data-table-columnclass="met-center">排序</th>
        <th>标题</th>
        <th width="50">前台</th>
        <th width="50">推荐</th>
        <th width="30">置顶</th>
        <th width="70">更新时间</th>
    </tr>
</thead>
监听表格数据源事件

证实:不时候需求调治将养数据,那么就必要监听表格数据源事件,协助监听表格数据加载成功后、点击分页,获取到服务器的多少尚未加载到页面时、点击分页,数据加载成功后。

$(document).on( 'init.dt', function (e, settings, json) { //表格加载完成时执行
 //json = JSON.stringify(json, null, 2 );
 //alert(json); //输出JSON

 var api = new $.fn.dataTable.Api( settings );
    api.on( 'xhr.dt', function ( e, settings, json ) { //点击分页,获取到服务器的数据时
 //json = JSON.stringify(json, null, 2 );
 //alert(json);
 });
    api.on( 'draw.dt', function ( e, settings, json ) { //点击分页,数据重载完成后

 } );
});

暗中同意样式:

适用于表格左上角的新闻增添开关。

<div class="v52fmbx-table-top">
 <div class="ui-float-right">
 <div class="ui-table-search">
 <i class="fa fa-search"></i>
 <input name="search_title" data-table-search="1" type="text" value="" class="ui-input" placeholder="请输入文章标题" style="width:120px;">
 </div>
 </div>
 <div class="ui-float-left">
 <a href="" class="ui-addlist"><i class="fa fa-plus-circle"></i>添加文章</a>
 </div>
</div>

编写制定在table标签下面,日常与找出框放在一齐,寻觅框在右边,扩展按键在左边。
效果:

澳门新葡亰娱乐官网 6

监听表格数据源事件.png

带效应的class类:

ui-float-left           //左浮动
ui-float-right          //右浮动
none                    //隐藏区块
met-gray                //灰色#9a9a9a
met-center              //内容居中
ui-input                //文本输入框样式

4.4 自定义控件

假如现存控件不能满足你的急需,你能够提交须要给我们,大家将会不断康健前端框架,以调整和减弱开荒人士专业量。
就算要求自定义实施JS或部分页面效果,能够应用本文书档案的措施。

方法一:按系统内置JS代码布局

选用页面会自动加载【应用文本夹/admin/templates/js/own.js】文件
own.js文件代码构造:

define(function(require, exports, module) {
 var common = require('common'); //加载公共函数文件(Jqery、语言文字等)

 //这里开始编写自定义JS代码....

});

行使 seajs
模块化加载框架,未来会不断丰盛结构中的方法,因而一向在模块化中编辑自定义JS是最佳的不二秘诀,相仿的能够实现全部所需的效劳。
seajs能够加载的模块:

//应用目录路径,加载JS文件
require('own/admin/templates/js/add');
//其中 own 为应用根目录路径简写,只能在require中使用
//用 require 加载js文件无需编写后缀,而加载css的时候就需要编写后缀

//语言文字
var langtxt = common.langtxt(); //获取语言文字
alert(langtxt.jsok); //等同于$_M[word][jsok],因此可以通过修改后缀jsok来或许所需语言文字。

至于sea.js的越多用法,能够查阅相关文书档案:http://seajs.org/docs/

主意二:按本人的艺术(不引入)

能够自定义foot文件,然后加载所需JS库或文件。也得以平昔在页面里面一向加载JS文件。
foot.php
文件路线:网址根目录app/system/include/public/ui/admin/foot.php
您能够将此foot.php复制到后台模板目录下,然后将利用的后台模板文件底部:

require $this->template('ui/foot');

改为

require $this->template('own/foot');

那般就能调用自定义尾部文件。

5. 其他

5.1 开拓规范

支出规范是行使开荒进度中必需固守的正经八百开荒,根据职业开展付出,能够是使应用越来越好的融合系统,也能够使系统晋级不至于影响到应用程序。现成标准包含如下几点,如要完成下述作用,请按规范必要开展。

新建数据表

在系统中要是新建了数据表,请依照此标准把新的数额表增加到系统中去,并遵循系统确定调用。点击浏览

多语言完结

要在系统中落到实处多语言,存候装此标准贯彻。点击浏览

权限决定

系统作用一旦要对两样的指挥者的丰盛,改革,删除权限举行区分,请依据此规范文书档案操作。点击浏览

动用打包

支出好的应用,若是要上线至MetInfo利用集镇,需依据此标准举行利用打包。点击浏览

5.2 更新文书档案

5.3.0 版本接收框架更新简报
系统版本:5.3.0
修正内容:
1、框架优化,插件意外报错导致页面打不开,
2、框架对linux,IOS系统景况的合作。
3、栏目接口,当栏目独一的时候,全体语言只可以增加二个,应该是种种语言三个。
4、own_class()
和own_func()
扩大自定义文件路线功效。
5、发送邮件类jmail,扩展发送邮件端口选项。
6、远程连接类curl,扩大报错属性。
7、add_table()
与del_table()
增扩展表同事操作。
8、文件操作扩展了traversal()函数,遍历文件夹并回到全数文件
9、数组函数stringto_array()
函数,私下认可值都默以为空。
10、$_M[url]数组新扩大了adminurl与own_name俩个渠道,分别是后台入口UMuranoL(与own_form比,不含啊n,c值)与使用入口U奥迪Q5L(与own_form比,不含c值)
11、修复前台插件中$_M[‘table’]和$_M[‘form’]数组错误难题。
12、met_applist表单词错误,updateime修复为updatetime
13、扩大后台通用函数configsave(),mysqlcheck(),sitemap_robots()。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图