혹시 모듈 트리거를 통해 코어의 seo 태그를 제어할 수 있을까요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 8.1 |
안녕하세요
혹시 라이믹스 코어에서 붙여주는 og, twitter 태그 등을
코어수정없이 moduleobject.proc 트리거를 이용해서 제거를 하는 메소드가 있을까요?
브라우저 타이틀을 나중에 끼어들어서 덮어씌우는건 Context 함수를 통해 settitle을 할 수 있던데, 메타태그나 seo태그 등을 제거하는 부분은 혼자서 찾기가 어렵네요 ㅠㅠ
특정 조건에서 페이지의 seo태그를 빼거나 넣거나 조절을 해보려고 하는데요, 개발방향 조언을 부탁드립니다
댓글 5
굳이 제거하거나 덮어씌울 것 없습니다. 코어에서 넣어주는 메타 태그는 기본값일 뿐, 모듈 실행 도중이든 직후(moduleObject.proc after)든 언제라도 title이나 og 태그를 직접 지정할 수 있으니 원하시는 값을 넣으면 됩니다.
Context::setBrowserTitle(제목);
Context::addMetaTag(이름, 값);
Context::addMetaImage(파일명, width, height);
Context::addOpenGraphData(키, 값);
만약 지정되지 않는 것이 있다면 버그이니 신고해 주시기 바랍니다.
기진곰님 안녕하세요! 안그래도 소스코드를 샅샅이 뒤져보고 있었는데요
ModuleHandler::triggerCall('layout', 'before', $oModule);
// apply layout
$output = $handler->toDoc($oModule);
// call a trigger before display
ModuleHandler::triggerCall('display', 'before', $output);
$original_output = $output;
DisplayHandler.class.php의 82번째 라인 즈음에 위 라인이 존재하고
저 $output = $handler->toDoc($oModule); 코드 부분에서 addMetaTag 등이 진행되면서 Context.class.php의 $_instance에 opengraph_metadata, meta_images 등이 오브젝트로 들어간다 까지 이해하였습니다.
혹시 코어에서 처리를 하고 나서, 나중에 제가 끼어들어서 meta 태그 또는 og 태그 "요소를 제거" 하거나 "요소를 바꿔치기" 하려면
ModuleHandler::triggerCall('display', 'before', $output);
이 부분에서
Context::getOpenGraphData() 을 통해 데이터를 가져오고 > 제가 값을 조작한다음 > Context::addOpenGraphData(키, 값); 을 통해 다시 집어넣으면 되는걸까요?
아니면 좀 더 일찍 호출되는 트리거에서 끼어들어야 할까요?
og태그에서 특정 요소를 제가 끼어들어서 조작하고 싶은데, 이미 존재하는 og태그 값에 무언가를 추가하는 메소드(addOpenGraphData)는 존재하는데 removeOpenGraphData 는 존재하지가 않는것 같네요 ㅠㅠ
layout.before 이전에 아무 때나 하셔도 됩니다. 대개 여기보다는 moduleObject.proc 전후 시점이 더 유리합니다. 확인하신 시점에서 무조건 현재 글이나 게시판 기준으로 메타 태그를 만들어 넣는 것이 아니라, 수동으로 지정한 값이 없는 경우에만 자동으로 만들어 넣도록 되어 있거든요. 미리 지정해 두시면 그 값을 존중합니다.
그 후에 하시려고 하면 오히려 복잡합니다. HTML 태그가 이미 삽입되어 버린 상황에서 다시 빼려면 복잡한 정규식을 동원한 비효율적인 처리가 필요하겠지요.
단, 제거하려면 복잡해질 수밖에 없겠네요. 값이 없으면 자동으로 다시 넣어버리니까요.
Context::setBrowserTitle 은 있는데
Context::setOpenGraphData('og:url', $canonical_url); 함수는 없어서 조금 헤맷었네요 ㅎㅎ