페이지 title 커스텀 하는 애드온 만들기
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
현재 seopro 모듈을 일부 커스텀하여 페이지 제목 title 부분에 추가적인 값을 넣어서 사용중에 있습니다.
이미 모듈에서 Title 을 제어하고 있어 쉽게 수정해서 사용했는데
모듈을 사용하지 않은 상태에서도 적용해볼까하여 애드온을 만들려고 합니다.
https://xetown.com/questions/721208
https://xe1.xpressengine.com/qna/21598707
글을 참고하고 있는데
$obj->title 에 커스텀을 해주고싶습니다.
document.controller.php
$obj->title = escape($obj->title, false);
다음줄에
$obj->title = $obj->extra_vars1; 값을 에 넣어도 작동이 되지 않네요.
다른 곳에도 여러곳 넣어 보았으나 동일하고
$obj->title을 막 지워도 보고 넣어도 보고 해도 작동되지 않네요.
이많은 $obj->title 중에서 document.controller.php가 실질적인 타이틀 역할을 하는것 같은데 다른곳에 해결방법이 있을까요?
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\addon\addon.admin.model.php (2 일치)
줄 292: $obj->title = $val->title->body;
줄 379: $obj->title = $val->title->body;
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\board\board.controller.php (11 일치)
줄 38: if (isset($obj->title))
줄 40: $obj->title = utf8_clean($obj->title);
줄 97: unset($obj->title_color);
줄 98: unset($obj->title_bold);
줄 217: $obj->title_color = $oDocument->get('title_color');
줄 218: $obj->title_bold = $oDocument->get('title_bold');
줄 257: $mail_title = sprintf(lang('msg_document_notify_mail'), $browser_title, cut_str($obj->title, 20, '...'));
줄 320: $obj->title = $update_log->title;
줄 322: $obj->title_bold = $update_log->title_bold;
줄 323: $obj->title_color = $update_log->title_color;
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\document\document.controller.php (23 일치)
줄 735: $obj->title = escape($obj->title, false);
줄 736: if($obj->title == '')
줄 738: $obj->title = cut_str(trim(strip_tags(nl2br($obj->content))),20,'...');
줄 740: if($obj->title == '')
줄 742: $obj->title = 'Untitled';
줄 770: $obj->title = utf8_mbencode($obj->title);
줄 1017: $obj->title = escape($obj->title, false);
줄 1018: if($obj->title == '')
줄 1020: $obj->title = cut_str(strip_tags($obj->content),20,'...');
줄 1022: if($obj->title == '')
줄 1024: $obj->title = 'Untitled';
줄 1049: $obj->title = utf8_mbencode($obj->title);
줄 1088: $extra_content->title = $obj->title;
줄 1094: $obj->title = $document_output->data->title;
줄 1231: $update_args->title = $obj->title;
줄 1232: $update_args->title_bold = $obj->title_bold;
줄 1233: $update_args->title_color = $obj->title_color;
줄 3413: unset($obj->title_color);
줄 3414: unset($obj->title_bold);
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\document\document.model.php (1 일치)
줄 802: $obj->title = $obj->text = $val['text'];
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\importer\importer.admin.controller.php (6 일치)
줄 556: $obj->title = base64_decode($xmlObj->message->title->body);
줄 592: $sender_args->title = $obj->title;
줄 611: $receiver_args->title = $obj->title;
줄 666: $obj->title = $category;
줄 763: $obj->title = base64_decode($xmlDoc->post->title->body);
줄 905: $obj->title = base64_decode($xmlDoc->trackback->title->body);
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\importer\ttimport.class.php (5 일치)
줄 64: $obj->title = $category;
줄 142: $obj->title = $xmlDoc->post->title->body;
줄 331: $obj->title = cut_str(strip_tags($obj->content),20,'...');
줄 332: if ($obj->title == '') $obj->title = 'Untitled';
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\install\script\ko.install.php (2 일치)
줄 212: $obj->title = 'Welcome to Rhymix';
줄 222: $obj->title = 'Welcome to Mobile Rhymix';
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\module\module.model.php (4 일치)
줄 1062: $obj->title = $val->title->body ?? null;
줄 1164: $obj->title = $title;
줄 1199: $obj->title = $title;
줄 1218: $obj->title = $menus[$i]->title->body;
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\ncenterlite\ncenterlite.controller.php (5 일치)
줄 349: $mention_targets = $this->_getMentionTarget($obj->title . ' ' . $obj->content);
줄 387: $args->target_summary = self::_createSummary($obj->title);
줄 661: $args->target_summary = $obj->title;
줄 702: $args->target_summary = $obj->title;
줄 1788: $args->target_summary = self::_createSummary($obj->title);
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\page\page.admin.controller.php (5 일치)
줄 318: settype($obj->title, "string");
줄 319: if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...');
줄 321: if($obj->title == '') $obj->title = 'Untitled';
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\rss\rss.view.php (2 일치)
줄 20: $obj->title = $rss_title;
줄 178: $info->title = Context::replaceUserLang($obj->title ?: $info->title);
C:\Users\USER\Downloads\rhymix-2.1.4\rhymix\modules\spamfilter\spamfilter.controller.php (2 일치)
줄 58: $filter_targets = [$obj->title, $obj->content, $obj->tags ?? ''];
줄 204: $text = $obj->title . ' ' . $obj->content;
감사합니다.

댓글 9
무엇을 하려고 하시는 건지 분명하지 않습니다.
사용자가 입력한 제목이 아닌 다른 내용이 글 제목으로 DB에 저장되도록 하고 싶다? 그렇다면 controller에서 (또는 controller 실행 도중 호출하는 트리거를 사용하여) $obj->title을 조작하는 것이 맞습니다.
DB에 저장되는 제목은 그대로 두고, 화면에 표시되는 제목이나 SEO 목적의 title만 바꾸고 싶다? 그렇다면 controller와는 아무 관련이 없습니다. 화면에 표시하는 부분은 view이니까요.
화면에 표시되는 제목이나 SEO 목적의 title만 바꾸고 싶다? 가맞는것 같습니다.
기존 db에 저장된 제목 + 확장변수 내용이니
view 쪽 특히 <title를 관리하는부분은 어떤파일이 적절할까요?
스킨에서 처리하려면 기존의 tite 값 (변수)를 대체해야할텐데
그 마지막 변수 명칭이 $obj->title 이것은 아닌것같네요.
글읽기 화면에서 사용하는 문서는 $oDocument에 들어 있으니
$oDocument->add('title', '내가 원하는 값'); 이렇게 제목을 조작할 수 있습니다.
만약 <title>이 원하는 형태로 나오지 않는다면
Context::setBrowserTitle(), Context::addBrowserTitle() 등
브라우저 타이틀을 조작하는 데 특화된 함수들도 있습니다.
와와 기진곰님이 답변주신
Context::setBrowserTitle(제목);
이 무적의 타이들이 있었네요!!!
무조건 코어로 가야하나 생각을 했는데...
아주 쉽게 스킨상에서 셋팅을 해줄 수 있네요.
어 근데 만들고 생각해보니...
<title>DB의에 저장된 제목 (게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>
이렇게 해주고 싶은데
Context::getBrowserTitle()로 제목을 불러와서 스킨에서 가공하려고 하다보니
<title>DB의에 저장된 제목 - 사이트 이름 - (게시판의 확장변수)</title>
혹은
<title>(게시판의 확장변수) - DB의에 저장된 제목 - 사이트 이름</title>
로 밖에 안되네요
<title>DB의에 저장된 제목 (게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>
저는 이게 하고싶은건데
역시 SEO 설정 모듈에서 수정해야할까요?
Context::getBrowserTitle(); ." - " . $oDocument->getExtraEidValue('확장변수') 로 코드를 작성했거든요
아니면 혹시 시스템 설정에서 지정한 $DOCUMENT_TITLE - $SITE_TITLE - $SUBPAGE_TITLE
이 코드가 설마 스킨에서 먹히려나요? 먹혔으면 좋겠네요 ㅎㅎ 안먹히네요ㅠㅠ
$DOCUMENT_TITLE - $SITE_TITLE - $SUBPAGE_TITLE
이변수들을 전역 설정해 주는 방법도 뭔가 있을 것 같은데 또 찾아봐야겠네요.
그냥 SEO와 설정과 별개로 조금 번거롭겟지만
강제로 $oDocument->getTitle() + 확장변수 + 사이트명(손으로) + {$oDocument->get('module_title');
감사합니다.
{@$oDocument->add('title', 'aa');}
이 코드는 게시물의 제목을 aa 바꾸는 기능을 가지고 있네요.
게시물의 제목은 그대로 두고 ( {$oDocument->getTitle()} 앞위로 여러 코드들을 넣어서 이미 확장변수가+ @로 노출되게 커스텀 되어있습니다)
title은 바뀌지 않네요
적어주신 Context::setBrowserTitle() 이런부분을 토대로 수정해야하는것 같아보이는데
<title>DB의에 저장된 제목+(게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>
Context::getBrowserTitle(); 이 값을 설정하고 싶은거니
제가 생각했을때는 SEO 코어 부분에서 역시나 수정하는게 가장 적합한게 아닐까 생각이 듭니다.
이런글들을 조금 더 참고해 보겠습니다.