Skip to content

Commit

Permalink
Merge pull request #1016 from kijin/pr/seo-hashtags
Browse files Browse the repository at this point in the history
OpenGraph 메타 정보에 문서 태그 및 해시태그 추가
  • Loading branch information
kijin committed Mar 15, 2018
2 parents 7eed765 + fb73a0d commit 2694bba
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 5 deletions.
29 changes: 27 additions & 2 deletions classes/display/HTMLDisplayHandler.php
Expand Up @@ -523,11 +523,36 @@ function _addOpenGraphMetadata()
}
}

// Add tags and hashtags for articles.
if ($page_type === 'article')
{
$tags = $oDocument->getTags();
foreach ($tags as $tag)
{
if ($tag !== '')
{
Context::addOpenGraphData('og:article:tag', $tag, false);
}
}

if (config('seo.og_extract_hashtags'))
{
$hashtags = $oDocument->getHashtags();
foreach ($hashtags 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'));
}
}

Expand Down
1 change: 1 addition & 0 deletions common/defaults/config.php
Expand Up @@ -103,6 +103,7 @@
'og_enabled' => false,
'og_extract_description' => false,
'og_extract_images' => false,
'og_extract_hashtags' => false,
'og_use_timestamps' => false,
),
'mediafilter' => array(
Expand Down
1 change: 1 addition & 0 deletions modules/admin/admin.admin.controller.php
Expand Up @@ -924,6 +924,7 @@ function procAdminUpdateSEO()
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
Expand Down
1 change: 1 addition & 0 deletions modules/admin/admin.admin.view.php
Expand Up @@ -596,6 +596,7 @@ function dispAdminConfigSEO()
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');
Expand Down
1 change: 1 addition & 0 deletions modules/admin/lang/en.php
Expand Up @@ -239,6 +239,7 @@
$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';
Expand Down
1 change: 1 addition & 0 deletions modules/admin/lang/ko.php
Expand Up @@ -235,6 +235,7 @@
$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 = '지난주';
Expand Down
7 changes: 7 additions & 0 deletions modules/admin/tpl/config_seo.html
Expand Up @@ -63,6 +63,13 @@
<label for="og_extract_images_n" class="x_inline"><input type="radio" name="og_extract_images" id="og_extract_images_n" value="N" checked="checked"|cond="!$og_extract_images" /> {$lang->cmd_no} ({$lang->og_extract_images_fallback})</label>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->og_extract_hashtags}</label>
<div class="x_controls">
<label for="og_extract_hashtags_y" class="x_inline"><input type="radio" name="og_extract_hashtags" id="og_extract_hashtags_y" value="Y" checked="checked"|cond="$og_extract_hashtags" /> {$lang->cmd_yes}</label>
<label for="og_extract_hashtags_n" class="x_inline"><input type="radio" name="og_extract_hashtags" id="og_extract_hashtags_n" value="N" checked="checked"|cond="!$og_extract_hashtags" /> {$lang->cmd_no}</label>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->og_use_timestamps}</label>
<div class="x_controls">
Expand Down
18 changes: 15 additions & 3 deletions modules/document/document.item.php
Expand Up @@ -148,9 +148,7 @@ function setAttribute($attribute, $load_extra_vars = true)
// Tags
if($this->get('tags'))
{
$tag_list = explode(',', $this->get('tags'));
$tag_list = array_map('utf8_trim', $tag_list);
$this->add('tag_list', $tag_list);
$this->add('tag_list', $this->getTags());
}

if($load_extra_vars)
Expand Down Expand Up @@ -774,6 +772,20 @@ function getTrackbackUrl()
}
}

public function getTags()
{
$tag_list = array_map(function($str) { return escape(utf8_trim($str), false); }, explode(',', $this->get('tags')));
$tag_list = array_filter($tag_list, function($str) { return $str !== ''; });
return array_unique($tag_list);
}

public function getHashtags()
{
preg_match_all('/(?<!&)#([\pL\pN_]+)/u', strip_tags($this->get('content')), $hashtags);
$hashtags[1] = array_map(function($str) { return escape($str, false); }, $hashtags[1]);
return array_unique($hashtags[1]);
}

/**
* Update readed count
* @return void
Expand Down

0 comments on commit 2694bba

Please sign in to comment.