Commit 3159cae9 authored by Christian Giupponi's avatar Christian Giupponi

Add canonical url and alternate links for each language available

parent 785f1b29
......@@ -19,17 +19,16 @@ class PublicController extends BasePublicController
*/
private $app;
private $disabledPage = false;
public function __construct(PageRepository $page, Application $app)
{
parent::__construct();
$this->page = $page;
$this->app = $app;
$this->app = $app;
}
/**
* @param $slug
*
* @return \Illuminate\View\View
*/
public function uri($slug)
......@@ -46,7 +45,9 @@ class PublicController extends BasePublicController
$template = $this->getTemplateForPage($page);
return view($template, compact('page'));
$alternate = $this->getAlternateMetaData($page);
return view($template, compact('page', 'alternate'));
}
/**
......@@ -60,13 +61,17 @@ class PublicController extends BasePublicController
$template = $this->getTemplateForPage($page);
return view($template, compact('page'));
$alternate = $this->getAlternateMetaData($page);
return view($template, compact('page', 'alternate'));
}
/**
* Find a page for the given slug.
* The slug can be a 'composed' slug via the Menu
*
* @param string $slug
*
* @return Page
*/
private function findPageForSlug($slug)
......@@ -83,7 +88,9 @@ class PublicController extends BasePublicController
/**
* Return the template for the given page
* or the default template if none found
*
* @param $page
*
* @return string
*/
private function getTemplateForPage($page)
......@@ -92,13 +99,33 @@ class PublicController extends BasePublicController
}
/**
* Throw a 404 error page if the given page is not found or draft
* Throw a 404 error page if the given page is not found
*
* @param $page
*/
private function throw404IfNotFound($page)
{
if (null === $page || $page->status === $this->disabledPage) {
if (is_null($page)) {
$this->app->abort('404');
}
}
/**
* Create a key=>value array for alternate links
*
* @param $page
*
* @return array
*/
private function getAlternateMetaData($page)
{
$translations = $page->getTranslationsArray();
$alternate = [];
foreach ($translations as $locale => $data) {
$alternate[$locale] = $data['slug'];
}
return $alternate;
}
}
......@@ -3,12 +3,14 @@
<head lang="{{ LaravelLocalization::setLocale() }}">
<meta charset="UTF-8">
@section('meta')
<meta name="description" content="@setting('core::site-description')" />
<meta name="description" content="@setting('core::site-description')"/>
@show
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
@section('title')@setting('core::site-name')@show
</title>
<title>@section('title')@setting('core::site-name')@show</title>
@foreach($alternate as $alternateLocale=>$alternateSlug)
<link rel="alternate" hreflang="{{$alternateLocale}}" href="{{url($alternateLocale.'/'.$alternateSlug)}}">
@endforeach
<link rel="canonical" href="{{url()->current()}}" />
<link rel="shortcut icon" href="{{ Theme::url('favicon.ico') }}">
{!! Theme::style('css/main.css') !!}
......@@ -30,7 +32,7 @@
@yield('scripts')
<?php if (Setting::has('core::analytics-script')): ?>
{!! Setting::get('core::analytics-script') !!}
{!! Setting::get('core::analytics-script') !!}
<?php endif; ?>
@stack('js-stack')
</body>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment