wego微购RSS、Sitemap、Ping、腾讯拍拍网购采集插件
和哥们研究淘宝客,找到微购这个程序觉得挺不错的,但是地图和RSS功能不是特别完善,于是小憩一下,做了下初级的拓展,分享给大家,开源精神嘛,大家也可以去我的网站我要购物平台去看看。
1.拓展后台seoAction.class.php
- <?php
- !defined("BUILD_BATCH_COUNT")&&define("BUILD_BATCH_COUNT",200);
- class seoAction extends baseAction
- {
- //显示列表
- public function index(){
- $this->showindex("网站首页");
- }
- public function seller()
- {
- $this->showindex("返现商家");
- }
- public function search()
- {
- $this->showindex("逛宝贝");
- }
- public function album()
- {
- $this->showindex("专辑");
- }
- public function promo()
- {
- $this->showindex("促销活动页");
- }
- public function exchange_goods()
- {
- $this->showindex("积分商城");
- }
- public function cate()
- {
- $this->showindex("商品分类页");
- }
- public function item()
- {
- $this->showindex("商品详细页");
- }
- public function showindex($title)
- {
- $map['actionname'] = ACTION_NAME;
- $info = $this->seo_mod->where($map)->find();
- $this->assign('info',$info);
- $this->assign('title',$title);
- $this->display("index");
- }
- //修改
- public function edit()
- {
- $this->seo_mod->create();
- $status = $_POST['id'] ? $this->seo_mod->save() : $this->seo_mod->add();
- if($status){
- $this->success("操作成功!");
- }else{
- $this->error("操作失败!");
- }
- }
- //伪静态设置
- function rewrite(){
- $this->assign('set',$this->setting);
- $this->display();
- }
- //设置seo信息
- function doEditSeo(){
- if(isset($_POST["site"]["url_model"])){
- $_POST["site"]["url_model"];
- $address = ROOT_PATH."/index/Conf/config.php";
- $configFile = file_get_contents($address);
- $newFile = str_replace("'URL_MODEL' => {$this->setting['url_model']}","'URL_MODEL' => {$_POST['site']['url_model']}",$configFile);
- if(!file_put_contents($address,$newFile)){
- $this->error("保存伪静态模式错误!请查看目录是否有修改权限");
- }
- if(unlink(ROOT_PATH."/index/Runtime/~runtime.php")){
- // $success = "保存数据成功";
- }
- //保存伪静态后缀
- if(!empty($_POST['site']['html_suffix'])&&trim($_POST['site']['html_suffix'])!='/'){
- $_br = "\r\n";
- $_tab = "\t";
- $_profile = '<?php'.$_br;
- $_profile .= $_tab."//seo后缀配置文件".$_br;
- $_profile .= $_tab."return array(
- 'URL_HTML_SUFFIX'=>'{$_POST['site']['html_suffix']}'
- );".$_br;
- $_profile .= $_br;
- $_profile .= '?>'.$_br;
- if (!file_put_contents(ROOT_PATH."/index/Conf/html_suffix.php", $_profile)) {
- $this->error("保存后缀配置文件失败,请重试!");
- }
- }else{
- $_br = "\r\n";
- $_tab = "\t";
- $_profile = '<?php'.$_br;
- $_profile .= $_tab."//seo后缀配置文件".$_br;
- $_profile .= $_tab."return array(
- );".$_br;
- $_profile .= $_br;
- $_profile .= '?>'.$_br;
- if (!file_put_contents(ROOT_PATH."/index/Conf/html_suffix.php", $_profile)) {
- $this->error("保存后缀配置文件失败,请重试!");
- }
- }
- $map["name"] = 'url_model';
- M('setting')->where($map)->setField('data',$_POST['site']['url_model']);
- $map["name"] = 'html_suffix';
- M('setting')->where($map)->setField('data',trim($_POST['site']['html_suffix']));
- $this->success("保存数据成功!");
- }
- }
- //显示伪静态信息
- function showRewriteRules(){
- $where=array('name'=>'html_suffix');
- $setting_mod=D('setting');
- $html_suffix_rel=$setting_mod->where($where)->find();
- $this->assign('suffix',$html_suffix_rel['data']); //
- $where=array('name'=>'url_model');
- $url_model_rel=$setting_mod->where($where)->find();
- $this->assign('url_model',$url_model_rel['data']); //
- $this->display();
- }
- function sitemap(){
- if(!empty($_POST['dosubmit'])){
- vendor("sitemap.WSitemap");
- $_sitemap=new WSiteMap();
- $lastmod=date("Y-m-d");
- //首页
- $_sitemap->add($this->setting['site_domain']."/index.php",$lastmod,"always","1.0");
- //导航
- $nav_cate = M("nav")->where("is_show=1 AND in_site!='0'")->order("sort_order")->select();
- foreach($nav_cate as $v){
- if($v['system']=='1')
- $loc=$this->setting['site_domain']."/index.php?a=index&m=".$v['alias'];
- else{
- if($v['in_site']=='0')
- $loc=$v['url'];
- else
- $loc=$this->setting['site_domain']."/index.php?a=index&m=cate&cid=".$v['items_cate_id'];
- }
- $_sitemap->add($loc,$lastmod,"monthly","0.7");
- }
- //逛宝贝热门搜索
- $setting_cate = M('setting')->where("name='search_words'")->select();
- $setting = explode(",",$setting_cate[0]['data']);
- foreach($setting as $v)
- $_sitemap->add($this->setting['site_domain']."/index.php?a=index&m=search&keywords=".$v,$lastmod,"always","0.8");
- //专辑分类
- $album_cate = M("album_cate")->where("status=1")->order("sort_order")->select();
- foreach($album_cate as $v)
- $_sitemap->add($this->setting['site_domain']."/index.php?m=album&a=index&cid=".$v['id'],$lastmod,"monthly","0.7");
- //返现商家
- $seller_cate = M("seller_cate")->where("status=1")->order("sort")->select();
- foreach($seller_cate as $v)
- $_sitemap->add($this->setting['site_domain']."/index.php?m=seller&a=index&id=".$v['id'],$lastmod,"monthly","0.9");
- //读取标签
- $getlabel = file_get_contents("./data/label.txt");
- $label = explode(",",$getlabel);
- //所有标签
- $items_tags = M("items_tags")->where("status=1")->select();
- foreach($items_tags as $v){
- if(!preg_match("/\w|【|】|、|(|)|\/",$v['name'])){
- if(in_array($v['name'],$label))
- $_sitemap->add($this->setting['site_domain']."/index.php?m=cate&a=tag&id=".$v['id'],$lastmod,"always","0.9");
- }
- }
- $data=$_sitemap->get();
- //读取产品
- $data = str_replace('><', ">\n<", $data);
- //$data = iconv("GB2312", 'UTF-8',$data);
- $data=str_replace("&","&",$data);
- if(file_put_contents("sitemap.xml",$_sitemap->begin().$data)){
- //读取商品数据
- $this->success("提交成功,接下来将分析大数据,请耐心等候...","/admin.php?m=seo&a=sitemap_items",1);
- }else{
- $this->error("提交失败!");
- }
- }
- $this->display();
- }
- public function sitemap_items(){
- import('ORG.Util.Page');
- vendor("sitemap.WSitemap");
- $_sitemap=new WSiteMap();
- $_items=M("items");
- $count=!empty($_GET['count'])?$_GET['count']:0;
- $nowPage=!empty($_GET['p'])?$_GET['p']:0;
- !$count&&$count=$_items->where("status=1")->count("id");
- $_page=new Page($count,BUILD_BATCH_COUNT);// 实例化分页类 传入总记录数
- $list=$_items->order('add_time DESC')->field("id,add_time")->page($nowPage.','.$_page->listRows)->select();
- foreach($list as $v){
- $lastmod=date("Y-m-d",$v['add_time']);
- $_sitemap->add($this->setting['site_domain']."/index.php?a=index&m=item&id=".$v['id'],$lastmod,"daily","0.9");
- }
- //读取产品
- $data = str_replace('><', ">\n<", $_sitemap->get());
- //$data = iconv("GB2312", 'UTF-8',$data);
- $data=str_replace("&","&",$data);
- if(!file_put_contents("sitemap.xml",$data,FILE_APPEND)){
- @file_put_contents("sitemap.xml",$_sitemap->end(),FILE_APPEND);
- $this->error("提交失败。","/admin.php?m=seo&a=sitemap",1);
- }
- if($nowPage>=$_page->totalPages){
- @file_put_contents("sitemap.xml",$_sitemap->end(),FILE_APPEND);
- $this->success("生成完毕,共生成条".$count."记录。","/admin.php?m=seo&a=sitemap");
- }else{
- //生成下一页
- $this->success("共".$_page->totalPages."页,第".($nowPage+1)."页,请耐心等候...","/admin.php?m=seo&a=sitemap_items&p=".($nowPage+1)."&count=".$count,1);
- }
- }
- public function item_rss(){
- import('ORG.Util.Page');
- vendor("rss.WRss");
- $_rss=new WRss();
- $_items=M("items");
- $count=!empty($_GET['count'])?$_GET['count']:0;
- $nowPage=!empty($_GET['p'])?$_GET['p']:0;
- if(!$nowPage)
- @file_put_contents("rss.xml",$_rss->begin().$_rss->site($this->setting['site_title'],$this->setting['site_domain'],$this->setting['site_description']));
- !$count&&$count=$_items->where("status=1")->count("id");
- $_page=new Page($count,BUILD_BATCH_COUNT);// 实例化分页类 传入总记录数
- $list=$_items->order('add_time DESC')->field("id,title,img,seller_name,add_time")->page($nowPage.','.$_page->listRows)->select();
- foreach($list as $v){
- $lastmod=date("D d F Y h:i:s",$v['add_time']);
- $link=$this->setting['site_domain']."/index.php?a=index&m=item&id=".$v['id'];
- $_rss->add($v['title'],$link,$v['title']."<img src=\"{$v[img]}\"/>",$v['seller_name'],$lastmod,$link);
- }
- //读取产品
- $data = str_replace('><', ">\n<", $_rss->get());
- //$data = iconv("GB2312", 'UTF-8',$data);
- $data=str_replace("&","&",$data);
- if(!file_put_contents("rss.xml",$data,FILE_APPEND)){
- @file_put_contents("rss.xml",$_rss->end(),FILE_APPEND);
- $this->error("提交失败。","/admin.php?m=seo&a=sitemap",1);
- }
- if($nowPage>=$_page->totalPages){
- @file_put_contents("rss.xml",$_rss->end(),FILE_APPEND);
- $this->success("生成完毕,共生成条".$count."记录。","/admin.php?m=seo&a=sitemap");
- }else{
- //生成下一页
- $this->success("共".$_page->totalPages."页,第".($nowPage+1)."页,请耐心等候...","/admin.php?m=seo&a=item_rss&p=".($nowPage+1)."&count=".$count,3);
- }
- }
- public function ping(){
- $ids=$_GET['ids'];
- $p=isset($_GET['p'])?$_GET['p']:0;
- $idsArray=explode('_',$ids);
- $idsCount=count($idsArray);
- if($p<$idsCount){
- //百度google推送
- vendor("ping.WPing");
- $_ping=new WPing();
- $_items=M("items");
- $currentId=$idsArray[$p];
- $items=$_items->where("id=".$currentId)->field("title")->find();
- if(!$items){
- $this->error("记录".$currentId."不存在,将推送下一条请耐心等候...","/admin.php?m=seo&a=ping&p=".($p+1)."&ids=".$ids,1);
- }
- $link=$this->setting['site_domain']."/index.php?a=index&m=item&id=".$currentId;
- $_ping->method($this->setting['site_name'],$this->setting['site_domain'],$link,$this->setting['site_domain'].'/rss.xml');
- $sb=$_ping->baidu()?"成功":"失败";
- $gb=$_ping->google()?"成功":"失败";
- $this->success("共".$idsCount."条记录需要需要推送,当前第".($p+1)."条,百度反馈{$sb},谷歌反馈{$gb}。请耐心等候...","/admin.php?m=seo&a=ping&p=".($p+1)."&ids=".$ids,2);
- }else{
- $this->success("推送完毕,共生成条".$idsCount."记录。","/admin.php?m=seo&a=sitemap");
- }
- }
- function get_itmes_cate($pid){
- $model = M('items_cate');
- $map["status"] = 1;
- $map["pid"] = $pid;
- $list = $model->field('id')->where($map)->select();
- foreach($list as $v){
- $id .= $v['id'].",";
- }
- $pid = trim($id,",");
- $maps["status"] = 1;
- $maps["pid"] = array('in',$pid);
- $lists = $model->field('id,name')->where($maps)->select();
- foreach($lists as $v){
- $str .= "<a href='/index.php?a=index&m=cate&cid=".$v['id']."'>{$v['name']}</a>";
- }
- return $str;
- }
- function test(){
- $items_tags = M("items_tags")->where("status=1")->select();
- foreach($items_tags as $v){
- if(!preg_match("/\w|【|】|、|(|)|\/",$v['name'])){
- echo $v['name']." http://www.qianbao.cn/index.php?m=cate&a=tag&id=".$v['id']."</br>";
- }
- }
- }
- }
- ?>
追加系统Vendar需要的库文件RSS、Sitemap、Ping
/includes/thinkphp/Extend/Vendar/ping/WPing.php
- <?php
- /**
- +------------------------------------------------------------------------------
- * 通知搜索引擎过来抓去最新发布的内容。秒收不是梦
- * 目前仅支持Google和Baidu
- +------------------------------------------------------------------------------
- */
- class WPing {
- public $method, $callback;
- public function method($site_name,$site_url,$update_url,$update_rss) {
- $this->method = "
- <?xml version=\"1.0\" encoding=\"UTF-8\"?>
- <methodCall>
- <methodName>weblogUpdates.extendedPing</methodName>
- <params>
- <param><value>{$site_name}</value></param>
- <param><value>{$site_url}</value></param>
- <param><value>{$update_url}</value></param>
- <param><value>{$update_rss}</value></param>
- </params>
- </methodCall>";
- return $this->method;
- }
- public function _post($url, $postvar) {
- $ch=curl_init ();
- $headers=array ("POST " . $url . " HTTP/1.0", "Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Content-length: " . strlen ( $postvar ) );
- curl_setopt($ch,CURLOPT_URL,$url);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch,CURLOPT_POST,1);
- curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
- curl_setopt($ch,CURLOPT_POSTFIELDS,$postvar);
- $res=curl_exec($ch);
- curl_close($ch);
- return $res;
- }
- public function google() {
- $this->callback = $this->_post ( 'http://blogsearch.google.com/ping/RPC2', $this->method );
- return strpos ( $this->callback, "<boolean>0</boolean>" ) ? true : false;
- }
- public function baidu() {
- $this->callback = $this->_post ( 'http://ping.baidu.com/ping/RPC2', $this->method );
- return strpos ( $this->callback, "<int>0</int>" ) ? true : false;
- }
- }
- ?>
/includes/thinkphp/Extend/Vendar/rss/WRss.php
- <?php
- class WRss{
- private $urls="";
- public function add($title,$link,$description,$author,$pubDate,$guid=0,$share=true){
- !empty($title)&&$tmp.="<title>{$title}</title>";
- !empty($link)&&$tmp.="<link>{$link}</link>";
- !empty($description)&&$tmp.="<description>{$description}</description>";
- !empty($author)&&$tmp.="<author>{$author}</author>";
- !empty($pubDate)&&$tmp.="<pubDate>{$pubDate}</pubDate>";
- !empty($guid)&&$tmp.="<guid>{$guid}</guid >";
- $this->urls.="<item>".$tmp."</item>";
- }
- public function get($charset="UTF-8"){
- return $this->urls;
- }
- public function begin(){
- return '<?xml version="1.0" encoding="UTF-8"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0"><channel>';
- }
- public function end(){
- return "</channel></rss>";
- }
- public function site($title,$link,$description,$managingEditor="mengdj@outlook.com",$webMaster="mengdj@outlook.com"){
- return "<title>{$title}</title><link>{$link}</link><description>{$description}</description><managingEditor>{$managingEditor}</managingEditor><webMaster>{$webMaster}</webMaster>";
- }
- }
- ?>
/includes/thinkphp/Extend/Vendar/sitemap/WSitemap.php
- <?php
- class WSiteMap{
- private $urls="";
- public function add($loc,$lastmod,$changefreq=0,$priority=0){
- !empty($loc)&&$tmp.="<loc>{$loc}</loc>";
- !empty($loc)&&$tmp.="<lastmod>{$lastmod}</lastmod>";
- !empty($loc)&&$tmp.="<changefreq>{$changefreq}</changefreq>";
- !empty($loc)&&$tmp.="<priority>{$priority}</priority>";
- $this->urls.="<url>".$tmp."</url>";
- }
- public function get($charset="UTF-8"){
- return $this->urls;
- }
- public function begin(){
- return '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
- }
- public function end(){
- return "</urlset>";
- }
- }
- ?>
另外修改了thinkphp默认的Page类文件,其实也就开放了一个统计页数的属性
修改完成后再后台添加对应的菜单就可以了,祝你好运。另外还有个拍拍平台采集插件,需要的可联系我。¥5元免费使用升级,哈哈...,当是资助开发了。
文件以及目录可在此处下载:http://files.cnblogs.com/mengdejun/wyao.in.zip
php源码zend加密和解密方案:http://re.paipai.com/tws/...
wego微购RSS、Sitemap、Ping、腾讯拍拍网购采集插件的更多相关文章
- 让wego微购购物分享系统采集拍拍数据功能之腾讯paipai功能采集插件
wego是一款很不错的导购系统,无论前后台设计风格和功能都还不错,可有时我们的确需要一些自定义的功能,毕竟万千世界,大家都做一样的东西,采集同样的数据,能不烦吗?哈哈,今天就奉献上一个wego拍拍采集 ...
- 高性能高可用的微服务框架TarsGo的腾讯实践
conference/2.3 高性能高可用的微服务框架TarsGo的腾讯实践 - 陈明杰.pdf at master · gopherchina/conferencehttps://github.co ...
- Ionic2中集成腾讯Bugly之自定义插件
Ionic2混合开发,入坑系列:Ionic2中集成腾讯Bugly之自定义插件 1.编写Bugly.js代码 var exec = require('cordova/exec'); module.exp ...
- JeeWx全新版本发布!捷微二代微信活动平台1.0发布!活动插件持续开源更新!
JeeWx捷微二代微信活动平台 (专业微信营销活动平台,活动插件持续更新ing~) 终于等到你!还好我没放弃! 在团队持续多年的努力下,Jeewx微信管家和H5活动平台不断更新迭代,积累了许许多 ...
- 腾讯用过的插件jQuery twentytwenty 效果对比
在线实例 左右对比 上下对比 使用方法 <div class="twentytwenty-container"> <img src="/api/ ...
- 智芯微版本的智能配变融合终端交流采集APP
1. 交采APP基本原理 通过SPI总线周期性的召测交流采集底板的“实时数据”,对“实时数据”变换.加工.统计分析得到“分析数据”和“统计数据”后,通过MQTT总线把这些数据同步到“数据中心”供其他 ...
- 深度观察:腾讯收购大众点评背景下的O2O大格局
[亿欧导读] 腾讯入股大众点评获得20%股权,详情解读:①大众点评:独立自主为底线,要钱大于要流量:②腾讯:承认原生活服务O2O失败,丰富移动支付应用场景:③美团承受压力,拉手窝窝继续苦等买家:④BA ...
- 腾讯ISUX网页前端代码分析
看了一下腾讯ISUX网页,无论是pc端还是移动端,展示都挺好看的,先对其代码进行分析如下: 1,先看前三行代码 <!DOCTYPE html> <!-- 腾讯 ISUX 是腾讯集团核 ...
- 【BUG】wego购物分享系统未登陆分享宝贝时查看宝贝自动新增产品数据
1.登录微购http://demo.wego360.com/站. 2.分享宝贝功能检索第三方平台商品数据. 1.登录微购http://demo.wego360.com/站. 2.分享宝贝功能检索第三方 ...
随机推荐
- 不通过App Store实现ios应用分发下载安装
最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线,需要一种临时的方案解决应用分发下载问题,通常ios应用必须通过苹果应用商店才能下载安装,但是也可以看到 ...
- hihoCoder 1391 Countries【预处理+排序+优先队列】2016北京网络赛
题目:http://hihocoder.com/problemset/problem/1391 题目大意: A和B两个国家互射导弹,每个国家都有一个防御系统,在防御系统开启的时间内可以将到达本国的导弹 ...
- 解决全局变量共享---C语言的extern关键字用法
在调试程序时,有一个参数需要在多个函数之间传递,因为是作为调试参数,不想将参数引入到函数中. 很自然的想到使用全局变量来表示这个公共参数,工程代码的结构如下: main.c test.c test.h ...
- Strust2 初体验
Struts2的第一个案例 首先我们需要引入架包 entity: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package ...
- 遭遇OutOfMemoryError
这几天,网店系统基础架构进行了一次大的升级,升级之后例行的进行了压力测试,以前几次大的项目发布压力测试都没有任何问题,没想到这次出事故啦,而且是内存泄露? 系统运行环境:硬件:Intel(R) Xeo ...
- Mongdb使用客户端
安装Robomongo图形化管理工具 Robomongo是一个基于 Shell 的跨平台开源 MongoDB 管理工具.嵌入了 JavaScript 引擎和 MongoDB mogo . 只要你会使用 ...
- JavaScript中设置元素class的三种方法小结
第一.element.setAttribute('class','abc'); 第二.element.setAttribute('className', 'abc') : 第三.element.cl ...
- 仓库如何盘点 打印扫描一体PDA盘点机提升库存盘点效率
仓库盘点是对仓储货品的收发结存等活动进行有效控制,保证仓储货品完好无损.帐物相符,确保生产正常进行,规范公司物料的盘点作业.盘点需人工操作,费时费力,PDA盘点机的出现大幅提升了盘点效率,减轻了工作人 ...
- hdu 2102 A计划-bfs
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- MFC 重载退出(窗口顶上最右边的x按钮)
其实可以在*Dlg.cpp中的BEGIN_MESSAGE_MAP中对IDCANCEL和自定义函数进行匹配就可以了. 如: 自定义的退出函数是OnClose(),则在BEGIN_MESSAGE_MAP中 ...