Updated 自定义菜单 (markdown)

安正超 2015-03-19 10:51:16 +08:00
parent 6cfdedf311
commit f3ea4cbbf8

@ -1,41 +1,101 @@
# 自定义菜单
```php
$wechat->menu;
```
+ `$menu->get();` 读取菜单
+ `$menu->set($menus);` 设置菜单
+ `$menu->delete();` 删除菜单
自定义菜单功能的使用场景:你自己做了网站后台,想要管理某个公众号的菜单,在后台填写表单后,经由 SDK 请求微信的服务器完成菜单设定。
> 注意:菜单设置后不会在微信上立马看到
## 概念
#### 菜单项 MenuItem
菜单的组成单位分为一级与二级一个微信菜单包含最多3个一级菜单项。一个一级菜单项可以包含最多5个二级菜单项。
## 注意事项
目前自定义菜单最多包括3个一级菜单每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字二级菜单最多7个汉字多出来的部分将会以“...”代替。请注意创建自定义菜单后由于微信客户端缓存需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注则可以看到创建后的效果。
点击后展开更多菜单,
+ `array $menu->get();` 读取菜单
+ `boolean $menu->set(array $menus);` 设置菜单,参数为一个包含最多三个一级菜单项的数组
+ `boolean $menu->delete();` 删除菜单
+ `MenuItem $menu->make($name, $type = null, $key = null)` 创建一个菜单项
- `$name` 菜单项名称,比如:`今日歌曲`
- `$type` 菜单项类型,比如:`view`,`click`等,更多请参考 http://mp.weixin.qq.com/wiki `自定义菜单` 章节。
- `$key` 菜单项的值,当 `$type``view` 时为目标 URL其它为自定义 key。
一个菜单项可以使用 `buttons` 方法传入一个菜单项数组创建二级菜单项:
``
> 注意由于微信客户端缓存需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注则可以看到创建后的效果。
example:
```php
use Overtrue\Wechat\Services\Menu;
$wechat->menu->set(array(
$menus = array(
Menu::click("今日歌曲")->key('V1001_TODAY_MUSIC'),
Menu::make("菜单")->buttons(array(
Menu::view('搜索', 'http://www.soso.com/'),
Menu::view('视频', 'http://v.qq.com/'),
Menu::click('赞一下我们', 'V1001_GOOD'),
)),
));
);
try {
Menu::set($menus);// 请求微信服务器
echo '设置成功!';
} catch (\Exception $e) {
echo '设置失败:' . $e->getMessage();
}
```
如果你不想引入`Overtrue\Wechat\Services\Menu` 命名空间,也可以通过`$wechat->menu->make($name, $type, $propery)` 来创建,比如上面示例也可以写成:
如果你不想引入`Overtrue\Wechat\Services\Menu` 命名空间,也可以通过
`$wechat->menu->make($name, $type = null, $key = null)`
来创建,比如上面示例也可以写成:
```php
$wechat->menu->set(array(
$wechat->menu->click("今日歌曲")->key('V1001_TODAY_MUSIC'),
$wechat->menu->make("菜单")->buttons(array(
$wechat->menu->view('搜索', 'http://www.soso.com/'),
$wechat->menu->view('视频', 'http://v.qq.com/'),
$wechat->menu->click('赞一下我们', 'V1001_GOOD'),
$wechat->menu->make('今日歌曲', 'click', 'V1001_TODAY_MUSIC'),
$wechat->menu->make('菜单')->buttons(array(
$wechat->menu->make('搜索', 'view', 'http://www.soso.com/'),
$wechat->menu->make('视频', 'view', 'http://v.qq.com/'),
$wechat->menu->make('赞一下我们', 'click', 'V1001_GOOD'),
)),
));
```
### 创建子菜单
`$wechat->menu->make()` 方法以及 `$wechat->menu->click()` 或者 `$wechat->menu->view()` 返回的对象均为 `Overtrue\Wechat\Services\MenuItem` 对象,`MenuItem` 对象有一个方法 `buttons(array $items)` 指定**二级菜单**(子菜单)。
```php
$wechat->menu->make('菜单')->buttons(array(
$wechat->menu->make('搜索', 'view', 'http://www.soso.com/'),
$wechat->menu->make('视频', 'view', 'http://v.qq.com/'),
$wechat->menu->make('赞一下我们', 'click', 'V1001_GOOD'),
));
```
以上就会构成以下样子的菜单:
```
菜单
搜索
视频
赞一下我们
```
但是这样看起来似乎没有那么直观的感觉。 :laughing:
更多关于微信自定义菜单 API 请参考: http://mp.weixin.qq.com/wiki `自定义菜单` 章节。