神马站长平台是个很佛系的平台,比如你几周前提交了sitemap,几周后发现sitemap上只是多了点尘土。然而半年后偶尔站点又确实会有从神马搜索过来的屈指可数的访客,于是你又打开了神马站长平台,找回失散了半年的密码,满怀期待的点击登陆,然后失望的发现sitemap上的尘土更厚了一点。
但来都来了,还是做点什么吧,神马也支持类似百度的推送方式,只要整理好站点的页面地址,然后一股脑利用php提交就行,之所以用php,是因为博主也不会啥其他的方式。
数据提交页面,注意接口调用地址后面的一排数据,这里有属于你自己的专属代码。可能是博主没有复制完整下方代码的原因,最后是手动将该代码替换进官方提供的代码的。
这里吐槽一下官网的设置,点击展开php推送代码后,全选准备复制,结果鼠标刚一抬起,这个展开的窗口又嗖一下缩了回去,这个设定是认真的吗?
直接右键利用浏览器的审查元素功能,获取到了“pre”标签内的代码,粘贴如下:
$urls = array(
'http://www.example.com/1.html',
'http://www.example.com/2.html',
);
$api = '填写您自己的接口调用地址,保留两侧单引号';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo $result;
完整代码如下,在主题根目录新一个名为“page-smpush.php”的文件,将以下代码复制进文件内,保存后回到管理页,选择管理-独立页面-新增-选择自定义模板为“神马推送页”,发布后在浏览器内访问我们新增的页面,就可以看到推送结果了:
<?php
/**
* 神马推送页
*
* @package custom
*/
$db = Typecho_Db::get();
$options = Typecho_Widget::widget('Widget_Options');
$limit = 500;
$articles = $db->fetchAll(
$db->select()->from('table.contents')
->where('table.contents.status = ?', 'publish')
->where('table.contents.created < ?', $options->gmtTime)
->where('table.contents.type = ?', 'post')
->limit($limit)
->order('table.contents.created', Typecho_Db::SORT_DESC)
);
$push_urls=[];
foreach ($articles as $article) {
$type = $article['type'];
$routeExists = (NULL != Typecho_Router::get($type));
$article['pathinfo'] = $routeExists ? Typecho_Router::url($type, $article) : '#';
$article['permalink'] = Typecho_Common::url($article['pathinfo'], $options->index);
array_push($push_urls,$article['permalink']);
}
$urls = $push_urls;
$api = '填写您自己的接口调用地址,保留两侧单引号';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo $result;
?>
推送成功的话页面会显示如下的信息,至于有没有什么效果,那只能但行好事,莫问前程了。
{
"returnCode" : 200, //接收成功,但需要进一步校验提交的内容是否正确
"errorMsg" : ""
}