안녕하세요

 

혹시 라이믹스 코어에서 붙여주는 og, twitter 태그 등을

코어수정없이 moduleobject.proc 트리거를 이용해서 제거를 하는 메소드가 있을까요?

 

브라우저 타이틀을 나중에 끼어들어서 덮어씌우는건 Context 함수를 통해 settitle을 할 수 있던데, 메타태그나 seo태그 등을 제거하는 부분은 혼자서 찾기가 어렵네요 ㅠㅠ 

 

특정 조건에서 페이지의 seo태그를 빼거나 넣거나 조절을 해보려고 하는데요, 개발방향 조언을 부탁드립니다 

  • profile

    굳이 제거하거나 덮어씌울 것 없습니다. 코어에서 넣어주는 메타 태그는 기본값일 뿐, 모듈 실행 도중이든 직후(moduleObject.proc after)든 언제라도 title이나 og 태그를 직접 지정할 수 있으니 원하시는 값을 넣으면 됩니다.

     

    Context::setBrowserTitle(제목);

    Context::addMetaTag(이름, 값);

    Context::addMetaImage(파일명, width, height);

    Context::addOpenGraphData(키, 값);

     

    만약 지정되지 않는 것이 있다면 버그이니 신고해 주시기 바랍니다.

  • profile profile

    기진곰님 안녕하세요! 안그래도 소스코드를 샅샅이 뒤져보고 있었는데요

     

    // call a trigger before layout
    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 는 존재하지가 않는것 같네요 ㅠㅠ

     

  • profile profile

    layout.before 이전에 아무 때나 하셔도 됩니다. 대개 여기보다는 moduleObject.proc 전후 시점이 더 유리합니다. 확인하신 시점에서 무조건 현재 글이나 게시판 기준으로 메타 태그를 만들어 넣는 것이 아니라, 수동으로 지정한 값이 없는 경우에만 자동으로 만들어 넣도록 되어 있거든요. 미리 지정해 두시면 그 값을 존중합니다.

    그 후에 하시려고 하면 오히려 복잡합니다. HTML 태그가 이미 삽입되어 버린 상황에서 다시 빼려면 복잡한 정규식을 동원한 비효율적인 처리가 필요하겠지요.

     

    단, 제거하려면 복잡해질 수밖에 없겠네요. 값이 없으면 자동으로 다시 넣어버리니까요.

  • profile profile
    아 네 말씀주신 내용으로 큰 도움이 되었습니다 감사합니다~

    Context::setBrowserTitle 은 있는데
    Context::setOpenGraphData('og:url', $canonical_url); 함수는 없어서 조금 헤맷었네요 ㅎㅎ
  • profile profile
    canonical URL을 변경하고 싶으시다면 Context::setCanonicalURL() 함수가 따로 있습니다.