作者: 老葛 亚艾元软件
我们这里主要讲解,微信服务号“亚艾元象棋”的配置。“亚艾元象棋”的前身是“亚艾元培训”,再前面是“老葛的Drupal培训班”,因为名字的原因,从最初的名字改为了“亚艾元培训”,最近将其改为“亚艾元象棋”。我们想做一个网站,能够充分的说明我们的技术,同时又具有实用性。加上我本人一直是一名象棋的爱好者,所以以象棋棋谱网站为例,作为Drupal制作网站的示例。
首先,前期的准备工作,一个是需要申请一个微信服务号,https://mp.weixin.qq.com/,微信公众号的注册申请,我们这里就略过了;申请完了以后,要通过认证,说白了是给微信缴纳300元的认证费,如果不认证的话,基本上是没有接口权限的,后面的工作就做不了。
认证完了以后,我们需要制作一个Drupal网站,注意这里是Drupal,而且是Drupal8。如果你现在刚开始学习Drupal,建议你学习Drupal8,因为Drupal7还是10年前的技术,整体架构已经落伍了不少;从Drupal7到Drupal8的升级很痛苦,但是从Drupal8到Drupal9的升级会很平滑。我们的亚艾元象棋网,已经初步搭建完毕。运行的环境:nginx、php7.1、mysql,centos7。
我们从drupal官网上下载微信模块wechat模块,下载地址:
https://www.drupal.org/project/wechat,注意下载8.x-1.0-beta3或者更高版本。
下载完毕,将其解压缩,传到网站的modules目录。导航到:admin/modules页面,找到微信模块,在前面的复选框中,将对应模块选中。
图8-1-1
这里有3个模块,wechat、 wechat menu、wechat default config,熟悉了以后,其实第3个模块可以不用启用的,自己配置即可。wechat default config只是为了降低初学者的配置成本,给出来的一个默认配置。wechat default config模块依赖于image url formatter模块。
导航到admin/wechat/config/default
图8-1-2
这里需要设置Token 、AppID、 AppSecret,将来还需要设置EncodingAESKey,在后面的版本中,将会增加这个配置选项。这些配置选项,除了Token ,是自己的设定的以外,AppID、 AppSecret都是微信公众平台提供的。
登陆微信公众平台,https://mp.weixin.qq.com/,点击右边菜单的“开发”---“基本设置”
图8-1-3
我们会看到如下所示的界面
图8-1-4
从这里获取AppID、AppSecret。注意这里的IP白名单设置,需要将我们网站的公网IP地址,填到这里。
图8-1-5
IP白名单,是微信后面新增的一个安全限制,开始的时候没有。微信是一个一致在进入的系统。
图8-1-6
如果这里没有启用的话,需要启用,并填写或者修改这里的配置。注意服务器地址:
http://chess.yaiyuan.com/wechat,域名+内部路径,我们的内部路径为wechat。Drupal端,对应配置配置好后,这里的配置也做对应修改。Token在Drupal端,微信公众号后台,需要保持一致。注意,wechat模块,暂时只支持明文模式,后续版本将会支持安全模式。所以目前只能选择明文模式。
这里保存设置,保存成功表示Drupal端与微信公众号后端通信成功;如果失败,请检查白名单是否设置,已经各项设置是否正确。
作者: 老葛 亚艾元软件
我们导航到admin/wechat/config/menu,这是我的配置:
图8-1-7
微信菜单:最多两级,一级菜单最多3个,一级菜单下属二级菜单最多5个。
点击上面的添加按钮,进入页面admin/wechat/config/menu/add:
图8-1-8
如果是一级菜单的话,只需要输入名字,选中父按钮即可。
图8-1-9
如果是二级菜单的话,需要选择所属的父级菜单:
图8-1-10
对于菜单类型,包含以下选项:
图8-1-11
点击推事件、跳转URL、扫码推事件、扫码推事件且弹出“消息接收中”提示框、弹出系统拍照发图、弹出拍照或者相册发图、弹出微信相册发图器、弹出地理位置选择器。常用的是点击推事件、跳转URL。
点击推事件的示例配置:
图8-1-12
跳转URL的示例配置:
图8-1-13
跳转URL,就是输入一个URL的绝对路径,这里需要注意的是,路径里面参数的值带有网址的话,需要url_encode一下,进行转义,最初不转义也可以工作,现在不行了。
我们使用权重,控制菜单项的相对位置,从小到大排列。在微信菜单的管理界面,我们没有实现可以拖拽调整顺序的效果,只能通过每个菜单项的权重进行调整。
这里,需要着说明的是,点击推事件的配置:
图8-1-14
Drupal里面处理列表都是用的视图(Views),对于微信里面的图文消息,wechat模块使用views对它进行相应,所以这里需要输入视图的机读名字、显示的机读名字,还有参数。
微信菜单推事件、微信默认搜索,这两个地方默认使用views进行响应。我们在wechat模块里面,实现了wechat response这个显示类型。这里我们看一下,我们views的具体配置,对于他们含义的详细讲解,参考后面的微信搜索的配置。
图8-1-15
我们需要构建一个entity的绝对路径,一种方式是使用wechat模块提供的:
Global: Entity absolute url
图8-1-16
一种是views自带的,覆写输出的形式:
图8-1-17
视图参数,我们用的分类术语,传递的是术语的tid,导航到分类页面,找到对应的分类术语,鼠标移动上去,地址里面的/taxonomy/term/[tid],这里可以获得tid。就是向views传递的参数。
图8-1-18
就是微信菜单项里面对应的参数。
图8-1-19
作者: 老葛 亚艾元软件
在微信的配置界面,找到“微信默认搜索”配置项:
图8-1-20
点击,进入页面:admin/wechat/config/default_search,我们看到
图8-1-21
这里我们需要弄明白,每个配置项的含义,如果你熟悉views的话,那么很简单。
l Views name: 视图的机读名字
l Views display: 显示的机读名字
l 过滤器标识符: 全文搜索对应字段的标识(机读名字)
admin/structure/views views的管理界面,找到上面的配置对应的视图
图8-1-22
Views的机读名字:
图8-1-23
可以在路径里面获取。
图8-1-24
再打开的视图的配置界面,点击上面的“wechat response”。
Display的名字,也可以在URL里面找到:
图8-1-25
也可以在views的高级配置里面找到:
图8-1-26
前面这两个相对简单一点,过滤器标识符,需要特别熟悉Drupal的人才会知道,我们这里给出它对应的位置,看这里:
图8-1-27
点击过滤条件“Search:全文搜索”, 或者你使用的搜索条件。我们看到这样的弹出框。
图8-1-28
这个还是比较熟悉的,我们往下拉,看到下面的信息:
图8-1-29
过滤器标识符就在这里,它其实是URL参数里面的key。
Views里面,全文搜索字段,必须是选中这个复选框的:“把这个过滤条件显示给网站的访问者,允许他们可以更改这个过滤条件。”
微信端的输入,最终传递给了这个过滤条件,这个过滤条件,用来检索用。
我们这里面使用的是solr, search API, search api solr, 注意安装的时候使用composer, composer 很多时候需要科学上网。
微信模块自带的默认配置,走的是Drupal核心自带搜索,需要启用核心search模块。
图8-1-30
默认搜索,对于中文来说,下面的配置“索引关键词最小字数”,从3改为1
图8-1-31
Drupal8下面,改进了一点,不改为1可能也能搜索出来。
需要注意几点:
1) display type 必须选择使用 wechat response:
图8-1-32
2) 必须做好Views字段与微信消息字段之间的映射关系。点击显示里面的设置。
图8-1-33
我们看到这样的弹出框。
图8-1-34
这里的label名字,是微信官方需要我们提供的。下拉列表里面的字段,是对应views的可用字段。
图8-1-35
这里的字段,是在views配置的FIelds里面添加的:
图8-1-36
这是另一个映射示例:
图8-1-37
总之这里的映射关系,需要配置好。
3)
显示的项目数量不能超过8。微信的限制:以前是10, 后来改成8了。推荐使用5,
图8-1-38