SW 개발

xe / xewiki / 위키 문법 바꾸기

. . . 2011. 6. 27. 15:08
반응형
  • 마크다운변환 : 20190905

저는 제가 개발했던 자료들을 개인적인 xe 홈페이지를 이용해서 비밀내용까지 모두 올려놓습니다. (개인적인 개발 노트로 활용하고있습니다.) 그중 xe wiki 는 아주 간단한 위키의 기능을 제공합니다. (강력하지는 않지만 아주 유용하게 잘쓰고있습니다.)

문제발생

헌데 사용하다가 문제가 발생했습니다.

소스코드를 잘 올리다보니... 소스코드의 내용중 배열의 내용이 제대로 보이지 않더군요.

이유는 기본적으로 xe wiki 는 [글내용] 이런식으로 문서를 만들게 됩니다. 때문에 배열이 새로운 글내용 링크로 표시되어 제대로 소스코드를 보기 힘들게 됐습니다.

위키문법 바꾸기

그래서 [[글내용]] 형식으로 바꾸는 팁을 알려드릴께요.

/xe/modules/wiki/wiki.view.php 경로에 가면.. function _renderWikiContent() 의 내용을 아래처럼 바꾸면 됩니다.

/**
* @brief 위키 문법에 따라 쓰여진 컨텐츠의 링크를 렌더링 (private)
*/
function _renderWikiContent($org_content)
{
        $content = preg_replace_callback("!\[\[([^\]\]]+)\]\]!is", array(&$this, 'callback_check_exists' ), $org_content );
        $entries = array_keys($this->document_exists);
        $oDB = &DB::getInstance();

        if(count($entries))
        {
                $args->entries = $entries;
                $args->module_srl = $this->module_info->module_srl;
                $output = executeQueryArray("wiki.getDocumentsWithEntries", $args);

                if($output->data)
                {
                        foreach($output->data as $alias)
                        {
                                $this->document_exists[$alias->alias_title] = 1;
                        }
                }
        }
        $content = preg_replace_callback("!\[\[([^\]]+)\]\]!is", array(&$this, 'callback_wikilink' ), $content );
        $content = preg_replace('@<([^>]*)(src|href)="((?!https?://)[^"]*)"([^>]*)>@i','<$1$2="'.Context::getRequestUri().'$3"$4>', $content);

        return $content;
}

빨간색으로 하이라트 된 부분이 [[글내용]] 이라고 적용된 부분입니다. 잘 보시면 알겠지만 정규식으로 표현되어있습니다.

위의 하이라트된 부분을 고치시면.. wiki를 원하는 문법으로 고치실수 있습니다.

반응형