15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 微擎框架(自定义分享在最下面)

微擎框架(自定义分享在最下面)

时间:2023-06-09 06:39:02 | 来源:网站运营

时间:2023-06-09 06:39:02 来源:网站运营

微擎框架(自定义分享在最下面):首先是介绍一下微擎的框架,微擎是一个基于微信开发的框架,可以开发微信H5和微信小程序,但微擎微信小程序的框架已经很长时间没有更新了,用于微擎开发的h5还怪多的,在微擎商城中可以购买使用别人开发好的模块有名气的如人人商城,之前公司是使用微擎框架做H5的,项目是一些简单的单页面H5,所有了解一些微擎的使用,下面我就来详细的说说微擎的使用

这是安装模块manifest需要注意的东西

这是安装微擎的基本目录,addons中是存放模块目录,可以这么说,在addons中每一个文件就是一个模块,在微擎框架中分为app端和web端,app端就是正常访问模块的链接,web呢是访问微擎后台的链接,framework目录也是比较重要的目录,需要使用的class也是在该目录中的class目录中,

这是appons/模块 下面的正常目录,site.php和manifest.xml是必不可少的文件,site是相当于路由吧,manifest是安装模块时候的文件,如果没有manifest文件微擎是无法安装该板块的,当然没有安装该模块是访问不到该模块的 inc 可以在有site的条件下充当路由吧,比如你访问到一个模块的index方法,如果site中没有定义该方法可以到inc目录下找该方法无论在site或者inc目录下都有分前后台区别

这是site中定义方法

inc下分别前后台的是不同目录

里面php文件名称就是不同的方法,都要加.inc的尾缀

通过该url的形式访问到该模块

安装模块和访问模块就这样的可以了,下面是具体功能、

获取用户信息

在用户没有关注公众号的情况下,不能使用$_W['fans']的数据,这是关注公众号的用户才有这数据,那么用户没有关注公众号,但又需要用户数据怎么办呢

mc_oauth_userinfo(); //进入h5 授权获取用户信息 之后在获取$_W['fans']就会有用户信息,需要注意的是,进入h5先判断有没有用户信息没有在授权获取用户信息,如果是关注了的用户不需要授权也是可以获取到用户信息的,如果不做判断可能用户体验较差

生成url

$this->creatrMobileUrl('index'); //前台地址 index方法路由的前台地址

$this->createWebUrl('confs'); //后台地址 confs方法路由的后台地址

在视图中如需要发送ajax请求的时候url可以这么写

{php echo $this->creatrMobileUrl('index')}

模板调用

{template '路径/模板名称'} //引入模板 相对路径{template 'common/模板名称'} //这是调用公共模板 建议使用公共模板在那呢

微擎视图中使用功能

微擎自带验证码 https://blog.csdn.net/sunxiaowen13/article/details/79539797(verify());

$verify -> imgcode();//验证码 checkcaptcha($code) //验证//验证码 前端显示,PHP文件中验证只需要 checkcaptcha($code) 返回值 bool解:用法是单独提供一个路由方法给验证码,然后在前端页面中获取该路由的方法显示验证码,后端使用checkcaptcha($code) 验证


静态文件目录 相当于页面下面addons/模块名/resource/

define("S_URL", "/addons/{$_GET['m']}/resource/"); //在site中定义模板中输出变量

{$name} //输出变量循环

{loop 数组 $row} //单个数据为$row{/loop}判断

{if 条件} //true{else} //false{/if}写php代码

{php $变量=$变量+1;} //混编php<a href="{php echo $this->createMobileUrl('页面');}"></a> //实例php混编单文件上传

{php echo tpl_form_field_image('name值');} //单文件上传

数据库

增删改查

注意 pdo_insert/pdo_delete/ pdo_update/pdo_get/pdo_getall方法表名不需要前面的 ims_

tablename() 这个方法是加表前缀的(需要的加不需要的不加)

pdo_insert('表名', 数据数组, $replace=false[是否替换]) //增 第三个参数 没有就添加 有就替换pdo_delete('表名', 条件数组, $glue='AND/OR') //删 第三个参数 条件条件 与 或 pdo_update('表名' ,数据数组, 条件数组, $glue='AND/OR') //改 第三个参数 条件条件 与 或pdo_get('表名' ,条件数组 ,字段数组); //查一条 pdo_getall('表名', 条件数组 , 字段数组,) //查多条 pdo_fetchcolumn("select count(*) from ".表名." where iswin = :iswin ",array('iswin'=>1)); //查询满足条件的个数 pdo_query('sql') //执行一条非查询语句 pdo_query("DELETE FROM".tablename('表名')."WHERE 条件字段=:站位符",array(':前面的站位符'=>2))数据分页

$list = pdo_fetchall('SELECT * FROM ' . tablename('hbyh_qrj_gift') . ' LIMIT ' . (页数 - 1) * 每页多少条 . ', ' . 每页多少条); //分页数据在模板中循环遍历数据 {$page} 显示现在页数链式查询

手册 ::http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=452

查询用户表中的前十条男性的用户数据

实例:$query = load()->object('query');$row = $query->from('表名')->where('条件', '1')->orderby('字段', 'desc倒叙')->limit(10 条数)->getall();左关联的表

实例:$query = load()->object('query');$row = $query->from('users', 'u')->leftjoin('users_profile', 'b')->on('u.id', 'b.uid')->where('u.id', '525')->get();//来自 users 左链接 users u.id=b.uid 条件是u.id=525 的一条记录链表查询

注意 原生的sql 操作需要加表的前缀

pdo_fetchall('SELECT * FROM ' . tablename($this->table_activity) . ' as i inner join '. tablename($this->table_actclass) .' as c on i.class_id = c.id WHERE i.id=:id', array(':id'=> $id));//查询来自 表i 内连接 表c on关联条件 i的class_id=c的id 条件(i的id=占位符)pdo_fetch($sql) // 根据SQL语句,查询一条记录pdo_fetchall($sql); // 查询全部记录

微擎函数

公共函数

TIMESTAMP 常量当前时间戳 (秒)istripslashes($var) //去除字符串或者数组中的转义符 (/) 字符串/数组 ihtmlspecialchars ($var) //转义字符串或数组中的的HTML,例如将 “php” 转化为 &quot;PHP&quot; 字符串/数组 isetcookie($key, $value, $expire = 0, $httponly = false) //cookie 操作 cookie名称 cookie值 过去时间 是否允许Javascript读取防止xss攻击 建议登录等信息开启此项 token() //提交表单时的来源校验码 与 checksubmit() 函数配置使用,提交表单时的来源校验码 //<input name="token" type="hidden" value="{$_W['token']}" /> 与 token() 一样 checksubmit($var = 'submit', $allowget = false) // 验证一下表单提交,表单中必须带有token 提交表单按钮的名称 是否验证一个get请求 random($length, $numeric = FALSE) //获取一个随机数 要获取随机数的长度 是否是纯数字随机数 checkcaptcha($code) //验证用户提交的验证码是否正确 用户填写的验证码 tablename($tablename) //微擎所有数据表均有前缀,此函数就是返回加表前缀的表名 数据表名array_elements($keys, $src) //从一个数组中取得若干元素 需要筛选的键名列表(数组) 进行筛选的数组 range_limit($num, $downline, $upline, $returnNear = true) //判断给定参数是否位于区间内或将参数转换为区间内的数 检测的数 区间的最小值 区间的最大值 为true时小于区间则返回最小值,大于区间则返回最大值,否则返回本身的值 ijson_encode($value, $options = 0) //转换json格式 需要转化的字符串/数组 此值为 JSON_UNESCAPED_UNICODE 时,则不转义中文 iserializer($str) //序列化格式 需要序列化的字符串或数组is_serialized($str, $strict = TRUE) //判断是否序列化 需要检测的数据 是否为严格模式 iunserializer($str) //反序列化格式 需要反序列化的字符串或数组 is_base64($str) //判断是否为base64加密的字符串 需要检测的数据 tomedia($src) //转化地址? 需要进行转换的路径 mages/noavatar_middle.gif referer($default = '') //获取引用页的地址 默认引用页地址 strexists($string, $find) //判断字符串是否包含字串 字符串 需要查找的字符串 cutstr($string, $length, $havedot = false, $charset = '') //截取字符串 字符串 截取的长度 超长字符串结尾是否加省略号 指定编码 istrlen($string, $charset = '') //忽略字符编码获取字符串的个数,中文英文皆为1个字符 字符串 指定编码 authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) //字符串加密或解密 字符串 操作DECODE或ENCODE 秘钥 过期时间 isimplexml_load_string($string, $class_name = 'SimpleXMLElement', $options = 0, $ns = '', $is_prefix = false) //将一个 xml 字符串转化为 xml 对象 xml字符串 'impleXMLElement' LIBXML_NOCDATA parse_path($path) //过滤路径中可能包含的非法字符,建议通过get或是post传递的路径皆用此函数过滤 路径http 函数

http函数使用时 load()->func('communication') 引用ihttp_request($url, $post = '', $extra = array(), $timeout = 60) //模拟http请求 要获取内容的url 数据(数组) 请求附加值 超时时间 //详情看手册 ihttp_get($url) //GET 请求方法 要获取内容的URL,必须是以http或是https开头 ihttp_post($url, $data) //POST 请求方法 要获取内容的url 数据(数组) ihttp_email($to, $subject, $body, $global = false) //发送邮件 Email 收件人邮箱 邮件主题 邮件内容数组格式 是否使用系统邮箱配置信息 //具体手册操作文件函数

操作文件时候 引用 load()->func('file')file_is_image($url) //检测是否为图像文件 路径 //自我感觉 文件操作函数不是很常用 //需要的话直接看 http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=249

全局变量

微擎有 二个全局变量 $_W $ _GPC

$_GPC

全局请求变量, 获取 $GET, $POST, $_COOKIES 中的变量

$_W

$_W 中 是系统中最为重要的全局变量,微擎系统中很多常用的数据都存储在这个变量之中

这边记录一些常用的 $_W 里的用法

$_W[‘timestamp’] //当前时刻的时间戳$_W[‘clientip’] //当前客户端ip$_W[‘siteroot’] //网站的跟路径$_W[‘isajax’] //是否是ajax请求$_W[‘ispost’] //是否是post请求$_W[‘ishttps’] //是否是https协议Web 端可见 $_W[‘uid’] //当前登录的操作用户 uid $_W[‘username’] //当前操作用户名称 $_W[‘user’] //当前操作用户信息App 端可见 $_W[‘member’] //当前粉丝用户信息 $_W[‘member’][‘uid’] //当前粉丝用户 uid $_W[‘openid’] //当前粉丝用户标识 $_W[‘fans’] //当前粉丝用户信息 但在使用$_W['fans']时,没有关注的用户是无法获取到$_W['fans']里的信息的

缓存机制

cache_write(string $key, mixed $data) //按照指定的键名存储缓存数据 参数指定要存储缓存数据的键名,键名必须保证是唯一 数据的内容,可以为字符串,数组等 cache_load(string $key) //读取指定键名缓存数据 键名 cache_delete(string $key) //删除指定键名的缓存数据 键名cache_clean() //清除所有缓存

文件加载器

load()->func(string $string) //加载系统公共函数// framework/function/logging.func.php load()->func('logging'); load()->classs(string $string) //加载系统公共类 可以自己封装class// framework/class/account.class.php load()->classs('account');

对接微信的sdk

文档中需要 一些复杂的数据 如 appid 什么的,

微擎封装的

$account_api=WeAccount::create();$jssdk=$account_api->getJssdkConfig(); //这样$jssdk中就有了我们需要 链接jssdk的所有数据include $this->tempalte('index') //模板中可以直接使用

微擎的语音信息响应

在微擎中配置 非关键字响应

触发模块

触发模块后site同级文件中,processor.php 文件,如

class Viva_csModuleProcessor extends WeModuleProcessor { //Viva_cs是模块 public function respond() { $content = $this->message; //信息数据 (数组) //$json=json_encode($content,JSON_UNESCAPED_UNICODE); return $this->respText($content['recognition']); //必须要这样响应 //这里定义此模块进行消息处理时的具体过程, 请查看微擎文档来编写你的代码 }}


微擎封装自定义分享

在这个公共模板地方创建这个文件 下面是html的内容

<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script><script>jssdkconfig = {php echo json_encode($_W['account']['jssdkconfig']);} || {}; jssdkconfig.debug = 0; jssdkconfig.jsApiList = ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','hideMenuItems','showMenuItems','hideAllNonBaseMenuItem','showAllNonBaseMenuItem','translateVoice','startRecord','stopRecord','onRecordEnd','playVoice','pauseVoice','stopVoice','uploadVoice','downloadVoice','chooseImage','previewImage','uploadImage','downloadImage','getNetworkType','openLocation','getLocation','hideOptionMenu','showOptionMenu','closeWindow','scanQRCode','chooseWXPay','openProductSpecificView','addCard','chooseCard','openCard','updateAppMessageShareData','updateTimelineShareData'];wx.config(jssdkconfig);wx.ready(function(){wx.hideMenuItems({menuList:['menuItem:copyUrl','menuItem:openWithQQBrowser','menuItem:openWithSafari','menuItem:share:email']});});</script>这个是视图中使用自定义分享的时候 引用这个模板后,可以使用微信sdk中的方法

下面是内容

{template "common/wxsdknew"}<script>wx.ready(function() { //封装了微信wxsdk可以调用微信方法 window.wxshare = { title: "你好e贷暖心福利来袭——安心宅家,新鲜直达!", link: "{$_W['siteurl']}", desc: '超多惊喜等你来', imgUrl: 'https://file.cdn.finance.vivatech.cn/191213helloe_dai/images/index/icon.jpg', success: function () {} }; wx.onMenuShareTimeline(wxshare); wx.onMenuShareAppMessage(wxshare); wx.updateAppMessageShareData(wxshare); wx.updateTimelineShareData(wxshare);});

关键词:定义

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭