HadSky是什么?

HadSky是一款php轻论坛系统。

那么什么是OG协议?

OG协议是Open Graph Protocol的缩写,中文称为开放内容协议。它是一种由Facebook所定义和推广的元数据协议,用于在社交媒体上显示网页的预览内容。

OG协议允许网站管理员控制他们网站页面在Facebook、Twitter、LinkedIn等社交媒体上的展示形式,可以设置网页的标题、描述、图像、URL等元素。通过使用OG协议,网页可以成为一个“富媒体对象”,被其他社交媒体网站引用,并在分享时呈现吸引人的预览内容。OG协议的目的是提高网站在社交媒体上的曝光率和流量,以及方便搜索引擎进行分类索引,提高搜索结果的点击率。同时,OG协议也有助于将网络上的内容进行结构化、富媒体化,方便第三方调用显示。

目前,许多搜索引擎和第三方服务也支持OG协议,如Google、Bing、IMDb等。

那么正文开始

首先在几年之前小编我有幸接触到了HadSky,奈何HadSky的开发文档不怎么完善,于是我也是花了很多时间研究了一番,也是实现了很多HadSky本身没有的功能,但是我并没有一一记录下来,于是当我更新HadSky系统时,新版本一下就覆盖了整个HadSky系统,导致我当时也是瞎几把找,找到了相关代码,却又忘了备份,导致时间一久就忘记了,这就是一个非常头疼的问题。于是我打算一一在这里记录下来。方便我日后前来查看~

思路

如今HadSky已经进军V8了,由于小编修改了HadSky系统中的大量代码所以一直以来不方便更新V8,这里就只能以V7亦作示范了。

1、首先打开根目录下phpscript文件夹中的“read.php”文件,在“read.php”中最底部添加以下代码

//获取文章图片
$_G['TEMP']['METAHTMLDY'] = '';
    $imgs = getHtmlImages($readdata['content'], 1);  
    $count = count($imgs);  
    if ($count) {  
        // 遍历图片数组,删除alt属性包含"emotion"的图片  
        $nonEmotionImgs = array();  
        foreach ($imgs as $img) {  
            if (strpos($img['alt'], 'emotion') === false) {  
                $nonEmotionImgs[] = $img;  
            }  
        }  
          
        $count = count($nonEmotionImgs); // 重新获取不含"emotion"图片的数量  
        if ($count) {  
            for ($i = 0; $i < $count; $i++) {
                $headerAddress = "http://localhost/";
                if (strpos($nonEmotionImgs[$i]['src'], $headerAddress) !== 0) { 
                $readimgsurl = $headerAddress.$nonEmotionImgs[$i]['src'];
                } 
            }  
        }  else { 
            $readimgsurl = "http://localhost/template/puyuetian_changable/img/error-img.png";
        }
    }  else { 
            $readimgsurl = "http://localhost/template/puyuetian_changable/img/error-img.png";
        }
//获取标题和页数
$readtitle =  $title . (Cnum($_G['GET']['PAGE'], 1, true, 1) != 1 ? '-第' . Cnum($_G['GET']['PAGE'], 1, true, 1) . '页' : '');
//OG标签开始
$_G['TEMP']['METAHTMLDY'] .= '
        <meta property="og:type" content="bbs" />
        <meta property="og:image" content="' . $readimgsurl . '" />
        <meta property="og:release_date" content="' . date('Y-m-d',$readdata['posttime']) . '" />
        <meta property="og:title" content="' . $readtitle . '" />
        <meta property="og:description" content="' . $_G['SET']['WEBDESCRIPTION'] . '" />
        <meta property="og:author" content="' . $readuserdata['nickname'] . '" />
        <meta property="og:bbs:replay" content="' . Cnum($readdata['fs']-1) . '" />';

这里的获取文章图片是我根据炫酷百变PC模板中的代码修改而来,由于我也不知道HadSky到底有没有这个获取文章的第一张图片的函数或者代码,所以我就直接从炫酷百变PC模板的列表显示帖子图片的代码照搬过来了,我也是稍微改进了一下这部分代码使其获取文章中的第一张图片并排除表情图片没有图片则返回默认图片。

其次,这里的OG属性我是以360的智能摘要中的论坛帖子为基准的

2、最后一步来了,打开HadSky的默认模板目录(“../template/default”)找到“main.hst”文件

<head>
{$_G['TEMP']['METAHTMLDY']} 
</head>

将 {$_G['TEMP']['METAHTMLDY']} 添加到 <head> 和 </head> 之间,这样就大功告成了!