# 控制器方法覆盖(cover)
## 原理
通过覆盖对应的控制器方法,让程序调用该方法的时候,调用自己二开后的功能。
## 举例
**需要实现的功能**
如果我要在用户进入首页的时候检测用户的IP,并显示在首页上显示出用户的访问IP
**分析**
首页相关的控制器是`Home/c/HomeController.php`,相关的方法是`index()`
那么我要做的是在`index()`方法里面写一个获取用户IP的东西,并想办法显示到首页`index.html`上面
**实现**
1. 复制`Home/c/`下面的`HomeController.php`到`Home/plugins/`目录下面
2. 修改内容如下:
~~~
namespace Home\plugins;//更改这个地方,原来是 c 改为 plugins
use Home\c\CommonController;//更改这个地方,原来FrPHP\lib\Controller
use FrPHP\Extend\Page;
use FrPHP\Extend\ArrayPage;
~~~
3. 在这个新文件里面的`index()`方法里写获取用户IP的方法
~~~
//首页
function index(){
//插入获取用户IP的方法
$ip = GetIP(); //系统内置的方法,无需考虑如何实现
//赋值到模板中输出,这一步不能缺少,否则无法输出
$this->ip = $ip;
/**以上为新增内容**/
$url = current_url();
$cache_file = APP_PATH.'cache/data/'.md5(frencode($url));
$this->cache_file = $cache_file;
$this->start_cache($cache_file);
$this->display($this->template.'/index');
$this->end_cache($this->cache_file);
}
~~~
4. 模板`index.html`中输出用户IP
~~~
{$ip} 或者 {php echo $ip /}
~~~
5. 制成后台安装插件,请查看左侧相关章节。
> 是不是相当简单? 简单就对了,极致CMS就是很简答的东西~
- 引言
- 条款
- 开始使用
- 模板标签
- 公共配置
- 系统配置
- 自定义配置
- 网站栏目
- 全局栏目属性
- 导航栏相关
- 当前栏目下的直系下级
- 当前栏目下的直系上级
- 栏目详情页
- 栏目列表页
- 栏目分页
- 输出三级及三级以上栏目
- 当前位置面包屑
- 获取当前栏目的顶级栏目
- 直播讲解栏目相关
- 文章详情页
- 基本内容
- 点赞
- 收藏
- 相关文章
- 输出新增字段
- 商品详情页
- 基本内容
- 输出新增字段
- 商品图集
- 点赞
- 收藏
- *点评星星
- 加入购物车
- *评论
- 相关商品
- 自定义字段
- 原样输出
- 单选字段
- 多选字段
- loop标签
- 通用说明
- loop分页
- 案例说明
- like使用
- 怎么判断loop没有数据
- limit使用
- day参数
- table缺省参数
- 单选多选相关
- 单选字段输出
- 多选字段输出
- 特殊输出
- 输出换行
- 替换字符串
- 输出被解析的HTML原句
- 截取字符串
- 内容body去除HTML
- 分割字符输出
- foreach标签
- for标签
- fun标签
- php标签
- 不解析标签
- if..else..标签
- screen筛选标签
- 客户端判断
- 轮播图
- 友情链接
- 自定义图集输出
- Tags标签调用及使用说明
- 网站留言调用
- 自定义单页
- 系统架构
- 高级功能
- ajax数据交互
- ajax在栏目页的应用
- ajax在screen筛选中的应用
- screen多选筛选
- Message留言表单
- 万能表单
- 多语言支持
- 系统高级配置说明
- 网站动态链接
- 邮件发送
- 插件开发
- 控制器方法覆盖(cover)[简单]
- 控制器方法钩子(hook)[复杂]
- 制成后台安装插件
- 附录
- 时间
- 富文本编辑器导航
- 版本更新