From 57fedd69d42c0da16604931d08877366cf4d4c94 Mon Sep 17 00:00:00 2001 From: kroutony Date: Sat, 22 Feb 2020 21:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E5=BE=97robots.txt=E7=94=B1=E7=A8=8B?= =?UTF-8?q?=E5=BC=8F=E7=94=A2=E7=94=9F=EF=BC=8C=E5=8A=A0=E5=85=A5=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2html=20meta=EF=BC=8C=E5=8A=A0=E5=85=A5=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E7=94=A2=E7=94=9Fhtml=20title=E7=9A=84=E6=A9=9F?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/PageController.php | 35 +++++++++++++++++++ app/Http/Middleware/SetSiteStates.php | 4 +++ app/Presenters/DocumentTitlePresenter.php | 19 ++++++++++ app/Presenters/SiteNamePresenter.php | 32 +++++++++++++++++ app/Providers/SingletonServiceProvider.php | 5 ++- resources/views/admin/index.blade.php | 3 -- resources/views/admin/layouts/app.blade.php | 1 + .../views/admin/menu/options/layout.blade.php | 5 +++ .../components/head/metaNoindex.blade.php | 2 ++ .../views/components/head/metaTags.blade.php | 3 ++ .../views/components/head/title.blade.php | 2 ++ .../components/robotsTxt/default.blade.php | 2 ++ .../robotsTxt/disallowAll.blade.php | 2 +- resources/views/layouts/app.blade.php | 6 +++- routes/web.php | 2 ++ 15 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 app/Http/Controllers/PageController.php create mode 100644 app/Presenters/DocumentTitlePresenter.php create mode 100644 app/Presenters/SiteNamePresenter.php create mode 100644 resources/views/components/head/metaNoindex.blade.php create mode 100644 resources/views/components/head/metaTags.blade.php create mode 100644 resources/views/components/head/title.blade.php create mode 100644 resources/views/components/robotsTxt/default.blade.php rename public/robots.txt => resources/views/components/robotsTxt/disallowAll.blade.php (53%) diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php new file mode 100644 index 0000000..931454a --- /dev/null +++ b/app/Http/Controllers/PageController.php @@ -0,0 +1,35 @@ +block_search_indexing) { + $content = view('components.robotsTxt.disallowAll'); + } else { + $content = view('components.robotsTxt.default'); + } + return response($content)->header('Content-type', 'text/plain'); + } +} diff --git a/app/Http/Middleware/SetSiteStates.php b/app/Http/Middleware/SetSiteStates.php index 2432bbb..790ca46 100644 --- a/app/Http/Middleware/SetSiteStates.php +++ b/app/Http/Middleware/SetSiteStates.php @@ -47,6 +47,10 @@ class SetSiteStates //預設語系 $siteState->defaultLanguage = config('app.fallback_locale'); + //設定預設的meta tag + $siteState->htmlMeta['description'] = app('Option')->site_description; + $siteState->htmlMeta['og:type'] = 'website'; + return $next($request); } } diff --git a/app/Presenters/DocumentTitlePresenter.php b/app/Presenters/DocumentTitlePresenter.php new file mode 100644 index 0000000..adeec59 --- /dev/null +++ b/app/Presenters/DocumentTitlePresenter.php @@ -0,0 +1,19 @@ +get(); + $titleSection = trim(View::getSection('title')); + if(View::hasSection('title') && $titleSection) { + return $titleSection . ' - ' . $siteName; + } else { + return $siteName; + } + } +} diff --git a/app/Presenters/SiteNamePresenter.php b/app/Presenters/SiteNamePresenter.php new file mode 100644 index 0000000..756ac3a --- /dev/null +++ b/app/Presenters/SiteNamePresenter.php @@ -0,0 +1,32 @@ +siteName = $this->init(); + } + + public function init() + { + $configSiteName = config('app.name', 'Laravel'); + try { + $optionSiteName = app('Option')->getOption('site_name'); + if(!$optionSiteName) { + return $configSiteName; + } + } catch(\Exception $e) { + return $configSiteName; + } + return $optionSiteName; + } + + public function get() + { + return $this->siteName; + } +} diff --git a/app/Providers/SingletonServiceProvider.php b/app/Providers/SingletonServiceProvider.php index 22561dc..09d5d34 100644 --- a/app/Providers/SingletonServiceProvider.php +++ b/app/Providers/SingletonServiceProvider.php @@ -42,7 +42,10 @@ class SingletonServiceProvider extends ServiceProvider return new \App\Presenters\Html\HtmlPresenter; }); - + $this->app->alias(\App\Presenters\SiteNamePresenter::class, 'SiteName'); + $this->app->singleton(\App\Presenters\SiteNamePresenter::class, function($app){ + return new \App\Presenters\SiteNamePresenter; + }); } /** diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index 7e34fb3..0f02e6f 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -3,7 +3,4 @@ @section('title', 'Admin Area') @section('admin-page-content') -
-            {{ print_r(app('AdminMenu')->getMenu()) }}
-    
@endsection diff --git a/resources/views/admin/layouts/app.blade.php b/resources/views/admin/layouts/app.blade.php index 77255b5..8a8949e 100644 --- a/resources/views/admin/layouts/app.blade.php +++ b/resources/views/admin/layouts/app.blade.php @@ -1,6 +1,7 @@ + @include('components.head.title') diff --git a/resources/views/admin/menu/options/layout.blade.php b/resources/views/admin/menu/options/layout.blade.php index 784a22c..a54ded4 100644 --- a/resources/views/admin/menu/options/layout.blade.php +++ b/resources/views/admin/menu/options/layout.blade.php @@ -1,4 +1,9 @@ @extends('admin.layouts.app') + +@section('title') + @lang('adminPageHeader.options.' . $slug) +@endsection + @section('admin-page-content')
diff --git a/resources/views/components/head/metaNoindex.blade.php b/resources/views/components/head/metaNoindex.blade.php new file mode 100644 index 0000000..a3d1fe5 --- /dev/null +++ b/resources/views/components/head/metaNoindex.blade.php @@ -0,0 +1,2 @@ + + diff --git a/resources/views/components/head/metaTags.blade.php b/resources/views/components/head/metaTags.blade.php new file mode 100644 index 0000000..5a5610a --- /dev/null +++ b/resources/views/components/head/metaTags.blade.php @@ -0,0 +1,3 @@ +@foreach(@app('SiteState')->htmlMeta as $name => $content) + +@endforeach diff --git a/resources/views/components/head/title.blade.php b/resources/views/components/head/title.blade.php new file mode 100644 index 0000000..e005145 --- /dev/null +++ b/resources/views/components/head/title.blade.php @@ -0,0 +1,2 @@ +@inject('documentTitlePresenter', App\Presenters\DocumentTitlePresenter) +{{ $documentTitlePresenter->get() }} diff --git a/resources/views/components/robotsTxt/default.blade.php b/resources/views/components/robotsTxt/default.blade.php new file mode 100644 index 0000000..5348602 --- /dev/null +++ b/resources/views/components/robotsTxt/default.blade.php @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /{{ config('admin.route') }}/ diff --git a/public/robots.txt b/resources/views/components/robotsTxt/disallowAll.blade.php similarity index 53% rename from public/robots.txt rename to resources/views/components/robotsTxt/disallowAll.blade.php index eb05362..1f53798 100644 --- a/public/robots.txt +++ b/resources/views/components/robotsTxt/disallowAll.blade.php @@ -1,2 +1,2 @@ User-agent: * -Disallow: +Disallow: / diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index a4db43f..50dfc49 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,11 +1,15 @@ + @include('components.head.title') - + @include('components.head.metaTags') + @if(app('Option')->block_search_indexing) + @include('components.head.metaNoindex') + @endif @yield('head-meta') @stack('app-head-scripts') diff --git a/routes/web.php b/routes/web.php index 69584c5..28daefb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,8 @@ Auth::routes(['verify' => true]); */ Route::view('/', 'index')->name('index'); +Route::get('/robots.txt', 'PageController@robotstxt'); + /** * Admin routes */