share: add support for og:image, etc. metadata for shared articles
This commit is contained in:
parent
636164301f
commit
f5302247c6
1 changed files with 39 additions and 3 deletions
42
classes/article.php
Normal file → Executable file
42
classes/article.php
Normal file → Executable file
|
@ -629,16 +629,52 @@ class Article extends Handler_Protected {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$enclosures = self::get_article_enclosures($line["id"]);
|
||||||
|
|
||||||
if ($zoom_mode) {
|
if ($zoom_mode) {
|
||||||
header("Content-Type: text/html");
|
header("Content-Type: text/html");
|
||||||
$rv['content'] .= "<html><head>
|
$rv['content'] .= "<!DOCTYPE html>
|
||||||
|
<html><head>
|
||||||
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
|
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
|
||||||
<title>".$line["title"]."</title>".
|
<title>".$line["title"]."</title>".
|
||||||
stylesheet_tag("css/default.css")."
|
stylesheet_tag("css/default.css")."
|
||||||
<link rel=\"shortcut icon\" type=\"image/png\" href=\"images/favicon.png\">
|
<link rel=\"shortcut icon\" type=\"image/png\" href=\"images/favicon.png\">
|
||||||
<link rel=\"icon\" type=\"image/png\" sizes=\"72x72\" href=\"images/favicon-72px.png\">
|
<link rel=\"icon\" type=\"image/png\" sizes=\"72x72\" href=\"images/favicon-72px.png\">";
|
||||||
|
|
||||||
</head><body class=\"claro ttrss_utility ttrss_zoom\">";
|
$rv['content'] .= "<meta property=\"og:title\" content=\"".htmlspecialchars($line["title"])."\"/>\n";
|
||||||
|
$rv['content'] .= "<meta property=\"og:site_name\" content=\"".htmlspecialchars($line["feed_title"])."\"/>\n";
|
||||||
|
$rv['content'] .= "<meta property=\"og:description\" content=\"".
|
||||||
|
htmlspecialchars(truncate_string(strip_tags($line["content"]), 500, "..."))."\"/>\n";
|
||||||
|
|
||||||
|
$rv['content'] .= "</head>";
|
||||||
|
|
||||||
|
$og_image = false;
|
||||||
|
|
||||||
|
foreach ($enclosures as $enc) {
|
||||||
|
if (strpos($enc["content_type"], "image/") !== FALSE) {
|
||||||
|
$og_image = $enc["content_url"];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$og_image) {
|
||||||
|
$tmpdoc = new DOMDocument();
|
||||||
|
|
||||||
|
if (@$tmpdoc->loadHTML(mb_substr($line["content"], 0, 131070))) {
|
||||||
|
$tmpxpath = new DOMXPath($tmpdoc);
|
||||||
|
$first_img = $tmpxpath->query("//img")->item(0);
|
||||||
|
|
||||||
|
if ($first_img) {
|
||||||
|
$og_image = $first_img->getAttribute("src");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($og_image) {
|
||||||
|
$rv['content'] .= "<meta property=\"og:image\" content=\"" . htmlspecialchars($og_image) . "\"/>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$rv['content'] .= "<body class=\"claro ttrss_utility ttrss_zoom\">";
|
||||||
}
|
}
|
||||||
|
|
||||||
$rv['content'] .= "<div class=\"postReply\" id=\"POST-$id\">";
|
$rv['content'] .= "<div class=\"postReply\" id=\"POST-$id\">";
|
||||||
|
|
Loading…
Reference in a new issue