diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php
index 26aa4a23..472da937 100644
--- a/app/Http/Controllers/AdminController.php
+++ b/app/Http/Controllers/AdminController.php
@@ -237,7 +237,14 @@ class AdminController extends Controller
})
->handle();
- return view('admin.options')->with('forms', compact('general', 'resources', 'announ'));
+ $meta = Option::form('meta', OptionForm::AUTO_DETECT, function ($form) {
+ $form->text('meta_keywords')->hint(OptionForm::AUTO_DETECT);
+ $form->text('meta_description')->hint(OptionForm::AUTO_DETECT);
+ $form->textarea('meta_extras')->rows(3);
+ })->handle();
+
+ return view('admin.options')
+ ->with('forms', compact('general', 'resources', 'announ', 'meta'));
}
public function getUserData(Request $request)
diff --git a/resources/lang/en/options.yml b/resources/lang/en/options.yml
index 43e94d97..c7b7546a 100644
--- a/resources/lang/en/options.yml
+++ b/resources/lang/en/options.yml
@@ -150,3 +150,14 @@ resources:
The CDN URL you give must refer to a mirror of /public directory,
all the files of that directory will be loaded as CDN.
How to verify? Verify if {Your CDN URL}/app/index.js can be accessed.
+
+meta:
+ title: SEO tags
+ meta_keywords:
+ title: Keywords
+ hint: Split with commas.
+ meta_description:
+ title: Description
+ hint: Description defined in "general options" will be used if you left it empty.
+ meta_extras:
+ title: Other Custom Tags
diff --git a/resources/lang/zh_CN/options.yml b/resources/lang/zh_CN/options.yml
index 3065824a..12f960d0 100644
--- a/resources/lang/zh_CN/options.yml
+++ b/resources/lang/zh_CN/options.yml
@@ -149,3 +149,14 @@ resources:
description: |
填写的 CDN 地址必须是 /public 目录的镜像,此目录下的所有文件都将会从 CDN 加载。
测试方法:检查 {填写的地址}/app/index.js 是否能够访问。
+
+meta:
+ title: SEO 标签
+ meta_keywords:
+ title: 关键词
+ hint: 使用半角逗号分隔
+ meta_description:
+ title: 描述
+ hint: 留空以使用 站点配置 中的站点描述
+ meta_extras:
+ title: 其它自定义 标签
diff --git a/resources/views/admin/options.blade.php b/resources/views/admin/options.blade.php
index 1d75f54d..f1921b67 100644
--- a/resources/views/admin/options.blade.php
+++ b/resources/views/admin/options.blade.php
@@ -25,6 +25,8 @@
{!! $forms['announ']->render() !!}
{!! $forms['resources']->render() !!}
+
+ {!! $forms['meta']->render() !!}
diff --git a/resources/views/auth/master.blade.php b/resources/views/auth/master.blade.php
index 78b8d869..2d8916cc 100644
--- a/resources/views/auth/master.blade.php
+++ b/resources/views/auth/master.blade.php
@@ -7,6 +7,7 @@
{!! bs_favicon() !!}
+ @include('common.seo-meta-tags')
@include('common.dependencies.style')
diff --git a/resources/views/common/seo-meta-tags.blade.php b/resources/views/common/seo-meta-tags.blade.php
new file mode 100644
index 00000000..3143bee8
--- /dev/null
+++ b/resources/views/common/seo-meta-tags.blade.php
@@ -0,0 +1,3 @@
+
+
+{!! option('meta_extras') !!}
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php
index e315b769..2b9a2038 100644
--- a/resources/views/index.blade.php
+++ b/resources/views/index.blade.php
@@ -8,6 +8,7 @@
+ @include('common.seo-meta-tags')
@include('common.dependencies.style', ['module' => 'home'])
diff --git a/resources/views/skinlib/master.blade.php b/resources/views/skinlib/master.blade.php
index b8023416..34f2d90f 100644
--- a/resources/views/skinlib/master.blade.php
+++ b/resources/views/skinlib/master.blade.php
@@ -8,6 +8,7 @@
+ @include('common.seo-meta-tags')
@include('common.dependencies.style')
diff --git a/tests/AdminControllerTest.php b/tests/AdminControllerTest.php
index 13a0e339..9004411d 100644
--- a/tests/AdminControllerTest.php
+++ b/tests/AdminControllerTest.php
@@ -149,6 +149,16 @@ class AdminControllerTest extends BrowserKitTestCase
->type('', 'cdn_address')
->press('submit_resources');
$this->visit('/')->dontSee('url/app/index.js');
+
+ $this->visit('/admin/options')
+ ->type('kw', 'meta_keywords')
+ ->type('desc', 'meta_description')
+ ->type('', 'meta_extras')
+ ->press('submit_meta');
+ $this->visit('/')
+ ->see('')
+ ->see('')
+ ->see('');
}
public function testUsers()