mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-26 05:42:13 +09:00
Merge pull request #1016 from kijin/pr/seo-hashtags
OpenGraph 메타 정보에 문서 태그 및 해시태그 추가
This commit is contained in:
commit
2694bba7da
8 changed files with 54 additions and 5 deletions
|
|
@ -523,11 +523,36 @@ class HTMLDisplayHandler
|
|||
}
|
||||
}
|
||||
|
||||
// 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'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 = '지난주';
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -148,9 +148,7 @@ class documentItem extends BaseObject
|
|||
// 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)
|
||||
|
|
@ -774,6 +772,20 @@ class documentItem extends BaseObject
|
|||
}
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue