用PbootCms扩展定制一个简单天气预报小插件
本文由广东鲸弘科技有限公司提供惠州小程序开发 / 网站建设专业分享。
实现思路
首先我们要获取访客IP,pb有写好的方法,get_user_ip(),这个就不用重复去写了。
有了IP地址就要去查IP归属城市,
查询好归属地之后再用归属地去查询当地天气。
根据IP查询城市
百度地图有我需要的接口,首先你需要有一个AK:可以到百度地图开放平台去申请,当然你也可以直接用我的,我不介意。

我们先测试下,看看百度地图API返回的信息:

这个city是我想要的值。
根据city查询天气
我这里用的今日头条的API,如果你需要用其他的API可以自行对照修改。
我们来看看头条的API返回内容:

这个接口返回的内容还是很多的,不要慌,红框里是我想要的内容,提取出来就行了。
好了,万事是具备,只欠代码。
上代码
修改文件:apps/home/controller/ExtLabelController.php
首先在run方法中,加入自定义标签$this->diylabel();方法
/* 必备启动函数 */ public function run($content) { // 接收数据 $this->content = $content; // 执行个人自定义标签函数 $this->diylabel(); // 返回数据 return $this->content; }紧接着,给出自定义标签的方法
// 扩展单个标签 private function diylabel() { $this->content = str_replace('{pboot:weather}', $this->getWeather(), $this->content); }接下来就是要返回标签替换的内容,接着写
//获取当地天气 private function getWeather(){ $city = $this->get_ip_city(); $url = "https://www.toutiao.com/stream/widget/local_weather/data/?city={$city}"; $result = get_url($url); $result = json_decode($result,true); //这里可以按照你需要自行组合 return $city.' 今天'.$result['data']['weather']['day_condition'].' 当前气温'.$result['data']['weather']['current_temperature']; } //获取城市 private function get_ip_city(){ $ip = get_user_ip(); $url = 'http://api.map.baidu.com/location/ip?ip=' . $ip . '&ak=x7sOPlIYZkFO9eXZHwEj4bc06IhqhdoF'; $html = file_get_contents($url); $res = json_decode($html); $city = $res->content->address_detail->city; //城市 return $city; }使用方法
在模板中使用{pboot:weather}即可。
上效果图:

呐,你们要的自定义天气标签,也可以根据你的实际需求把天气用图片来显示,更美观,这个就请自行尝试吧。
提示:该代码需要正式环境生效,本地环境IP可能是127.0.0.*或者localhost,获取不到城市信息。
广东鲸弘科技有限公司专注惠州网站建设、惠州小程序开发、企业官网定制、微信小程序开发等服务,欢迎咨询合作。
-
修复PbootCMS文章状态为关闭时tag标签依旧显示的问题
2025-09-02
64 -
分享一条宝塔PBOOTCMS自动清理rumtime缓存目录的SHELL脚本
2025-08-29
302 -
PbootCMS上传文件怎么修改大小限制
2025-09-08
131 -
pbootcms模板标签序数从2开始
2025-09-01
60 -
PbootCMS通过layui上传实现留言文件上传功能
2025-09-02
63 -
pbootcms pboot:nav 判断没有子类得时候显示同级栏目
2026-01-28
23 -
pbootcms网站标签pboot:list当前文档高亮设置教程
2025-08-29
51 -
pbootcms模板如何输出当前页面的完整url地址
2025-09-01
63 -
pbootcms网站上线后如何做好防护才能不被黑或者被注入
2025-09-08
379 -
pbootcms后台内容列表增加阅读量和点赞量自定义修改
2025-09-01
53
咨询热线:
联系电话
联系邮箱
联系QQ
方案获取
