月度归档: 2016 年 11 月

  • 微赞 模块错误提示总结 图文教程

    微赞 模块错误提示总结 图文教程

    微擎微赞提示:您的模块来自非法渠道,系统已对您的站点进行记录

    解决更新后微擎微赞发生错误:您的模块来自非法渠道,系统已对您的站点进行记录,请及时更新正版模块,如有疑问请联系客服

    修改:\framework\model\cloud.mod.php第417行左右。

    //if (!is_error($ret) && is_array($ret) && !empty($ret)) {
    //    if ($ret['state'] == 'fatal') {
    //        return error($ret['errorno'], '发生错误: ' . $ret['message']);
    //    }
    //? ?? ???return $ret;
    //} else {
    //    return error(-1, "发生错误: {$ret['message']}");
    //}

    这样注释即可。

    对不起!您使用的插件不是微赞官方安装的,请移步微赞论坛:http://bbs.012wz.com

    微赞的部分加密模块添加了验证机制,模块在使用过程中出现

    “警告1!您使用的插件不是微赞官方安装的,请移步微赞论坛”,

    “警告2!您使用的插件不是微赞官方安装的,请移步微赞论坛”

    等等提示,解决方法如下:【虚拟主机自行解决】
    WIN服务器,找到 C:\Windows\System32\drivers\etc\HOSTS 这个文件 ,用记事本打开, 添加如下记录:

    127.0.0.1 addons.weizancms.com

    保存不了的说明没有写入权限, 给写入权限就行了!

    Linux服务器,找到 /etc/hosts 这个文件 ,用记事本打开, 在最后面添加一行如下

    127.0.0.1 addons.weizancms.com

    如果是微擎,可以尝试如下方式:hosts路径参上上面即可!

    127.0.0.1 v2.addons.we7.cc
  • ThinkPHP 模板函数 Volist实现隔行变色及tr、td的循环 实例

    ThinkPHP 模板函数 Volist实现隔行变色及tr、td的循环 实例

    最近接触的几个项目都是OneThink,基于ThinkPHP的引擎。下面记录一下Volist模板标签实现隔行变色的代码如下。

     

    方法1、

    <volist?name="newslist"?id="vo"?mod="2">??
        <li?<eq?name="mod"?value="0">?style="background-color:#000;"</eq>><span>·<a?href="{$vo.url}">{$vo.title}</a></span><span>{$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>??
    </volist>

    volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。

     

    方法2、

    <volist?name="newslist"?id="vo"?key="k">??
        <li?<if?condition="$k%2==?'0'">?style="background-color:#000;"</if?>><span>·<a?href="{$vo.url}">{$vo.title}</a></span><span>?{$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>??
    ?</volist>

    下面再列出一个 Volist 循环table里的tr、td的实例。

    <tr?bgcolor="#FBFCF1">??
    <volist?name="siteurl"?id="site"?mod="4">??
    <eq?name="mod"?value="0"></tr><tr?bgcolor="#FBFCF1"></eq>??
    <td?width="25%"><a?href="{$site.url}"?target="_blank">{$site.name}</a></td>??
    </volist>
    </tr>
  • Onethink 前台 编辑器 调用 方法 图文实例

    Onethink 前台 编辑器 调用 方法 图文实例

    OneThink中前台调用富媒体编辑器的简单方法:

    <textarea name="content"></textarea>
    {:hook('documentEditFormContent',array('name'=>'content'))}

     

  • OneThink 多语言切换 配置实用方法 图文教程

    OneThink 多语言切换 配置实用方法 图文教程

    在最近的项目开发中,需要多种语言的切换,恰好我们使用的OneThink开发的,下面记录一下OneThink的多语言切换配置方法。

    第一步:项目目录中:Application/home/conf/config.php加入代码:

    'LANG_SWITCH_ON' => true,   //开启语言包功能
    'LANG_AUTO_DETECT' => true, // 自动侦测语言
    'DEFAULT_LANG' => 'zh-cn', // 默认语言
    'LANG_LIST' => 'en-us,zh-cn,zh-tw', //必须写可允许的语言列表
    'VAR_LANGUAGE' => 'l', // 默认语言切换变量

     

    第二步:Application/home/conf/tags.php添加:

    'app_begin' => array('Common\Behavior\CheckLangBehavior'),
    

     

    第三步:再把thinkphp中的Library中的Behavior\Checklangbehavior文件拷贝到application/common/behavior中:

    注意这个类文件:namespase改写成:

    namespace Common\Behavior;
    use Think\Behavior;
    use Think\Hook;       //很重要:不然 找不到类文件 显示NOT FOUND;

    20161118145714

     

    第四步:application/index或者home中,建立Lang文件夹:并建立:zh_cn.php文件,默认读取此文件:文件中:

    return array(
        '__SITE_TITLE__' => '老季博客',
        '__SITE_URL__' => '//laoji.org',
    );

    在控制器中使用:

    echo L('__SITE_TITLE__');

    在模板文件中使用:

    {:L("__SITE_TITLE__")}

    所有语言包请使用小写,否则在linux中无法读取到语言包文件,造成切换语种失败(这里日志里面并不会记录读取不到语言包哦)。

    ———————–配置到此结束————————————-

     

    切换语言的方法,使用浏览器打开页面添加参数 ?http://laoji.org/?l=zh-cn :

    /?l=zh-cn //切换到中文

    /?l=en-us //切换到英文

    如果本身电脑是中文环境的话,浏览页面是,默认就是使用zh-cn的语言包。

    文件结构:

  • Git 设置远程仓库 初始化push 图文教程

    Git 设置远程仓库 初始化push 图文教程

    Git – setting up a remote repository and doing an initial push

    There is a great deal of documentation and many posts on Git out there, so this is more of a note to self as I keep forgetting the steps needed to set up a remote repository and doing an initial “push”.

    这里记录一下push远程仓库所需要的步骤:

    So, firstly setup the remote repository:

    首先设置远程仓库:

    ssh git@example.com
    mkdir my_project.git
    cd my_project.git
    git init --bare
    git update-server-info # If planning to serve via HTTP
    exit

    On local machine:

    本地机器:

    cd my_project
    git init
    git add *
    git commit -m "My initial commit message"
    git remote add origin git@example.com:my_project.git
    git push -u origin master

    Done!

    完成!

    Team members can now clone and track the remote repository using the following:

    其他团队成员直接克隆远程仓库内容即可:

    git clone git@example.com:my_project.git
    cd my_project

    Bonus

    To have your terminal prompt display what branch you are currently on in green, add the following to your ~/.bash_profile (I have my current directory displayed in cyan):

    function git-branch-name {
      git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3
    }
    function git-branch-prompt {
      local branch=`git-branch-name`
      if [ $branch ]; then printf " [%s]" $branch; fi
    }
    PS1="\u@\h \[\033[0;36m\]\W\[\033[0m\]\[\033[0;32m\]\$(git-branch-prompt)\[\033[0m\] \$ "
  • DiscuzX3.1论坛本地附件 远程附件的转换 图文教程

    DiscuzX3.1论坛本地附件 远程附件的转换 图文教程

    DiscuzX3.1论坛本地附件与远程附件的转换方法,详细步骤如下:

    [title]一、后台–全局–上传设置–远程附件–启用远程附件:是[/title]

    DiscuzX3.1论坛本地附件与远程附件的转换(图文教程) - ♂天蓝dē√蓝¨ - youlanzihun的博客

    这里根据后台提示和自己开启的远程服务器的FTP的信息配置就可以,要确保FTP具有以下权限:读取文件、写入文件、删除文件、创建目录、子目录继承。

    [title]二、上传data/attachment下面的文件夹到远程空间的atta目录下[/title]

    [title]三、转换数据库的本地附件的数据为远程附件数据[/title]

    涉及到的数据库表:
    pre_forum_attachment(附件表)
    pre_home_pic(家园表——这个表的remote字段比较特别,home本地图片—0;home远程图片—1;论坛本地图片—2;论坛远程图片—3)
    pre_portal_article_title(门户文章标题表)
    pre_portal_attachment(门户文章附件表)
    pre_portal_topic_pic(门户专题图片表)

    在“后台–站长–数据库–升级”分别执行如下代码

    1、pre_forum_attachment(附件表)

    update pre_forum_attachment_0 set remote = '1';
    update pre_forum_attachment_1 set remote = '1';
    update pre_forum_attachment_2 set remote = '1';
    update pre_forum_attachment_3 set remote = '1';
    update pre_forum_attachment_4 set remote = '1';
    update pre_forum_attachment_5 set remote = '1';
    update pre_forum_attachment_6 set remote = '1';
    update pre_forum_attachment_7 set remote = '1';
    update pre_forum_attachment_8 set remote = '1';
    update pre_forum_attachment_9 set remote = '1';

    2、pre_portal_article_title,pre_portal_attachment,pre_portal_topic_pic(门户相关)

    update pre_portal_article_title set remote=1;
    update pre_portal_attachment set remote=1;
    update pre_portal_topic_pic set remote=1;

    3、由于相册表中的remote取值还有一种情况为remote=2(论坛附件图片保存到相册)pre_home_pic,执行语句:

    update pre_home_pic set remote=remote+1;
    

    按照以上操作后,打开网站附件–属性看看是否已经在远程地址上了,如果显示正常说明就已经把Discuz 本地附件成功转换为远程附件了。

  • nginx服务器http重定向到https 图文教程

    nginx服务器http重定向到https 图文教程

    老季博客刚刚启用了ssl,下面我们贴一个最新的将http重定向到https的最新支持的写法:

    server {
        listen 80 default_server;
        server_name    laoji.org;
        return 301 https://$server_name$request_uri;
    }
    server {
        listen 443 ssl;
        server_name    laoji.org;
        [....]
    }

    官方文档:

    http://wiki.nginx.org/Pitfalls#Taxing_Rewrites

  • ThinkPHP Where 条件中使用表达式

    ThinkPHP Where 条件中使用表达式

    前面我们介绍了,ThinkPHP View视图 模板使用实例总结,下面我们总结一下ThinkPHP中mysql数据库查询时Where条件表达式的写法。

    Where 条件表达式格式为:

    $map['字段名']  = array('表达式', '操作条件');
    

    其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:

    ThinkPHP运算符 与 SQL运算符 对照表
    TP运算符SQL运算符例子实际查询条件
    eq=$map[‘id’] = array(‘eq’,100);等效于:$map[‘id’] = 100;
    neq!=$map[‘id’] = array(‘neq’,100);id != 100
    gt>$map[‘id’] = array(‘gt’,100);id > 100
    egt>=$map[‘id’] = array(‘egt’,100);id >= 100
    lt<$map[‘id’] = array(‘lt’,100);id < 100
    elt<=$map[‘id’] = array(‘elt’,100);id <= 100
    likelike$map<‘username’> = array(‘like’,’Admin%’);username like ‘Admin%’
    betweenbetween and$map[‘id’] = array(‘between’,’1,8′);id BETWEEN 1 AND 8
    not betweennot between and$map[‘id’] = array(‘not between’,’1,8′);id NOT BETWEEN 1 AND 8
    inin$map[‘id’] = array(‘in’,’1,5,8′);id in(1,5,8)
    not innot in$map[‘id’] = array(‘not in’,’1,5,8′);id not in(1,5,8)
    and(默认)and$map[‘id’] = array(array(‘gt’,1),array(‘lt’,10));(id > 1) AND (id < 10)
    oror$map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’);(id > 3) OR (id < 10)
    xor(异或)xor两个输入中只有一个是true时,结果为true,否则为false,例子略。1 xor 1 = 0
    exp综合表达式$map[‘id’] = array(‘exp’,’in(1,3,8)’);$map[‘id’] = array(‘in’,’1,3,8′);

    补充说明

    • 同 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。
    • between、 in 条件支持字符串或者数组,即下面两种写法是等效的:
      $map['id']  = array('not in','1,5,8');
      $map['id']  = array('not in',array('1','5','8'));
      

    exp 表达式

    上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

    exp 不仅用于 where 条件,也可以用于数据更新,如:

    $Dao = M("Article");
    // 构建 save 的数据数组,文章点击数+1
    $data['id'] = 10;
    $data['counter'] = array('exp','counter+1');
    // 根据条件保存修改的数据
    $User->save($data);
  • Mysql 表崩溃后Crashed 自动修复备份数据库 Shell 脚本

    Mysql 表崩溃后Crashed 自动修复备份数据库 Shell 脚本

    前面我们写了Linux 自动备份Mysql Shell 脚本,但是最近论坛被疯狂灌水,导致一些表崩溃Crashed了,所以我们mysqldump的时候会报错,以下脚本将会先检查数据库里所有的表(如果有问题将自动执行修复动作),然后再自动备份整个数据库。

    #!/bin/sh 
    d=`date "+%Y-%m-%d-%H-%M-%S"` 
    v_user="数据库用户名" 
    v_password="密码" 
    v_database="数据库名"
    #开始repair整个数据库里的表,如果-r 修复不了,可以用-o 参数代替修复
    mysqlcheck -u$v_user -p$v_password $v_database -r > /root/RepairLog/$d.log
    # 以下是自动备份脚本动作
    mysqldump -u$v_user -p$v_password $v_database --default-character-set=gbk | gzip > $FP$FName.sql.gz   


    加入自动运行之前可以先运行测试一下是否有报错:
    sh /backup/sqlDump.sh

    crontab 定时任务:

    如果没有问题的话然后加入到crontab里

    crontab -e

    内容如下:

    30 3 * * 1 sh /backup/sqlDump.sh

    每个星期一的早上3:30 自动进行备份。

  • Chrome一直提示“adobe flash player 因过期而遭阻止”  解决方法 图文教程

    Chrome一直提示“adobe flash player 因过期而遭阻止” 解决方法 图文教程

    最近在更新了Chrome浏览器之后,提示 adobe flash player 已过期的问题,反复提示,从网上也找了很多办法都没有解决。这里给大家提供一个最完美的解决方案。经亲自测试,完美解决adobe flash player插件过期遇到阻止的问题.

    20161111204746
    Chrome一直提示“adobe flash player 因过期而遭阻止” ,解决方法 图文教程

    1. 下载:在百度搜索 ” adobe flash player ppapi “,去官方网站下载完成安装。

      直达地址:http://labs.adobe.com/downloads/flashplayer.html

    2. 下载对应操作系统的PPAPI版本,安装,然后重启浏览器,完成。

      Chrome一直提示“adobe flash player 因过期而遭阻止”
      Chrome一直提示“adobe flash player 因过期而遭阻止”

      Windows 32-bit 64 bit 安装直达链接:https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/install_flash_player_ppapi.exe

    3. 目前网络上流传的几种方法其实并不能完美解决问题:

      1,浏览器地址栏输入 chrome://plugins 停用过期的 flash player插件,相当于没解决问题;

      2,更新chrome浏览器,其实这个办法很多人都懂,但是也没有用;

      3,下载更新adobe flash player插件,没用!

      4,下载官方adobe flash player 安装更新,试过都知道没用;

      5,Chrome.exe快捷方式加上指令“ –allow-outdated-plugins”不行;

      其实问题的本质在于,Chrome支持的是PPAPI版本,而不是NPAPI版本或者ActiveX;本人试了N多办法,最终完美解决这个问题,写出来希望对大家有帮助。

  • Underscore.js 学习笔记 template for each map reduce find filter 实例

    Underscore.js 学习笔记 template for each map reduce find filter 实例

    项目用了很久underscore.每次都是临时查手册,没有系统的研究过,最近有空正好看看

    github地址:https://github.com/lily1010/underscore_learn

     

    一 Underscore定义

    一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象,它是Backbone重度依赖的js库.主要涉及对Collection、Object、Array、Function的操作.

     

    二 _.each

    (1)定位:遍历list中的所有元素,按顺序用遍历输出每个元素,不返回任何值.

    (2)标准模式:_.each(list, iteratee, [context]),其中[context]是迭代器的上下文,也就是迭代器中this的指向

    (3)如果数据list是数组,iteratee的参数:(element, index, list)

    (4)如果数据list是对象,iteratee的参数是(value, key, list)

    (5)如果存在原生的forEach方法,Underscore就使用它代替

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>underscore--each函数</title>
            <script src="../js/underscore.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                // 遍历数组 (可获取三个参数element, index, list)
                var data = [1,2,3];
                _.each(data,function(element, index, list) { //三个参数都是可选,位置固定,element是数组值,index是值在数组位置,list是整个数组
                    document.write(element);    //打印出1 2 3
                    document.write(index);        //打印出0 1 2
                    document.write(list);        //打印出1,2,3 1,2,3 1,2,3,因为每次遍历都会打印一遍
                });
                
                // 遍历对象 (可获取三个参数 value,key,list)
                var data2 = {
                    name1: "lili",
                    name2: "manman"
                };
                _.each(data2,function(value,key,list) {   //注意第一个是value,第二个是key,位置固定,但参数可以缺少
                    document.write(value);   //打印出lili manman
                    document.write(key);    //打印出name1 name2
                    document.write(list);  //打印出 [object Object] [object Object] ,因为循环了两边,故打印两遍
                });
            
                // 标准格式  _.each(list, iteratee, [context]) ,其中[context]是迭代器的上下文,也就是迭代器中this的指向
                var obj = {name: "hello"};  
                _.each([1, 2, 3], function (i) { 
                  document.write(this.name + ":" + i); 
                }, obj); 
            </script>
        </body>
    </html>

    三 _.map

    (1)定位:通过转换函数(iteratee迭代器)映射列表中的每个值,将返回的值依次存入一个新的数组.

    (2)标准模式:_.map(list, iteratee, [context]),其中[context]是迭代器的上下文,也就是迭代器中this的指向.

    (3)如果数据list是数组,iteratee的参数:(element, index, list)

    (4)如果数据list是对象,iteratee的参数是(value, key, list)

    (5)用法同each,但是它返回的是数组

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>underscore--map函数</title>
            <script src="../js/underscore.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                // 遍历数组后生成数组 (可获取三个参数element, index, list)
                var data = [1,2,3];
                _.map(data,function(element, index, list) { //三个参数都是可选,位置固定,element是数组值,index是值在数组位置,list是整个数组
                    document.write(element);    //打印出[1,2,3]
                    document.write(index);        //打印出0 1 2
                    document.write(list);        //打印出1,2,3 1,2,3 1,2,3,因为每次遍历都会打印一遍
                });
                
    //            // 遍历对象 (可获取三个参数 value,key,list)
                var data2 = {
                    name1: "lili",
                    name2: "manman"
                };
                _.map(data2,function(value,key,list) {   //注意第一个是value,第二个是key,位置固定,但参数可以缺少
                    document.write(value);   //打印出lili manman
                    document.write(key);    //打印出name1 name2
                    document.write(list);  //打印出 [object Object] [object Object] ,因为循环了两边,故打印两遍
                });
            
                // 标准格式  _.map(list, iteratee, [context]) ,其中[context]是迭代器的上下文,也就是迭代器中this的指向
                var obj = {name: "hello"};  
                _.each([1, 2, 3], function (i) { 
                  document.write(this.name + ":" + i); 
                }, obj); 
            </script>
        </body>
    </html>

    四 _.reduce

    (1)标准模式:reduce_.reduce(list, iterator, memo, [context])

    (2)这里不做深入探讨,参数太多,感兴趣的去官网看一下

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>underscore--reduce函数</title>
            <script src="../js/underscore.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                // 遍历数组
                var data = [1,2,3];
                _.reduce(data,function(memo, element, index, list) { //四个参数都是可选,位置固定,memo是设置一个初始值,element是数组值,index是值在数组位置,list是整个数组
                    document.write(memo);   //打印出 4 undefined undefined
                    document.write(element);    //打印出[1,2,3]
                    document.write(index);        //打印出0 1 2
                    document.write(list);        //打印出1,2,3 1,2,3 1,2,3,因为每次遍历都会打印一遍
                },4);   //注意4就是参数memo
            </script>
        </body>
    </html>

    五 _.find函数

    (1)标准写法:_.find(list, predicate, [context])

    (2)在list中逐项查找,返回第一个通过predicate迭代函数真值检测的元素值.

    (3)如果没有值传递给测试迭代器将返回undefined。 如果找到匹配的元素,函数将立即返回,不会遍历整个list。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>underscore--find方法</title>
            <script src="../js/underscore.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                //_.find
                var data = [1,2,3,4,5,6];
                var aa=_.find(data,function(num) {
                    return num % 2 == 0;
                });
                console.log("数据类型是"+typeof aa+";返回值是"+aa);  //打印结果是:数据类型是number;返回值是2
            </script>
        </body>
    </html>

    六 _.filter函数

    (1)标准写法:_.filter(list, predicate, [context])

    (2)遍历list中的每个值,返回所有通过predicate真值检测的元素值.

    (3)如果没有值传递给测试迭代器将返回undefined。 如果找到匹配的元素,函数将立即返回,不会遍历整个list。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>underscore--fliter方法</title>
            <script src="../js/underscore.js"></script>
        </head>
        <body>
            <script type="text/javascript">
                //_.filter
                var data2 = [1,2,3,4,5,6];
                var bb=_.filter(data2,function(num) {
                    return num % 2 == 0;
                });
                console.log("数据类型是"+typeof bb+";返回值是"+bb); //打印结果是:数据类型是object;返回值是2,4,6
            </script>
        </body>
    </html>

     

  • jQuery 弹出 插件 layer 实例 总结

    首先向大家推荐layer,在这里也非常感谢贤心的贡献,非常不错的信息框及弹出层解决方案,为一些项目的前端开发提高了很大的效率,希望layer 越办越好!

    下面是API,呵呵,官方抄袭过来的,为了自己看着方便。

    layer API之键值(仅在需要时配置,未配置的会用默认)
    键 : 值描述
    skin : 0层的皮肤编号,值为整数型。目前默认只提供一种皮肤,当你按照样式规则新增皮肤时(详见skin/layer.css),你可配置该参数。
    type : 0,层的类型。0:信息框(默认),1:页面层,2:iframe层,3:加载层,4:tips层。此为重要参数,不同类型层类型的总开关,调用时必须设置。
    shade : [0.5 , ‘#000’ , true]控制遮罩。0.5:遮罩透明度,’#000′:遮罩颜色,true:是否遮罩(否:false)
    shadeClose : false用来控制点击遮罩区域是否关闭层。(是:true)。
    fix : true,层是否固定在可视区域。否:false
    move : [‘.xubox_title’ , true]控制层拖拽。’.xubox_title’:拖拽绑定事件所在元素选择器(默认为标题栏),true:是否允许拖拽(否:false)
    title : [‘信息’ , true]控制标题栏。’信息’:标题栏文字,true:是否显示标题栏(否:false)
    offset : [‘220px’ , ‘50%’]控制层坐标。’220px’:纵坐标,’50%’:横坐标。 需要注意的是,像素必须带px单位,百分比不需要。该参数灵活运用,可助你实现诸多特效。
    area : [‘310px’ , ‘auto’]控制层宽高。’310px’:宽,’auto’:高。 当设置为auto时,意味着采用自适应, 当然,对于宽度,并不推荐您这样做。
    closeBtn : [0 , true]控制层右上角关闭按钮。0:关闭按钮风格(1:风格2),当标题栏不存在时,自动切换为风格2。 true:是否显示关闭按钮(否:false)
    time : 0自动关闭等待秒数,整数值。也许它可以助你做蛮多事,想象一下吧。
    border : [10 , 0.3 , ‘#000’, true]10:边框大小,0.3:边框透明度,’#000′:边框颜色,true:是否显示边框(否:false)。通过它您可以任意配置边框,譬如你觉得边框碍眼,赶紧启用[0,0,”,false]吧
    zIndex : 19891014控制层堆叠顺序(z-index)。整数值,默认是贤心的生日。合理设置它,可以避免与其它插件的层级冲突
    maxWidth : 400最大宽度。整数值。当宽度设为auto时才有用。
    fadeIn : [300 , false]控制层的渐显。300:渐显频率,false:是否开启渐显(默认不开启,true:开启) 从来都觉得这参数形同虚设。
    dialog: {
        btns : 1,
        btn : ['确定', '取消'],
        type : 3,
        msg : '',
        yes : function(index){ },
        no : function(index){ }
    }
    信息框层模式提供的私有参数。使用时,按需配置即可btns : 按钮的个数。提供了0-2的选择

    btn : [按钮一的文本值 , 按钮二的文本值]

    type : 图标类型,提供了0-10的选择,也许有你喜欢的。

    msg : 信息框内容,重要参数

    yes : 按钮一的回调函数

    no : 按钮二的回调函数

    page: {
    	dom: '#xulayer', 
    	html: ''
    }
    页面层模式私有参数。dom:需要弹出的html片段所对应的选择器(class 或 id,推荐用id,确保唯一)。需要注意的是,html优先级高于dom,这意味着,当你一旦配置了html的非空值,将优先采用html中的元素弹出,并且不支持area的自适应模式,你必须配置宽高值。html参数为layer-v1.5.1开始新增。
    iframe: {
     src: 'http://laoji.org'
    }
    iframe层模式私有参数。src:要打开的网址。使用率非常高,尤其是对于喜欢用iframe的同学。
    loading : {type : 0}加载层私有属性。type:loading图标类型(提供了0-3的选择,试试吧,看看有无你喜欢的)。一般配合ajax使用
    tips : {
        msg: '',
        follow: '',
    	guide: 0,
    	style: ['tips自定义样式', '三角形颜色']
    }
    tips小提示层私有属性。msg:提示内容,follow:触发事件对应的选择器。 guide:指引方向(0:上下,1:左右)。[自定义样式示例] style: [‘background-color:#FFF8ED; color:#000; border:1px solid #FF9900’, ‘#FF9900’]]。layer-v1.5.1开始,对tips逐渐有了较为完善的支持,提供了上下和左右模式,可智能识别指引方向。
    success : function(layer){}层弹出成功后的回调函数
    close : function(index){}层右上角关闭按钮的回调函数。
    end : function(){}层被彻底关闭后执行的回调函数。它的存在让close回调成为浮云。
    layer API之内置方法
    方法名描述
    $.layer({})核心接口,参数是一个对象,对象属性参见上述列表。诸如layer.alert()之类的为$.layer()的包装方法。
    layer.v获取版本号。
    layer.ready(callback)layer中的样式文件装载完毕后执行的方法,一般用于页面加载时调用layer,这样可避免样式未加载即调用层导致的错乱。 示例:

    layer.ready(function(){
    	layer.msg('Hello Layer');
    });
    layer.alert()对单按钮信息框的重新封装,layer.alert(alertMsg , alertType, alertTit , alertYes),四个参数,alertMsg:信息内容(文本),alertType:提示图标(整数,0-10的选择),alertTit:标题(文本),alertYes:按钮的回调函数。 如:layer.alert(‘前端攻城师贤心’)
    layer.confirm()对询问框的重新封装,layer.confirm(conMsg? , conYes , conTit , conNo),四个参数,conMsg:信息内容(文本),conYes:按钮一回调,conTit:标题(文本),conNo:按钮二的回调。??????????????????? 如:

    layer.confirm('确定删除?', function(){ 
    layer.msg('删除成功!') 
    });
    layer.msg()对无标题栏信息框层的重新封装,layer.msg(msgText , msgTime , msgType , callback),四个参数,msgText:信息内容(文本),msgTime:自动关闭所需等待秒数(默认2秒),msgType:提示图标(整数,0-10的选择),callback:自动销毁后的回调函数。如:layer.msg(‘嗨,伙计,我是layer’)
    layer.tips()对tips层的重新封装,layer.tips(html , follow , time , maxWidth, guide, style),四个参数,html:信息内容(文本),follow:触发事件对应的选择器,time:自动关闭所需等待秒数,maxWidth:最大宽度,guide: 0(上下模式)或者1(左右模式) style: tips样式(参加api表格一中的style属性)如:

    $('.demo').click(function(){
    	layer.tips('这是小提示',this);
    });
    layer.load()对加载层的重新封装,layer.load(loadTime , loadgif , loadShade),三个参数,loadTime:自动关闭所需等待秒数(0时则不自动关闭),loadgif:加载图标(整数,0-3的选择),loadShade:是否遮罩(true 或 false)。如:layer.load(0);
    layer.getChildFrame(selector)获取子iframe中的DOM。非常实用,父窗口操作iframe中内容时可以大显神威。如:layer.getChildFrame(‘body’).html() //得到iframe的body的全部html元素
    layer.getFrameIndex()获取iframe层的索引。 如在iframe页中关闭自身:

    var i = parent.layer.getFrameIndex();
    parent.layer.close(i);
    layer.close(index)用于手动关闭层。参数为layer的索引值。索引即通过弹出方法返回的值。如:

    var i = $.layer({}); //或者 var i = layer.alert();之类的也可返回索引
    layer.close('i');
    layer.shift(type , rate)layer弹出时内置动画,type:动画类型,供四种中选择,左上:’left-top’,右上:’right-top’,左下:’left-bottom’,右下:’right-bottom’ 。 rate:动画频率,毫秒。 如:

    success : function(){
       layer.shift('right-bottom' , 400);
    }
    layer.autoArea(index)用来处理在层中宽高改变时,重新自适应层宽高。必填参数为层的索引值
    layer.iframeAuto()用于让iframe层自适应。非常实用,详见官网实例演示之iframe子父操作。
    layer.setMove()当拖拽元素改变时,可用此方法重新初始化拖拽。
WeChat
↑