本文并非介绍如何折腾Mip页面的适配和改造。「喵斯基」进行熊掌号的改造来主要是以提升网站页面的展现和收录为目的,此文主要记录Typecho接入熊掌号的相关步骤。

 title=

熊掌号改造

首先在post.php文件中先找到类似这样的一行代码<?php $this->need('component/header.php'); ?>。在这行代码的后面加入一行代码:

<link rel="canonical" href="<?php $this->permalink() ?>"/>

复制下面代码,将代码放在主题文件 footer.php 里的</body>标签的上面,不用紧贴着放 :

<?php if ($this->is('post')) : ?>
<!--文章页的熊掌号改造-->
<script type="application/ld+json">{
    "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
    "@id": "<?php $this->permalink() ?>",
     "appid": "替换成你的熊掌号ID",
    "title": "<?php $this->title() ?>",
    "images": ["<?php $this->attachments(1)->attachment->url(); ?>"],
    "pubDate": "<?php $this->date('Y-m-d\TH:i:s'); ?>"
}</script>
<?php endif; ?>
上面的代码中<?php $this->attachments(1)->attachment->url(); ?>获取图片调用的是文章的第一个附件,有一个不足的地方就是文章必须要以附件的方式添加图片,如果没有添加会造成空白页面about:blank的问题。

然后,在header.php中添加以下熊掌号ID声明内容:

<!-- 蛋疼的位置 熊掌号ID声明 -->
<script src="//msite.baidu.com/sdk/c.js?appid=熊掌号ID"></script>

这行js代码必须放在header.php文件中,“紧贴</head>标签放置。

数据提交(插件)

自动推送有现成的插件:BaiduSubmit

虽然已经很久没有更新版本,但是由于熊掌号的 API 推送是兼容站长平台的链接提交的,所以插件是支持提交数据的。

 title=

在百度熊掌号的“API提交”里的“新增内容接口”里获取「推送接口」链接,然后在 Typecho 的 BaiduSubmit 插件设置里的「接口调用地址」里使用上面的百度熊掌号「推送接口」链接。

 title=

最后,点击保存即可。

数据提交(纯代码)

熊掌号后台并不支持手动提交历史文章,此方法使用了php的方式进行数据提交,通过获取 Sitemap 的链接来获取全站的链接(因此安装sitemap插件是个必要前提),然后填入推送接口即可实现批量提交历史文章,此程序还会反馈被提交的链接和推送反馈情况。

PHP代码

下方代码以获取sitemap中的链接进行推送目的,请并保存为push.php (随便你们怎么命名),然后上传到网站根目录,访问一次表示推送一次。

<?php
/*配置区域 请修改这里的区域保证正常运行*/
$api = '输入站长平台的推送接口';
$content = file_get_contents('输入站点Sitemap的完整地址');
/*配置区结束 下方为处理区域*/
preg_match_all('/<loc>(.*?)<\/loc>/', $content, $out, PREG_PATTERN_ORDER);
echo "<pre>";
print_r($out[0]);
echo "</pre>";
$urls = $out[0];
$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;
?>

下方代码以获取url.TXT文件中的链接进行推送目的,请并保存为push.php (随便你们怎么命名),然后上传到网站根目录,访问一次表示推送一次。

<?php
    $str = file_get_contents('urls.txt');//将整个文件内容读入到一个字符串中
    $str_encoding = mb_convert_encoding($str, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');//转换字符集(编码)
    $arr = explode("\r\n", $str_encoding);//转换成数组
    //去除值中的空格
    foreach ($arr as &$row) {
        $row = trim($row);
    }
    unset($row);
    //得到后的数组
    echo  "<pre>";
        var_dump($arr);
    echo  "</pre>";
 $api = '输入站长平台的推送接口';
 $ch = curl_init();
 $options =  array(
     CURLOPT_URL => $api,
     CURLOPT_POST => true,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_POSTFIELDS => implode("\n", $arr),
     CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
 );
 curl_setopt_array($ch, $options);
 $result = curl_exec($ch);
 echo $result; 
?>

crontab任务设置

如果觉得手动执行麻烦又恰好你的服务器支持SSH,那么你可以配合 Linux 系统的 crontab 任务工具,定时curl请求 php 文件。

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
00  2  *  *  * root /usr/bin/curl https://www.yourdomain.com/push.php

*表示:每个凌晨2点执行请求一次。

常用推送接口

熊掌号历史文章内容提交:http://data.zz.baidu.com/urls?appid=填写APPID&token=填写准入密钥&type=batch

熊掌号新发文章内容提交:http://data.zz.baidu.com/urls?appid=填写APPID&token=填写准入密钥&type=realtime

注:熊掌号新发的文章和以前的文章需要使用不同接口进行推送(不然会被打屁屁)

百度搜索资源平台(原站长平台)常规数据提交:http://data.zz.baidu.com/urls?site=站点链接&token=准入密钥

注:MIP内容提交本程序暂时无法做到,就等其他人出手搞MIP的推送吧

熊掌号原创文章保护链接提交:http://data.zz.baidu.com/urls?appid=填写APPID&token=填写准入密钥&type=realtime,original

注:这个就比较233了,文章发布之后必须五分钟之内使用这个提交过去,或者是直接飞奔去熊掌号后台进行手动提交,对了有一点,如果你站点并不是全都是原创文章的话,原创保护链接提交对于这个程序来说是不适用的 还是推荐去熊掌号后台提交


相关推荐

文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/154.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。