欢迎来到元素模板www.ys720.com,本站提供专业的织梦模板网站模板ASPCMS模板网站修改/网站仿站
当前位置:主页 > 程序教程 > DEDECMS教程 >
DEDECMS教程

织梦dedecms接入熊掌号API提交功能的改造方法

(元素模板) / 2020-10-11 19:17

看到文章标题你也许会懵逼,其实就是说把网站的数据也就是URL提交到百度熊掌号这么一个系统里面,其实熊掌号是一个算比较复杂的系统,通过它的描述:
百度熊掌号是内容和服务提供者入驻百度生态的认证账号,致力于帮助内容和服务提供者便捷、高效地连接全网用户,并充分利用百度生态开放的优势,获取流量、沉淀用户、塑造品牌,实现自身价值的快速增长。
可以看出来它的复杂性,这里我们只是使用了他的搜索资源平台的入口,提供我们网站资源。具体还要数据开放平台以及类似公众号的百家号平台等其他平台,可以前往熊掌号官网(http://xiongzhang.baidu.com/official/home/main)进一步了解。这里只说如何改造网站接入熊掌号。
首先是开通工作,这个不做详细说明,依据平台的要求提示操作即可,这里我们默认已经通过审核
直接进入页面改造步骤
dedecms接入熊掌号API提交功能的改造方法
由于本网站是H5的相适式网站,所以按照H5的改造步骤完成:
在所有页面的头部<head>里面添加代码:

<script src="//msite.baidu.com/sdk/c.js?appid=这里是你的熊掌ID"></script>

然后是给H5页面添加关注功能(强烈推荐,但是似乎不是强制的) ,至多选择两种方式           
dedecms接入熊掌号API提交功能的改造方法
前面的这个几个代码改造属于粉丝关注改造不是核心的部分,后面这里则是核心的部分之一,改造页面使之符合熊掌号的规范:
4. 添加canonical标签
在H5页面<head>部分添加:
<link rel="canonical" href="这里是H5对应的PC页面地址"/>
要求href的内容为MIP页或H5页对应的PC页地址;如果没有PC页,则填写当前页面地址。
然后是添加JSON_LD数据,示例:

<script src="//msite.baidu.com/sdk/c.js?appid=这里是你的熊掌ID"></script>

  {<script type="application/ld+json">
            "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
            "@id": "这个是当前页面的URL",
            "appid": "这里是熊掌号ID",
            "title": "当前页面的标题",
            "images": [
                "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png",
                "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png",
                "https://m.baidu.com/static/index/plus/plus_logo.png"
                ],
            "description": "当前页面的描述",
            "pubDate": "页面发布时间"
        }
    </script>

说明:

@context:   必选字段,   请保留 &ldquo;https://ziyuan.baidu.com/contexts/cambrian.jsonld&rdquo;,若需要校验数据的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": "https://chaihongjun.me{dede:field.arcurl/}",
            "appid": "{dede:global.cfg_xzh_id/}",
            "title": "{dede:field.title/}",
            "images": [
                "https://chaihongjun.me{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>

这里说明一下,

1
https://chaihongjun.me{dede:field.arcurl/}

获取的是当前文章页的URL,而

1
{dede:global.cfg_xzh_id/}

这里则是百度熊掌号的ID,这里配置为一个全局变量方便后续的数据提交部分的修改。images字段,则是使用的了dedecms文章缩略图,默认每篇文章带有一张缩略图,这里只引用一张也是符合代码要求的。摘要和发布时间不做说明。

以上的工作完成之后,即可通过在线校验工具

dedecms接入熊掌号API提交功能的改造方法

检验一下页面是否符合规范:

dedecms接入熊掌号API提交功能的改造方法

最后,我们要完成我们核心的工作部分,数据的提交。这里数据的提交分为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://'.$cfg_baiduhost.'/'.$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>    &nbsp;&nbsp;    <a href='$artUrl' target='_blank'><u>查看文章</u></a>    &nbsp;&nbsp;    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>    &nbsp;&nbsp;    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>    <a href=''><u>百度提交返回:".$result."熊掌号提交返回:".$result_xzh."</u></a>   &nbsp;&nbsp; $backurl";}else {    ClearMyAddon($arcID, $title);    //返回成功信息    $msg = "      请选择你的后续操作:    <a href='article_add.php?cid=$typeid'><u>继续发布文章</u></a>    &nbsp;&nbsp;    <a href='$artUrl' target='_blank'><u>查看文章</u></a>    &nbsp;&nbsp;    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>    &nbsp;&nbsp;    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>    &nbsp;&nbsp;$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","&nbsp;",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>

<!--熊掌号推送数据 -->

当前这文章发布出去之后后台显示如下:

dedecms接入熊掌号API提交功能的改造方法
PS:后台目前只能设置为同时推送和同时不推送,不然会出现问题



Copyright @ 2013-2021 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com