From 2197b0a9821905f1e60d1e14a6c888ca9e1503a7 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sun, 13 Aug 2023 02:03:02 +0900 Subject: [PATCH] Add option to control whether boards and pages are indexed by search engines, using the X-Robots-Tag header --- classes/display/DisplayHandler.class.php | 6 ++++++ common/lang/en.php | 2 ++ common/lang/ko.php | 2 ++ modules/board/board.admin.controller.php | 1 + modules/board/tpl/board_insert.html | 8 ++++++++ modules/page/page.admin.controller.php | 1 + modules/page/tpl/page_info.html | 26 ++++++++++++++++-------- 7 files changed, 37 insertions(+), 9 deletions(-) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 5e8e60b2d..63eeb2f40 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -125,6 +125,12 @@ class DisplayHandler extends Handler header('X-Content-Type-Options: ' . $header_value); } + // Print robot headers. + if (isset($oModule->module_info->robots_tag) && $oModule->module_info->robots_tag === 'noindex') + { + header('X-Robots-Tag: noindex'); + } + // flush output buffer while (ob_get_level()) { diff --git a/common/lang/en.php b/common/lang/en.php index c735d68fa..5f9b3325d 100644 --- a/common/lang/en.php +++ b/common/lang/en.php @@ -343,6 +343,8 @@ $lang->filter['invalid_float'] = 'The format of %s is invalid. Please enter numb $lang->filter['invalid_extension'] = 'The format of %s is invalid. e.g. gif, jpg, png'; $lang->security_warning_embed = 'Due to security concern, administrators are not allowed to view embedded items.
To view them, please use another non-administrator ID.'; $lang->msg_pc_to_mobile = 'View mobile optimized version of this page'; +$lang->cmd_robots_tag = 'Search Engine Indexing'; +$lang->msg_about_robots_tag = 'Allow search engines to index this page.'; $lang->cmd_yes = 'Yes'; $lang->cmd_no = 'No'; $lang->cmd_set_multilingual = 'Select Language'; diff --git a/common/lang/ko.php b/common/lang/ko.php index 0f27231c7..f605fed42 100644 --- a/common/lang/ko.php +++ b/common/lang/ko.php @@ -347,6 +347,8 @@ $lang->filter['invalid_extension'] = '%s의 형식이 잘못되었습니다. gif $lang->security_invalid_session = '바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.'; $lang->security_warning_embed = '보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요'; $lang->msg_pc_to_mobile = '모바일에 최적화된 화면으로 보기'; +$lang->cmd_robots_tag = '검색엔진 색인'; +$lang->msg_about_robots_tag = '검색엔진이 이 페이지를 색인하는 것을 허용합니다.'; $lang->cmd_yes = '예'; $lang->cmd_no = '아니오'; $lang->cmd_set_multilingual = '다국어 설정'; diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index d5fac230a..c69742341 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -83,6 +83,7 @@ class BoardAdminController extends Board { $args->skip_bottom_list_days = max(0, intval($args->skip_bottom_list_days)); $args->browser_title = trim(utf8_normalize_spaces($args->browser_title)); + $args->robots_tag = ($args->robots_tag === 'noindex') ? 'noindex' : 'all'; $args->meta_keywords = $args->meta_keywords ? implode(', ', array_map('trim', explode(',', $args->meta_keywords))) : ''; $args->meta_description = trim(utf8_normalize_spaces($args->meta_description)); $args->header_text = Rhymix\Modules\Admin\Models\Utility::cleanHeaderAndFooterScripts($args->header_text ?? ''); diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index b3ff9bba0..c83c8ef2e 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -36,6 +36,14 @@ +
+ +
+ + +

{$lang->msg_about_robots_tag}

+
+
diff --git a/modules/page/page.admin.controller.php b/modules/page/page.admin.controller.php index 6206cb29d..065c42c08 100644 --- a/modules/page/page.admin.controller.php +++ b/modules/page/page.admin.controller.php @@ -38,6 +38,7 @@ class PageAdminController extends Page if($args->use_mobile != 'Y') $args->use_mobile = ''; $args->browser_title = trim(utf8_normalize_spaces($args->browser_title)); + $args->robots_tag = ($args->robots_tag === 'noindex') ? 'noindex' : 'all'; $args->meta_keywords = $args->meta_keywords ? implode(', ', array_map('trim', explode(',', $args->meta_keywords))) : ''; $args->meta_description = trim(utf8_normalize_spaces($args->meta_description)); diff --git a/modules/page/tpl/page_info.html b/modules/page/tpl/page_info.html index 07e352d08..905d0f0ab 100644 --- a/modules/page/tpl/page_info.html +++ b/modules/page/tpl/page_info.html @@ -44,6 +44,14 @@
+
+ +
+ + +

{$lang->msg_about_robots_tag}

+
+
@@ -56,6 +64,15 @@
+
+ +
+ +
+
@@ -66,15 +83,6 @@

{$lang->about_layout}

-
- -
- -
-