`showmessage()` 是 Discuz! 中一个非常常用的函数,用于在页面上显示提示信息,并且可以控制提示信息的样式、跳转逻辑等。下面我将详细分析这个函数的用法,并结合实例进行说明。
### 函数结构
- function showmessage($message, $url_forward = '', $values = array(), $extraparam = array(), $custom = 0) {
- require_once libfile('function/message');
- return dshowmessage($message, $url_forward, $values, $extraparam, $custom);
- }
复制代码
- **$message**: 提示信息内容,可以是纯文本,也可以是语言包中的键值。
- **$url_forward**: 提示信息显示后跳转的URL。如果为空,则不跳转。
- **$values**: 用于替换提示信息中的变量,格式为 `array('key' => 'value')`。
- **$extraparam**: 扩展参数,用于控制提示信息的样式、跳转时间、是否显示对话框等。
- **$custom**: 自定义参数,通常用于扩展功能。
### 扩展参数 `$extraparam` 详解
`$extraparam` 是一个数组,可以包含以下键值对:
1. **跳转控制**:
- `header`: 是否使用 `header` 跳转。
- `timeout`: 是否启用定时跳转。
- `refreshtime`: 自定义跳转时间(秒)。
- `closetime`: 自定义关闭时间(秒),仅适用于 `msgtype = 2`。
- `locationtime`: 自定义跳转时间(秒),仅适用于 `msgtype = 2`。
2. **内容控制**:
- `alert`: 提示信息的图标样式,可选值有 `right`、`info`、`error`。
- `return`: 是否显示“请返回”链接。
- `redirectmsg`: 下载时用的提示信息,当跳转时显示的信息样式。
- `msgtype`: 信息样式,可选值有:
- `1`: 非 Ajax 提示。
- `2`: Ajax 弹出框。
- `3`: Ajax 只显示信息文本。
- `showmsg`: 是否显示信息文本。
- `showdialog`: 是否关闭原弹出框并显示 `showDialog` 信息,仅适用于 `msgtype = 2`。
- `login`: 未登录时是否显示登录链接。
3. **Ajax 控制**:
- `handle`: 执行 JS 回调函数。
### 实例分析
#### 1. 提示改名成功
- showmessage('您已更新博客名为:{name} ', '', array('name' => '新博客名称'));
复制代码
- **$message**: `'您已更新博客名为:{name}'`,提示信息内容,其中 `{name}` 是一个占位符。
- **$url_forward**: `''`,表示不跳转。
- **$values**: `array('name' => '新博客名称')`,将 `{name}` 替换为 `新博客名称`。
- **$extraparam**: 未设置,使用默认值。
#### 2. 提示发布成功
- showmessage('恭喜您,操作成功,获得奖励{credit}积分!', NULL, array('credit' => 888), array('alert' => 'right', 'login' => '1'));
复制代码
- **$message**: `'恭喜您,操作成功,获得奖励{credit}积分!'`,提示信息内容,其中 `{credit}` 是一个占位符。
- **$url_forward**: `NULL`,表示不跳转。
- **$values**: `array('credit' => 888)`,将 `{credit}` 替换为 `888`。
- **$extraparam**: `array('alert' => 'right', 'login' => '1')`,设置提示信息图标为 `right`,并且未登录时显示登录链接。
#### 3. 提示发布成功并跳转
- showmessage('恭喜您,内容发布成功,正在跳转到首页!', $_G, array(), array('locationtime' => true, 'refreshtime' => 3, 'showdialog' => 1, 'showmsg' => true));
复制代码
- **$message**: `'恭喜您,内容发布成功,正在跳转到首页!'`,提示信息内容。
- **$url_forward**: `$_G`,表示跳转到全局变量 `$_G` 中定义的 URL。
- **$values**: `array()`,没有需要替换的变量。
- **$extraparam**: `array('locationtime' => true, 'refreshtime' => 3, 'showdialog' => 1, 'showmsg' => true)`,设置跳转时间为 3 秒,显示对话框,并且显示信息文本。
### 总结
`showmessage()` 是一个非常灵活的函数,通过合理设置参数,可以实现各种提示信息的显示和跳转逻辑。在实际开发中,可以根据需求灵活使用 `$extraparam` 参数来控制提示信息的样式和行为。
如果你有更多关于 Discuz! 开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |