에디터 모듈에서 editor.controller.php 파일에 다음과 같은 함수가 있습니다.
function transComponent($content)
{
$content = preg_replace_callback('!<(?:(div)|img)([^>]*)editor_component=([^>]*)>(?(1)(.*?)</div>)!is', array($this,'transEditorComponent'), $content);
return $content;
}
여기서 콜백되는 태그(div 또는 img)에 sup도 포함시키고 싶은데요.
코어 직접 수정은 언제나 꺼려지는 일이어서, 애드온에서 시도를 해보려고 합니다.
기존 모듈의 함수를 애드온으로 변경할 수가 있나요?
아니면, 애드온에서 따로 전역 함수를 선언해줘야 할까요?
before_display_content 시점에서 $output을 받아와서
$oEditorController = getController('editor');
$output = preg_replace_callback('정규식', array($oEditorController ,'transEditorComponent'), $output);
이렇게 해주면 transComponent 함수를 건드리지 않고도 원하시는 패턴을 추가로 변환할 수 있을 것 같습니다.
물론 정규식으로 넘겨주는 값의 형태가 동일하고, transEditorComponent 함수에서 sup을 처리해 줄 수 있다는 가정 하에 그렇고요... 만약 그렇지 않다면 transEditorComponent 함수와 비슷한 기능을 따로 구현해야겠지요. 하나의 애드온에서만 사용하실 함수라면 클로져로 구현하셔도 무방합니다.
$output = preg_replace_callback('정규식', function($match) {
return 변환한 값;
}, $output);