GitHubhttps://github.com/iccb1013/Sheng.WeixinConstruction
因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至今没有变化,功能依然全部可用,你可以在此基础上,二次开发,完成你的业务功能,也可以抽取本平台中的代码复用在你的项目中,请遵循 MIT 开源协议保留我的版权声明和网站链接即可。

GitHubhttps://github.com/iccb1013/Sheng.WeixinConstruction.WeixinContract
微信协议包装的项目还有一个单独的工程,这个工程的版本稍新,我会进行一定的更新维护,如最近增加了几个小程序开发需要使用到的接口。但是注意因为代码结构经过优化调整,直接引用到升讯威微信平台中,需要修改一些类的引用和名称。

升讯威微信营销系统开发实践系列
升讯威微信营销系统开发实践:(1)功能概要与架构设计
升讯威微信营销系统开发实践:(2)中控服务器的详细设计
升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会
升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明


微官网是微信平台上一个重要的功能,几乎所有的微信公众号都有这样的需求。

微官网一般至少包括以下几个部分:

1.微主页;
2.分类信息展示(如产品展示、顾问/专家展示、楼层展示等等);
3.自定义页面(如企业介绍、联系方式等任意页面);
4.自定义表单(如在线报名、在线预约等);
5.其它模块(如各类活动页面等等)

本篇我们介绍在升讯威微信营销系统中,微主页功能的设计和实现方法。

在过去我们做定制化项目时,微主页一般只需要美工完成设计,前端工程师完成静态页面,后台开发人员完成相关编码即可。不同的项目只需设计制作不同的前端画面即可。

但是当我们想要开发一个服务于不同公众号的第三方平台时,微主页的设计变得复杂起来,微主页是一个企业的门户,担当着展示企业形象的重要作用,不能只是简单的提供固定式样,必须要能在平台中灵活配置,而且配置的过程不能复杂,毕竟用户不是专业人士,需要一种灵活、简单、所见即所得的方式让用户在无需专业知识的情况下,就能搭建微主页。

为了达到这个目标,我们需要两种纬度的设计:

1.基于模版

让用户在选择钟意的模版后,只需上传自己的图片即可。

2.完全自定义

面向有一定前端开发能力的用户,为他们提供开发接口,使这部分用户可以自己制作静态HTML内容,并可以与系统既有功能进行融合交互。
此外我们希望两种模式能够互通,比如用户选择了钟意的模版后,除了上传自己的图片,还想更进一步的调整,怎么办呢?当然不能说让他再照着模版自己做一套,我们把两种模式打通,让用户可以把喜欢的模版一键导入自定义模式,然后再进行细节调整即可。

一、基于模版

基于模版很容易理解,我们在系统中预置许多制作好的微主页,用户选择后,进行轻度的自定义,如上传自己的图片,然后发布即可。

这里有一个细节需要留意的就是怎样实现所见即所得的的功能,让用户能够在后台实时的看到最终效果,我们需要在电脑版后面上模拟微信端最终的呈现效果。

这里有两个方案进行模拟:

1)把最终效果图分层拆开。

这需要我们的设计模版时,就制作好分层的效果图,然后在后台通过堆叠的方式进行展示,当用户上传自定义的图片时,将可变换的图层进行替换,来达到预览的效果。

2)在iFrame容器中填充手机端代码进行模拟。

这种方式实现起来会稍微复杂一些,我们在后台画面中,嵌入一个iFrame,作为模拟的容器,当用户选择钟意的模版时,我们把微主页模版的代码,渲染到这个iFrame中,在iFrame中模拟微信端的效果和行为。

后台页面与 iFrame 交互的方式很简单,用 JavaScript 调用即可。

假设我们有 1.html

<a href="#" onclick="window.frames['frame1'].MyNext()">aa</a>
<iframe id="frame1" src="2.html" ></iframe>

2.html

<script language="javascript" type="text/javascript">
function MyNext()
{
alert(1);
}
</script>

在1.htm中点击test按钮,可以使2.htm(iframe页面)中mybutton按钮失效.就这么简单,呵呵.如果要调用2.htm中的JS函数这样写:

self.frames['a'].funtionname(param)

目前各种微信第三方平台,都提供了基于模版的微主页功能,只是大多数做的比较粗糙,效果不太好,大部分是堆砌大量类似的模版来吸引用户,实际上大多数模版只是背景图片不同。
而在我们的平台中,通过模版引擎,我们只需要设计好模版的框架,让用户自己上传图片即可达到许多个性化的效果。

二、完全自定义

对于要求更高的用户,基于模版的功能并不能完全满足他们的要求,也是目前其它第三方微信平台的一个短板,或是主要盈利项目。

目前几乎所有的微信第三方平台都不提供完全自定义主页的功能,如果模版不能满足需求,只能寻求第三方平台的定制化服务,通常价格不菲,大多数时候第三方平台公司为了引导用户接受定制化开发服务,模版的制作水准和效果也并不会很高。

所以我们这里设计实现了一个类似于CMS的微主页引擎,把微主页的呈现和功能彻底进行了拆分,我们把微主页中所需要使用的功能实现好,然后通过 JavaScript 提供接口,并将微主页中所需的基本 CSS 样式和 JavaScript 函数进行了封装,用户在设计自己的静态页面时,可以直接引用这些 CSS 样式,或直接调用系统预置的 JavaScript 函数。
用户完成微主页的设计后,只需把HTML代码保存到后台,系统在微信端呈现微主页时,会使用模版引擎呈现用户的HTML代码,并初始化相关的功能。
基于这样的模版引擎,如果用户稍具前端开发的能力,即可在极短的时间内,可能1天,甚至是半天时间,就可以制作出个性化的微主页,并无需支付任何所谓的定制化开发的费用。

架构设计:

后台画面:

自定义微主页的关键在于需要为用户提供数据和功能操作的接口,例如每日签到功能,用户在自己设计的微主页HTML代码中,怎么样调用系统的每日签到功能呢?

我们把这个功能抽象出来单独实现,通过 JavaScript 提供 API 供用户调用,并提供一个回调通知用户每日签到的结果,例如用户在自己的 HTML 代码中编写以下脚本:

  function documentReady() {
if (_member.SignedIn) {
$("#spanSignIn").html("已签到");
} else {
$("#spanSignIn").html("每日签到");
}
}
function signInCallback(result) {
switch (result.reason) {
case 0:
$("#spanPoint").html(_member.point);
$("#spanSignIn").html("已签到");
layerAlert("签到成功!获得积分 <b>" + result.signInPoint + "</b> 点~");
break;
case 1:
layerAlert("今天已经签到过了哦~");
break;
default:
layerAlert("未知返回结果:" + result.reason);
break;
}
}

从代码中可以看出,我们将用户信息封装成了 _member 对象,通过这个对象向用户提供当前会员的信息,还为用户提供了

function signInCallback(result)

这样的每日签到回调,会员在签到后,系统自动调用这一回调方法,并传入每日签到的结果。

实现方法

实现的方法并不复杂,我们只需将一般微主页中的功能提取后,在模块引擎中实现好,同时我们将前台呈现逻辑独立出来,使之与后台代码完全分开。
此外我们将共通的 JavaScript 函数 和 CSS 样式也提取出来,用户在设计自己的微主页时,引入这些 JavaScript 文件和 CSS 文件,进行设计,设计完成后,将 Body 段中的 HTML 代码保存到后台,微信端的呈现时,首先初始化模版引擎和基础数据,然后读取用户自定义 HTML 代码,进行渲染。

====

本章节结束。

写一篇文章,加上排版校对大约要用掉六小时左右的时间,你的支持是我最大的动力,对你有帮助的话请点击右下角“推荐”,谢谢。  :)

欢迎加我QQ交流探讨,共同学习:279060597,另外我在南京,有南京的朋友吗?

升讯威微信营销系统开发实践:所见即所得的微官网( 完整开源于 Github)的更多相关文章

  1. 升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  2. 升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  3. 升讯威微信营销系统开发实践:微信接口的 .NET 封装

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  4. 升讯威微信营销系统开发实践:(2)中控服务器的详细设计( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  5. 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  6. 升讯威微信营销系统开发实践:订阅号和服务号深入分析( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  7. 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装。

    微信开发系列教程,将以一个实际的微信平台项目为案例,深入浅出的讲解微信开发.应用各环节的实现方案和技术细节. 本系列教程的最终目标是完成一个功能完善并达到高可用性能指标的微信管理软件,所以除了与微信本 ...

  8. GitHub开源:升讯威微信营销系统(第三方微信平台)完整源代码

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction 升讯威微信营销系统开发实践系列升讯威微信营销系统开发实践:(1)功能设计与架构设 ...

  9. 【开源分享】微信营销系统(第三方微信平台)github 开源

    升讯威微信营销系统(微信第三方平台) 在线体验:http://wxcm.eeipo.cn/开源地址GitHub:https://github.com/iccb1013/Sheng.WeixinCons ...

随机推荐

  1. HDU 1522 Marriage is Stable 稳定婚姻匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=1522 #include<bits/stdc++.h> #define INF 0x3f3f3f3f ...

  2. 用BlockingQueue实现的简单发布订阅模式

  3. css去掉滚动条

    .main-layout-side::-webkit-scrollbar { display: none; } 主要代码: ::-webkit-scrollbar {display: none;}

  4. Js有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    <!DOCTYPE html> <title>Title</title> <script> var arr = [1,2,3,4,11]; var s ...

  5. centos/RHEL 7.6 使用yum安装php7.3(方便wordpress的php7.3需求,并解决了libphp7.so缺失问题)

    我最近想安装一个wordpress, 但是官网介绍需要php7.3以上版本,但是百度了一下,都是要编译安装. 为此,我想,centos..., php... 两大当红辣子鸡没有yum安装方式,简直不可 ...

  6. Python 的经典设计格言,格言来源于 Python 但不限于 Python

    The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Si ...

  7. Sublime 中文乱码问题

    今天在Windows上使用Sublime Text 3的时候,发现一些txt文本打开以后,中文都是乱码.于是搜了一下,找到了解决方案. 步骤: 在Sublime Text里,按ctrl+`,打开Con ...

  8. C++ 使用命名规范

    刚开始正式学习C++, 之前写了一个C++ 的小程序,但是并没有注意命名规范之类的.这一次重写一个类似的程序,再加上这几天学习 c++Prime(发现好喜欢这本书.虽然看的很慢,每一小节都感是满满的干 ...

  9. idea启动springboot+jsp项目出现404

    场景:用IntelliJ IDEA 启动 springBoot项目访问出现404,很皮,因为我用eclipse开发时都是正常的,找了很久,什么加注释掉<scope>provided< ...

  10. Jmeter多用户利用集合点瞬压并发测试

    在测试一些限时秒杀类似的接口时,需要模拟多用户同时一瞬间访问接口,我们这里简单模拟多用户同时访问百度. 1.首先打开Jmeter,在测试计划下添加线程组. 2.在线程组下添加HTTP请求. 3.在HT ...