diff --git a/classes/display/HTMLDisplayHandler.php b/classes/display/HTMLDisplayHandler.php index 633f87569..0086d27f3 100644 --- a/classes/display/HTMLDisplayHandler.php +++ b/classes/display/HTMLDisplayHandler.php @@ -523,11 +523,36 @@ class HTMLDisplayHandler } } + // Add tags and hashtags for articles. + if ($page_type === 'article') + { + $tags = array_unique(array_map('utf8_trim', explode(',', $oDocument->get('tags')))); + foreach ($tags as $tag) + { + if ($tag !== '') + { + Context::addOpenGraphData('og:article:tag', escape($tag, false)); + } + } + + if (config('seo.og_extract_hashtags')) + { + preg_match_all('/#([\pL\pN_]+)/u', strip_tags($oDocument->get('content')), $hashtags); + foreach ($hashtags[1] as $hashtag) + { + if (!in_array($hashtag, $tags)) + { + Context::addOpenGraphData('og:article:tag', escape($hashtag, false)); + } + } + } + } + // Add datetime for articles. if ($page_type === 'article' && config('seo.og_use_timestamps')) { - Context::addOpenGraphData('article:published_time', $oDocument->getRegdate('c')); - Context::addOpenGraphData('article:modified_time', $oDocument->getUpdate('c')); + Context::addOpenGraphData('og:article:published_time', $oDocument->getRegdate('c')); + Context::addOpenGraphData('og:article:modified_time', $oDocument->getUpdate('c')); } } diff --git a/common/defaults/config.php b/common/defaults/config.php index b21025f81..9a4c6df73 100644 --- a/common/defaults/config.php +++ b/common/defaults/config.php @@ -103,6 +103,7 @@ return array( 'og_enabled' => false, 'og_extract_description' => false, 'og_extract_images' => false, + 'og_extract_hashtags' => false, 'og_use_timestamps' => false, ), 'mediafilter' => array( diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 2561e1079..34cf308af 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -924,6 +924,7 @@ class adminAdminController extends admin Rhymix\Framework\Config::set('seo.og_enabled', $vars->og_enabled === 'Y'); Rhymix\Framework\Config::set('seo.og_extract_description', $vars->og_extract_description === 'Y'); Rhymix\Framework\Config::set('seo.og_extract_images', $vars->og_extract_images === 'Y'); + Rhymix\Framework\Config::set('seo.og_extract_hashtags', $vars->og_extract_hashtags === 'Y'); Rhymix\Framework\Config::set('seo.og_use_timestamps', $vars->og_use_timestamps === 'Y'); // Save diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 1c700660d..e94be0b2e 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -596,6 +596,7 @@ class adminAdminView extends admin Context::set('og_enabled', Rhymix\Framework\Config::get('seo.og_enabled')); Context::set('og_extract_description', Rhymix\Framework\Config::get('seo.og_extract_description')); Context::set('og_extract_images', Rhymix\Framework\Config::get('seo.og_extract_images')); + Context::set('og_extract_hashtags', Rhymix\Framework\Config::get('seo.og_extract_hashtags')); Context::set('og_use_timestamps', Rhymix\Framework\Config::get('seo.og_use_timestamps')); $this->setTemplateFile('config_seo'); diff --git a/modules/admin/lang/en.php b/modules/admin/lang/en.php index ccbc0b301..90a41de97 100644 --- a/modules/admin/lang/en.php +++ b/modules/admin/lang/en.php @@ -239,6 +239,7 @@ $lang->og_extract_description = 'Extract Description from Document'; $lang->og_extract_description_fallback = 'Use general description only'; $lang->og_extract_images = 'Extract Images from Document'; $lang->og_extract_images_fallback = 'Use site default image only'; +$lang->og_extract_hashtags = 'Extract Hashtags from Document'; $lang->og_use_timestamps = 'Include Timestamps'; $lang->autoinstall = 'EasyInstall'; $lang->last_week = 'Last Week'; diff --git a/modules/admin/lang/ko.php b/modules/admin/lang/ko.php index 333ff122f..3eb49cf90 100644 --- a/modules/admin/lang/ko.php +++ b/modules/admin/lang/ko.php @@ -235,6 +235,7 @@ $lang->og_extract_description = '본문에서 설명 추출'; $lang->og_extract_description_fallback = '모듈 또는 사이트 전체 설명만 사용'; $lang->og_extract_images = '본문에서 이미지 추출'; $lang->og_extract_images_fallback = '사이트 대표 이미지 사용'; +$lang->og_extract_hashtags = '본문에서 해시태그 추출'; $lang->og_use_timestamps = '글 작성/수정 시각 표시'; $lang->autoinstall = '쉬운 설치'; $lang->last_week = '지난주'; diff --git a/modules/admin/tpl/config_seo.html b/modules/admin/tpl/config_seo.html index 5207c6626..1a311a9db 100644 --- a/modules/admin/tpl/config_seo.html +++ b/modules/admin/tpl/config_seo.html @@ -63,6 +63,13 @@ +