澳门新葡萄京官网首页 19

澳门新葡萄京官网首页帝国CMS动态页支持栏目导航标签,万能标签,循环子栏目数据标签的方法

帝国CMS动态页是不支持标签调用的,所以在制作网站时非常不爽,需要手动的进行静态页制作。

MetInfo应用开发文档

利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页。

分享一种利用JS来实现支持栏目导航标签,万能标签,循环子栏目数据标签的方法。

澳门新葡萄京官网首页 1

首先做一个静态的企业站主页:

第一步:在下面增加标签模板,标签模板内容如下:

MetInfo.png

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><style type="text/css">ul li{list-style: none;display: block;position: relative;float: left;width: 100px;}ul{height: 50px;}.base{color: #000000;}.col{color: #0000FF;}ul li a{text-decoration: none;}#header{width: 1200px;height: 50px;border: solid 2px #000000;}#footer{width: 1200px;height: 50px;border: solid 2px #000000;}.list{position: relative;width: 500px;height: 250px;margin-left: 50px;border: solid 2px #000000;margin-top: 10px;float: left;}#content{width: 1200px;height: 550px;}</style><body> <div >    <ul>    <li ><a  href="">首页</a></li>    <li ><a  href="">新闻</a></li>    <li ><a  href="">公告</a></li>    <li ><a  href="">关于我们</a></li>    <li ><a  href="">加入我们</a></li>    </ul>        </div>        <div ><div >新闻<a href="#">更多</a> <p>腐败发布啊</p></div><div >公告<a href="#">更多</a><p>大牛坊三年级</p></div><div >关于<a href="#">更多</a><p>打你叫你</p></div><div >招聘<a href="#">更多</a><p>的毛囊烦恼</p></div></div><div ><ul>    <li ><a  href="">友情链接</a></li>    <li ><a  href="">链接1</a></li>    <li ><a  href="">链接2</a></li>    <li ><a  href="">链接3</a></li>    <li ><a  href="">链接4</a></li>    </ul></div></body></html>

页面模板内容(*):

1. 开发准备

  

[!--empirenews.listtemp--]!--list.var1--[!--empirenews.listtemp--]

1.1 前言

MetInfo应用制作介绍
MetInfo企业网站管理系统是米拓公司旗下的一款专门为企业开发的建站CMS,具有简单、易于SEO、安全稳定、多语言的特点,目前有30万活跃企业用户,分布全球各地。
Metinfo应用开发框架是基于MetInfo企业网站管理系统的一个应用开发包,使用Metinfo应用开发框架开发的网站功能可以直接嵌入当前系统,而且因为开发包集成了大量系统底层支持,使整个开发过程简单、快捷,并且支持系统升级。使用Metinfo应用开发框架开发的应用,通过我们审核后,可以上架到MetInfo应用市场,开发人员也可以直接入住MetInfo在线服务平台。
如果您想学习Metinfo企业应用开发,可以参看此文档,通过此文档的学习,可以直接掌握Metinfo企业应用开发方式。另外我们除文档外,也提供视频教程。如果您想直接上课学习Metinfo企业应用开发,直接和我们的开发人员进行交流,可以参加我们的Metinfo企业应用开发的在线课程。

运行效果:

列表内容模板(list.var) (*):

1.2 基础知识与工具

基础知识
进行MetInfo应用开发需要掌握以下基础支持,如果没有相应基础,可以点击后面链接进行学习。
PHP:熟练,PHP教程;
HTML:基本了解,HTML教程;
CSS:基本了解
,CSS教程;
JavaScript(简称JS)与 Jquery
基本了解,JS教程、Jquery教程;

澳门新葡萄京官网首页 2

document.write('lia href=[!--classurl--][!--classname--]/a/li');

1.3 环境搭建

环境搭建
要使用MetInfo开发应用,就必须搭建 MetInfo运行所需要的环境以及安装
MetInfo
,以便在你自己的电脑上就能够制作和测试。搭建完成之后相当于你自己的电脑就是一个网站服务器,能够安装和运行网站,运行浏览器网址栏输入http://localhost/
就能访问本地网站,当然,外网是无法访问的。

首先,你需要在本地电脑搭建网站运行环境:
MetInfo 基于 PHP+Mysql 架构,因此需要在你的电脑上安装能够支持 PHP+Mysql
程序运行的环境。(Mac
OS自带Apache+PHP,下载MySQL即可;Windows可使用wamp、phpstudy等集成环境;Linux搭建lamp或lnmp)
然后,你需要在本地电脑安装 MetInfo :
1、从 MetInfo官网
下载最新版本;
2、在本地电脑 wamp 网站根目录下新建文件夹,名称自定义,如 metinfo ;
3、把下载的 MetInfo 最新版本解压到 metinfo 下;
注意解压后 metinfo 下要直接能找到 index.php
等众多程序文件,而不能在其子文件夹下;
4、运行浏览器,访问
http://localhost/metinfo/
即可进入安装界面;
5、按照步骤一步一步操作完成安装;
** 注意**:数据库信息中的数据库名称自定义填写,数据库帐号 root
,密码不用填写。

将网页中的JS以及CSS全部导为
JS和CSS文件放入statics文件夹下的相应位置。

第二步:在里增加自定义页面,增加JS页面:

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、类方法注释写法和函数一致。

澳门新葡萄京官网首页 3

文件名一定要填写 JS后缀,如:dtnav.js

2. 创建应用

并将文件地址根据以下格式修改:

页面内容(*):

2.1 创建应用文件

创建一个全新应用的第一步是创建一个应用文件,整个应用框架的文件结构如下图所示。网站根目录下的app文件,就是整个应用的框架开发包。
应用框架文件结构:

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

如上图所示,所有的企业应用都是放在app/app/文件夹下,在此目录中新建一个文件夹,就是一个全新的应用。文件夹的名字必须只能由26个小写字母,数字,下划线组成
yingyong2下的文件结构就是应用的内部文件结构。可以按照实际应用需求新建,比如plugin文件,如果没有插件,可以不新建。

替换方式:

[showclasstemp]0,15,0,0[/showclasstemp]

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
    }
}

{CSS_PATH} 代表CMS定义的CSS存放路径

这里的参数为:[showclasstemp]父栏目ID,标签模板ID,是否显示栏目信息数,显示栏目数[/showclasstemp]

2.3 创建模板文件

应用模板结构同模板制作中的模板结构,当前应用框架可以兼容全站调用的模板标签,但是在某个模块下使用的标签无法再页面中使用。不要在应用框架中使用模板标签。模板标签会在以后专门优化,优化后的模板标签将可以直接在模板制作和应用框架中使用。
模板文件存放在应用文件的模块文件夹下。另外应用的模板文件都是PHP文件,不要用html或htm。模板文件要用utf-8无BOM格式保存。前台模板文件和后台文件语法是一样的。

后台模板文件
一般应用模板结构(后台文件):存放在“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嵌入代码格式略有不同,要注意这一点,每个模板文件的尾部必须这样写。
注意:上面代码第四行最后的–>不是每个页面都需要,只有页面引用的最底部文件才需要,如果是中间或头部引用页面请去除–>,这个问题会体现在页面中直接出现–>类似的符号。

{JS_PATH} 代表CMS定义的JS存放路径

具体查看官方的 [showclasstemp]说明。
标签模板ID使用我们第一步添加的标签模板。

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开头
至此一个新的应用就创建完成。下面可以对各个模块进行编码,来实现不同的应用。在正式开发应用之前,请先学习下系统数据结构、系统调用、前台控件、应用开发规范内容。可以大幅节约开发时间,也可使开发的应用符合我们的开发规范,从而可以正常升级。

{IMG_PATH}
代表CMS定义的图片存放路径

第三步:在网页模板需要显示导航的位置引用以下代码:

3. 系统调用

澳门新葡萄京官网首页 4

script type=text/javascript src=/dtnav.js/script

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 应用注册表

一、设置要使用的模板

这样就OK了。这里只是以导航标签为例,实际上利用此方法,同样可以实现
万能标签等调用。

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设置数组

将phpcms中的默认模板改为自己制作的模板。

唯一不足的就是利用JS调用,对SEO不好,但仅在动态页才使用,也可以忽略了。

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)

在phpcms/install_package/phpcms/templates新建一个英文文件夹

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数组两个系统调用,其他的类,方法等系统调用无法使用。

澳门新葡萄京官网首页 5

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加载

在此文件夹下在创建一个content文件夹

4. 前端控件

澳门新葡萄京官网首页 6

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,轻松实现更为丰富的交互体验

将制作的.html网页文件修改文件名为 index.html 并放入 content文件夹中

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

澳门新葡萄京官网首页 7

4.3 表格控件

表格控件通过特有的方式获取数据,获取的数据支持无刷新分页,可以对表格数据进行相应的筛选、搜索,甚至是动态编辑、增加表格内容。

登录phpcms后台,可以看到界面-》模板风格中会显示新添加的模板

获取表格数据

说明:最基本的表格数据展示功能,自动实现无刷新分页。
参数:参数请写在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);//返回数据
}

查看表格数据类的使用方法

表格效果:

澳门新葡萄京官网首页 8

chart.png

澳门新葡萄京官网首页 9

表格数据筛选、搜索

说明:能够实现让指定的input输入框或select下拉菜单输入信息后无刷新检索。
参数:
data-table-search //启用搜索,1为启用。
启用搜索后,该搜索框或下拉菜单的name、value会被传递到表格数据源URL,只需要在那里获取到值并进行数据库查询即可。
示例:

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表单并设置数据保存的URL:

<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做为表单提交功能,必须设置。
效果:

澳门新葡萄京官网首页 10

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新增行的数据源URL,给链接或按钮设置此属性后,点击该按钮将会执行动态增加行,同时会给数据源传递一个不断增量的变量
$_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);
}

澳门新葡萄京官网首页 11

指定列设置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标签上面,一般与搜索框放在一起,搜索框在右边,增加按钮在左边。
效果:

澳门新葡萄京官网首页 12

监听表格数据源事件.png

带效果的class类:

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

澳门新葡萄京官网首页 13

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');

这样就会调用自定义底部文件。

澳门新葡萄京官网首页 14

5. 其他

此时点击站点首页 会看到模板更改成功:

5.1 开发规范

开发规范是应用开发过程中必须遵守的规范开发,按照规范进行开发,可以是使应用更好的融入系统,也可以使系统升级不至于影响到应用程序。现有规范包括如下几点,如要实现下述功能,请按规范要求进行。

新建数据表

在系统中如果新建了数据表,请按照此规范把新的数据表添加到系统中去,并按照系统规定调用。点击浏览

多语言实现

要在系统中实现多语言,请安装此规范实现。点击浏览

权限控制

系统功能如果要对不同的管理员的添加,修改,删除权限进行区分,请按照此规范文档操作。点击浏览

应用打包

开发好的应用,如果要上线至MetInfo应用市场,需按照此规范进行应用打包。点击浏览

澳门新葡萄京官网首页 15

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俩个路径,分别是后台入口URL(与own_form比,不含啊n,c值)与应用入口URL(与own_form比,不含c值)
11、修复前台插件中$_M[‘table’]和$_M[‘form’]数组错误问题。
12、met_applist表单词错误,updateime修复为updatetime
13、增加后台通用函数configsave(),mysqlcheck(),sitemap_robots()。

二、拆分模板

将模板拆为头部代码,内容代码,尾部代码

分别新建为 header.html footer.html 内容部分依旧保留在index.html中

在index.html 头部加入代码{template “content”,”header”}
以用来导入header.html

在index.html 尾部加入代码{template “content”,”footer”}
以用来导入footer.html

三、添加栏目

在header.html中

首先给导航栏添加链接:

<ul>    <li ><a  href="">首页</a></li>    <li ><a  href="">新闻</a></li>    <li ><a  href="">公告</a></li>    <li ><a  href="">关于我们</a></li>    <li ><a  href="">加入我们</a></li>    </ul>

  

修改为:

{pc:content action="category" cat num="5" site order="listorder ASC"}        <ul ><li><a  href="{siteurl}">首页</a></li>{loop $data $r}<li><a  href="{$r[url]}">{$r[catname]}</a></li>{/loop}            </ul>        {/pc}

  

num为最大栏目数

如果想要增加导航监听效果则添加代码为:

<div > <ul> {if $top_parentid==0}<!--判断首页显示的是不是首页-->    <li><a href="{siteurl}" >首页</a></li> <!--如果是首页,给首页加属性字体显示白色。-->    {else}    <li><a href="{siteurl}">首页</a></li><!--如果不是首页,内容正常显示。--> {/if} {pc:content action="category" cat num="5" site order="listorder ASC"}        {if $catid==$r[catid] || $top_parentid==$r[catid]}<!--判断显示的catid,如果是显示的catid-->             <li><a href="{$r[url]}" >{$r[catname]}</a></li><!--加属性,字体显示白色-->         {else}            <li><a href="{$r[url]}" >{$r[catname]}</a></li><!--如果显示的不是,内容正常显示-->         {/if}        {/pc}         </ul>            </div>

  

显示效果:

澳门新葡萄京官网首页 16

只显示首页

添加栏目:

在phpcms后台中,内容-》管理栏目中添加栏目

将需要添加的栏目添加即可,注意模板设置中模板要修改为当前模板。

显示:

澳门新葡萄京官网首页 17

四、给栏目添加内容

实现在下面的四个div中实现动态内容

澳门新葡萄京官网首页 18

修改index.html的代码

首先给更多添加内部链接:

代码:

<a href="{$CATEGORYS[10][url]}">更多</a>

 中间的数字代表phpcms后台中栏目代号

给div的内容设置动态:

<div >新闻<a href="{$CATEGORYS[10][url]}">更多</a> {pc:content action="lists" cat num="1" site order="id DESC"}{loop $data $r $val}<p><a href="{$val[url]}">{$val[title]}</a></p><p>{$val[description]}</p>{/loop}        {/pc}</div>

 

其余三个都是同样的方法

澳门新葡萄京官网首页 19

尾部 footer.html也是与头部同样的方法遍历

发表评论

电子邮件地址不会被公开。 必填项已用*标注