From 8303e0dbb2aea4d7f3d01a0520322335480a5bdc Mon Sep 17 00:00:00 2001 From: Nick Khaetsky Date: Wed, 18 Dec 2019 19:16:36 +0300 Subject: [PATCH] Added additional robots meta fields to CMS pages (#4685) Credit to @FlusherDock1 --- modules/cms/classes/Page.php | 16 ++++++++++++++++ modules/cms/classes/page/fields.yaml | 25 +++++++++++++++++++++++++ modules/cms/lang/en/lang.php | 4 ++++ modules/cms/lang/ru/lang.php | 4 ++++ 4 files changed, 49 insertions(+) diff --git a/modules/cms/classes/Page.php b/modules/cms/classes/Page.php index f58d15af1..648baf958 100644 --- a/modules/cms/classes/Page.php +++ b/modules/cms/classes/Page.php @@ -28,6 +28,9 @@ class Page extends CmsCompoundObject 'is_hidden', 'meta_title', 'meta_description', + 'meta_robots_noindex', + 'meta_robots_nofollow', + 'meta_robots_noarchive', 'markup', 'settings', 'code' @@ -112,6 +115,19 @@ class Page extends CmsCompoundObject return $result; } + /** + * Helper that returns formatted robots tags. + * @return string + */ + public function getMetaRobotsAttribute() + { + $options = []; + $options[] = $this->meta_robots_noindex ? 'noindex' : 'index'; + $options[] = $this->meta_robots_nofollow ? 'nofollow' : 'follow'; + $options[] = $this->meta_robots_noarchive ? 'noarchive' : 'archive'; + return implode(',', $options); + } + /** * Helper that makes a URL for a page in the active theme. * @param mixed $page Specifies the Cms Page file name. diff --git a/modules/cms/classes/page/fields.yaml b/modules/cms/classes/page/fields.yaml index ac754d31e..ab29e4b4b 100644 --- a/modules/cms/classes/page/fields.yaml +++ b/modules/cms/classes/page/fields.yaml @@ -59,6 +59,31 @@ tabs: type: textarea size: tiny + settings[meta_robots_noindex]: + tab: cms::lang.editor.meta + label: cms::lang.editor.meta_robots_noindex + on: backend::lang.list.column_switch_true + off: backend::lang.list.column_switch_false + span: auto + type: switch + comment: cms::lang.editor.meta_robots_noindex_comment + + settings[meta_robots_noarchive]: + tab: cms::lang.editor.meta + label: cms::lang.editor.meta_robots_noarchive + on: backend::lang.list.column_switch_true + off: backend::lang.list.column_switch_false + span: auto + type: switch + + settings[meta_robots_nofollow]: + tab: cms::lang.editor.meta + label: cms::lang.editor.meta_robots_nofollow + on: backend::lang.list.column_switch_true + off: backend::lang.list.column_switch_false + span: auto + type: switch + settings[is_hidden]: tab: cms::lang.editor.settings label: cms::lang.editor.hidden diff --git a/modules/cms/lang/en/lang.php b/modules/cms/lang/en/lang.php index d3e28b27e..bfacd56b6 100644 --- a/modules/cms/lang/en/lang.php +++ b/modules/cms/lang/en/lang.php @@ -175,6 +175,10 @@ return [ 'meta' => 'Meta', 'meta_title' => 'Meta Title', 'meta_description' => 'Meta Description', + 'meta_robots_noindex' => 'Prevent search engines from indexing this page?', + 'meta_robots_noindex_comment' => 'Regular users will still be able to visit a page hidden from search engines.', + 'meta_robots_nofollow' => 'Prevent search engines from following the links on this page?', + 'meta_robots_noarchive' => 'Prevent search engines from archiving the page?', 'markup' => 'Markup', 'code' => 'Code', 'content' => 'Content', diff --git a/modules/cms/lang/ru/lang.php b/modules/cms/lang/ru/lang.php index 6d2b99fd4..0513e969b 100644 --- a/modules/cms/lang/ru/lang.php +++ b/modules/cms/lang/ru/lang.php @@ -175,6 +175,10 @@ return [ 'meta' => 'Метатеги', 'meta_title' => 'Заголовок (meta title)', 'meta_description' => 'Описание (meta description)', + 'meta_robots_noindex' => 'Запретить поисковым системам индексировать эту страницу?', + 'meta_robots_noindex_comment' => 'Обычные пользователи по-прежнему смогут посещать страницы, скрытые от поисковых систем.', + 'meta_robots_nofollow' => 'Запретить поисковым системам следовать по ссылкам на этой странице?', + 'meta_robots_noarchive' => 'Запретить поисковым системам архивировать эту страницу?', 'markup' => 'Разметка', 'code' => 'Код', 'content' => 'Содержание',