Q&A

페이지 title 커스텀 하는 애드온 만들기

2023.09.08 02:39
173
0
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;

 

감사합니다.

톰캣 Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.

댓글 9

  • 2023.09.08 03:21 #1784399

    무엇을 하려고 하시는 건지 분명하지 않습니다.

     

    사용자가 입력한 제목이 아닌 다른 내용이 글 제목으로 DB에 저장되도록 하고 싶다? 그렇다면 controller에서 (또는 controller 실행 도중 호출하는 트리거를 사용하여) $obj->title을 조작하는 것이 맞습니다.

     

    DB에 저장되는 제목은 그대로 두고, 화면에 표시되는 제목이나 SEO 목적의 title만 바꾸고 싶다? 그렇다면 controller와는 아무 관련이 없습니다. 화면에 표시하는 부분은 view이니까요.

  • 2023.09.08 03:31 #1784403

    화면에 표시되는 제목이나 SEO 목적의 title만 바꾸고 싶다? 가맞는것 같습니다.

    기존 db에 저장된 제목 + 확장변수 내용이니

    view 쪽 특히 <title를 관리하는부분은 어떤파일이 적절할까요?

    스킨에서 처리하려면 기존의 tite 값 (변수)를 대체해야할텐데
    그 마지막 변수 명칭이 $obj->title 이것은 아닌것같네요.

  • 2023.09.08 03:45 #1784408
    $obj는 대개 뭔가를 DB를 저장하는 시점에 사용하는 변수입니다.

    글읽기 화면에서 사용하는 문서는 $oDocument에 들어 있으니
    $oDocument->add('title', '내가 원하는 값'); 이렇게 제목을 조작할 수 있습니다.

    만약 <title>이 원하는 형태로 나오지 않는다면
    Context::setBrowserTitle(), Context::addBrowserTitle() 등
    브라우저 타이틀을 조작하는 데 특화된 함수들도 있습니다.
  • 2023.09.08 04:13 #1784421

    와와 기진곰님이 답변주신

    Context::setBrowserTitle(제목);


    이 무적의 타이들이 있었네요!!!

    무조건 코어로 가야하나 생각을 했는데...
    아주 쉽게 스킨상에서 셋팅을 해줄 수 있네요.

  • 2023.09.08 04:40 #1784427
    네, 코어 수정이 답이라고 생각될 때 조심하셔야 합니다. 그렇지 않을 확률이 99%거든요. ㅎㅎ
  • 2023.09.08 05:13 #1784437

    어 근데 만들고 생각해보니...


    <title>DB의에 저장된 제목 (게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>

     

    이렇게 해주고 싶은데

     

     

    Context::getBrowserTitle()로 제목을 불러와서 스킨에서 가공하려고 하다보니

     

    <title>DB의에 저장된 제목 - 사이트 이름 - (게시판의 확장변수)</title>

    혹은

    <title>(게시판의 확장변수) - DB의에 저장된 제목 - 사이트 이름</title>

     

    로 밖에 안되네요

     

    <title>DB의에 저장된 제목 (게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>

    저는 이게 하고싶은건데 

     

    역시 SEO 설정 모듈에서 수정해야할까요?

     

    Context::getBrowserTitle(); ." - " . $oDocument->getExtraEidValue('확장변수') 로 코드를 작성했거든요

  • 2023.09.08 05:18 #1784441

    아니면 혹시 시스템 설정에서 지정한 $DOCUMENT_TITLE - $SITE_TITLE - $SUBPAGE_TITLE
    이 코드가 설마 스킨에서 먹히려나요? 먹혔으면 좋겠네요 ㅎㅎ 안먹히네요ㅠㅠ

     

    $DOCUMENT_TITLE - $SITE_TITLE - $SUBPAGE_TITLE

    이변수들을 전역 설정해 주는 방법도 뭔가 있을 것 같은데 또 찾아봐야겠네요.

     

    그냥 SEO와 설정과 별개로  조금 번거롭겟지만

     

    강제로 $oDocument->getTitle() + 확장변수 + 사이트명(손으로) + {$oDocument->get('module_title');

  • 2023.09.08 04:04 #1784412

    감사합니다.

    {@$oDocument->add('title', 'aa');}

    이 코드는 게시물의 제목을 aa 바꾸는 기능을 가지고 있네요.
    게시물의 제목은 그대로 두고 ( {$oDocument->getTitle()} 앞위로 여러 코드들을 넣어서 이미 확장변수가+ @로 노출되게 커스텀 되어있습니다)

    title은 바뀌지 않네요

    적어주신 Context::setBrowserTitle() 이런부분을 토대로 수정해야하는것 같아보이는데


    <title>DB의에 저장된 제목+(게시판의 확장변수) - 사이트 이름(SEO 설정그대로)</title>

    Context::getBrowserTitle(); 이 값을 설정하고 싶은거니
    제가 생각했을때는 SEO 코어 부분에서 역시나 수정하는게 가장 적합한게 아닐까 생각이 듭니다.

  • 2023.09.08 04:08 #1784417
    https://xetown.com/questions/1695716

    이런글들을 조금 더 참고해 보겠습니다.