mirror of
https://github.com/w7corp/easywechat.git
synced 2025-01-22 19:52:10 +00:00
Updated 自定义菜单 (markdown)
parent
6cfdedf311
commit
f3ea4cbbf8
100
自定义菜单.md
100
自定义菜单.md
@ -1,39 +1,99 @@
|
||||
```php
|
||||
# 自定义菜单
|
||||
|
||||
```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;
|
||||
|
||||
$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 = null, $key = null)`
|
||||
|
||||
来创建,比如上面示例也可以写成:
|
||||
|
||||
```php
|
||||
$wechat->menu->set(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'),
|
||||
$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'),
|
||||
)),
|
||||
));
|
||||
```
|
||||
|
||||
如果你不想引入`Overtrue\Wechat\Services\Menu` 命名空间,也可以通过`$wechat->menu->make($name, $type, $propery)` 来创建,比如上面示例也可以写成:
|
||||
### 创建子菜单
|
||||
|
||||
`$wechat->menu->make()` 方法以及 `$wechat->menu->click()` 或者 `$wechat->menu->view()` 返回的对象均为 `Overtrue\Wechat\Services\MenuItem` 对象,`MenuItem` 对象有一个方法 `buttons(array $items)` 指定**二级菜单**(子菜单)。
|
||||
|
||||
```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('菜单')->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:
|
||||
|
Loading…
Reference in New Issue
Block a user