用pbootcms扩展定制一个访客当地天气

资源来源网络,如需授权,请更换源码,模块仅供学习,如需商用请购买正版授权,本栏目不提供技术服务,积分不够请签到!如何签到?系统升级暂停签到,恢复关注公告!
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试!

PbootCms交流群里有同学提出给PbootCms加一个天气。安排。
首先我们要获取访客IP,pb有写好的方法,get_user_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}即可。

上效果图:

©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
风格酷 » 用pbootcms扩展定制一个访客当地天气
NOTICE:【风格酷交流群】限时免认证QQ群:434230249
NOTICE:【风格酷VIP交流群】交流QQ群:860932181 ☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服
☉如有其他问题,请加网站客服QQ(330921598)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。

发表评论

风格酷源码www.fenggeku.com 提供更优质的资源集合

立即查看 了解详情