百度熊掌号是内容和服务提供者入驻百度生态的认证账号,致力于帮助内容和服务提供者便捷、高效地连接全网用户,并充分利用百度生态开放的优势,获取流量、沉淀用户、塑造品牌,实现自身价值的快速增长。
这里我们只是使用了他的搜索资源平台的入口,提供我们网站资源。具体还要数据开放平台以及类似公众号的百家号平台等其他平台,可以前往熊掌号官网(http://xiongzhang.baidu.com/official/home/main)进一步了解。这里只说如何改造网站接入熊掌号。
首先是开通工作,这个不做详细说明,依据平台的要求提示操作即可,这里我们默认已经通过审核
直接进入页面改造步骤dedecms接入熊掌号API提交功能的改造方法
由于本好品网是H5的相适式网站,所以按照H5的改造步骤完成:
在所有页面的头部<head>里面添加代码:
<script src="//msite.baidu.com/sdk/c.js?appid=这里是你的熊掌ID"></script>
然后是给H5页面添加关注功能(强烈推荐,但是似乎不是强制的) ,至多选择两种方式
前面的这个几个代码改造属于粉丝关注改造不是核心的部分,后面这里则是核心的部分之一,改造页面使之符合熊掌号的规范:
4. 添加canonical标签
在H5页面<head>部分添加:
样式:
<link rel="canonical" href="这里是H5对应的PC页面地址"/>
要求href的内容为MIP页或H5页对应的PC页地址;如果没有PC页,则填写当前页面地址。
然后是添加JSON_LD数据,示例:
<script type="application/ld+json">
{
"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
"@id": "{dede:global.cfg_basehost/}{dede:field.arcurl/}",
"appid": "{dede:global.cfg_xzh_id/}",
"title": "{dede:field.title/}",
"images": [
"{dede:global.cfg_basehost/}{dede:field.litpic/}"
],
"description": "{dede:field.description/}",
"pubDate": "{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}T{dede:field.pubdate function="MyDate('H:i:s',@me)"/}"
}
</script>
说明:
@context: 必选字段, 请保留 “https://ziyuan.baidu.com/contexts/cambrian.jsonld”,若需要校验数据的schema,则可替换为schema地址
@id: 必选字段, 当前网页的url
appid: 必选字段, 熊掌号ID
title: 必选字段, 标题,建议长度:20个字符以内
images: 可选字段, 搜索结果结构化信息展示,仅允许提供0张,1张图或3张图
description: 可选字段, 内容摘要:120个字符以内
pubDate: 必选字段, 内容发布时间,格式是(2017-06-15T08:00:01)
显然上面这些内容是要放置在内容页也就是详情页内,对于DEDECMS可以将上面的实例改造如下:
<script type="application/ld+json">
{
"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
"@id": "{dede:global.cfg_basehost/}{dede:field.arcurl/}",
"appid": "{dede:global.cfg_xzh_id/}",
"title": "{dede:field.title/}",
"images": [
"{dede:global.cfg_basehost/}{dede:field.litpic/}"
],
"description": "{dede:field.description/}",
"pubDate": "{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}T{dede:field.pubdate function="MyDate('H:i:s',@me)"/}"
}
</script>
这里说明一下,
{dede:global.cfg_basehost/}{dede:field.arcurl/}
获取的是当前文章页的URL,而
{dede:global.cfg_xzh_id/}
这里则是百度熊掌号的ID,这里配置为一个全局变量方便后续的数据提交部分的修改。images字段,则是使用的了dedecms文章缩略图,默认每篇文章带有一张缩略图,这里只引用一张也是符合代码要求的。摘要和发布时间不做说明。
以上的工作完成之后,即可通过在线校验工具
检验一下页面是否符合规范:
最后,我们要完成我们核心的工作部分,数据的提交。这里数据的提交分为API提交手动提交,手动提交,顾名思义就是将新页面URL在这里提交,比较的费事。咱们做的是每当发布完一篇文章之后,自动提交这篇页面的URL。这里参考之前的文章《dedecms后台控制内容是否需要主动提交到百度》
5. 进入数据库选择数据表#@_archives,在表结构最后添加一个新的字段xzh,这个字段类型为tinyint,设默认值为1,表示推送数据,当值为0的时候不推送数据,这么做的目的是为了方便后台控制是否推送。接着模仿前面提及文章的部分修改article_add.php,article_edit.php,archives_add.php和archives_edit.php这4个文件,在相应的地方添加xzh和$xzh。以及整合URL提交部分,将之前的URL提交和新的熊掌号URL提交整合在一起,部分代码:
/* article_add.php*/
...
if($push==1 && $xzh==1) {
{
$urls[]='https://www.ainiu.net.'/'.$artUrl;
$api = 'http://data.zz.baidu.com/urls?site='.$cfg_baiduhost.'&token='.$cfg_badutoken;
$api_xzh = 'http://data.zz.baidu.com/urls?appid='.$cfg_xzh_id.'&token='.$cfg_xzh_token.'&type=realtime';
/* 百度站长平台链接提交 */
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("
", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
/* 熊掌号数据提交 */
$ch_xzh = curl_init();
$options_xzh = array(
CURLOPT_URL => $api_xzh,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("
", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch_xzh, $options_xzh);
$result_xzh = curl_exec($ch_xzh);
}
ClearMyAddon($arcID, $title);
//返回成功信息
$msg = " 请选择你的后续操作:
<a href='article_add.php?cid=$typeid'><u>继续发布文章</u></a>
<a href='$artUrl' target='_blank'><u>查看文章</u></a>
<a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>
<a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>
<a href=''><u>百度提交返回:".$result."熊掌号提交返回:".$result_xzh."</u></a>
$backurl";
}
else {
ClearMyAddon($arcID, $title);
//返回成功信息
$msg = " 请选择你的后续操作:
<a href='article_add.php?cid=$typeid'><u>继续发布文章</u></a>
<a href='$artUrl' target='_blank'><u>查看文章</u></a>
<a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>
<a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>
$backurl";
}
$msg = "<div style="line-height:36px;height:36px">{$msg}</div>".GetUpdateTest();
$wintitle = "成功发布文章!";
$wecome_info = "文章管理::发布文章";
$win = new OxWindow();
$win->AddTitle("成功发布文章:");
$win->AddMsgItem($msg);
$winform = $win->GetWindow("hand"," ",false);
$win->Display();
}
?>
具体修改,请参考上传的附件文件
6. 前面提到的全局变量别忘记添加 cfg_xzh_id 表示熊掌号ID,cfg_xzh_token表示熊掌号的token
7.修改后台管理模板文件,在article_add.htm和artchives_add.htm添加如下:
<!--主动推送数据 -->
<td width="100">主动推送到百度:</td>
<td><input type='radio' name='push' value="0" /> 不推送
<input type='radio' name='push' value="1" checked='1'/> 推送</td>
<!--主动推送数据 -->
<!-- 上面是以前添加数据主动提交的控件开关 -->
<!-- 下面是新增加的针对熊掌号数据提交的控件开关 -->
<!--熊掌号推送数据 -->
<td width="100">主动推送到熊掌号:</td>
<td><input type='radio' name='xzh' value="0" /> 不推送
<input type='radio' name='xzh' value="1" checked='1'/> 推送</td>
<!--熊掌号推送数据 -->
在article_edit.htm和archives_edit.htm添加如下:
<!--主动推送数据 -->
<td width="100">主动推送到百度:</td>
<td><input type='radio' name='push' value="0" <?php if($arcRow['push']=='0') echo " checked='1' "?>/> 不推送
<input type='radio' name='push' value="1" <?php if($arcRow['push']=='1') echo " checked='1' "?>/> 推送</td>
<!--主动推送数据 -->
<!-- 上面是以前添加数据主动提交的控件开关 -->
<!-- 下面是新增加的针对熊掌号数据提交的控件开关 -->
<!--熊掌号推送数据 -->
<td width="100">主动推送到熊掌号:</td>
<td><input type='radio' name='xzh' value="0" <?php if($arcRow['xzh']=='0') echo " checked='1' "?>/> 不推送
<input type='radio' name='xzh' value="1" <?php if($arcRow['xzh']=='1') echo " checked='1' "?>/> 推送</td>
<!--熊掌号推送数据 -->
当前这文章发布出去之后后台显示如下:
说明:后台目前只能设置为同时推送和同时不推送,不然会出现问题。
发表评论