Facebook scraper "OpenGraph" support; modules will need to set the required fields (type, image, url) as well as any desired optional or type specific fields. We will set the title during pagebuild.

This commit is contained in:
redmatrix 2016-03-07 15:03:53 -08:00
parent 68d7ab6b55
commit d5db25808a
10 changed files with 58 additions and 8 deletions

43
Zotlabs/Web/OpenGraph.php Normal file
View file

@ -0,0 +1,43 @@
<?php
namespace Zotlabs\Web;
class OpenGraph {
private $vars = null;
function __construct() {
$this->vars = array();
}
function set($property,$value) {
$this->vars[$property] = $value;
}
function check_required() {
if(
($this->vars)
&& array_key_exists('og:title',$this->vars)
&& array_key_exists('og:type', $this->vars)
&& array_key_exists('og:image',$this->vars)
&& array_key_exists('og:url', $this->vars)
)
return true;
return false;
}
function get() {
if($this->check_required()) {
$o = "\r\n";
foreach($this->vars as $k => $v) {
$o .= '<meta property="' . $k . '" content="' . urlencode($v) . '" />' . "\r\n" ;
}
return $o;
}
return '';
}
}

View file

@ -753,6 +753,7 @@ class App {
private $baseurl;
private $OG;
/**
* App constructor.
@ -767,6 +768,7 @@ class App {
$this->query_string = '';
startup();
set_include_path(
@ -871,6 +873,9 @@ class App {
spl_autoload_register('ZotlabsAutoloader::loader');
$this->OG = new Zotlabs\Web\OpenGraph();
}
function get_baseurl($ssl = false) {
@ -1019,6 +1024,7 @@ class App {
if(! x($this->page,'title'))
$this->page['title'] = $this->config['system']['sitename'];
$this->OG->set('og:title',$this->page['title']);
/* put the head template at the beginning of page['htmlhead']
* since the code added by the modules frequently depends on it
@ -1031,6 +1037,7 @@ class App {
'$baseurl' => $this->get_baseurl(),
'$local_channel' => local_channel(),
'$generator' => Zotlabs\Project\System::get_platform_name() . ((Zotlabs\Project\System::get_project_version()) ? ' ' . Zotlabs\Project\System::get_project_version() : ''),
'$metas' => $this->OG->get(),
'$update_interval' => $interval,
'$icon' => head_get_icon(),
'$head_css' => head_get_css(),

View file

@ -1 +1 @@
2016-03-06.1328H
2016-03-07.1329H

View file

@ -1,5 +1,5 @@
<!DOCTYPE html >
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title']; ?></title>
<script>var baseurl="<?php echo $a->get_baseurl(); ?>";</script>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html >
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<script>var baseurl="<?php echo $a->get_baseurl() ?>";</script>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<script>var baseurl="<?php echo $a->get_baseurl() ?>";</script>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html >
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<script>var baseurl="<?php echo $a->get_baseurl() ?>";</script>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html >
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<script>var baseurl="<?php echo $a->get_baseurl() ?>";</script>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">

View file

@ -2,7 +2,7 @@
<base href="{{$baseurl}}/" />
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable={{$user_scalable}}" />
<meta name="generator" content="{{$generator}}" />
{{$metas}}
<!--[if IE]>
<script src="{{$baseurl}}/library/html5.js"></script>
<![endif]-->