XE 3 (Xpressengine 3) 플러그인 상세 페이지 Documentation에서 README.md 내용이 HTML로 출력되도록 수정.

XE 3 플러그인 상세 페이지 - Documentation 에 README.md 에 작성된 마크 다운 (Markdown)이 그대로 출력되고 있었습니다.


 

README.md 파일에 작성된 내용을 가져오는 함수입니다. (위치: \core\src\Xpressengine\Plugin\PluginEntity.php)

/**
 * 플러그인의 readme 파일 내용을 반환한다.
 *
 * @return string
 */
public function getReadMe()
{
    if ($this->hasRemoteData()) {
        return data_get($this->remoteData, 'details', '');
    }

    $file = $this->getPath('README.md');

    if (!file_exists($file)) {
        return '';
    } else {
        return nl2br(file_get_contents($file));
    }
}

 

위에 작성된 코드를 살펴보면 알겠지만 마크다운 (markdown) 을 HTML로 파싱하는 부분이 작성되지 않았다는 걸 볼 수 있습니다.

그래서 라라벨 5.4 이후로 부터 포함된 parsedown 이라는 마크다운 파서를 사용해서 아래와 같은 이미지가 출력될 수 있도록 했습니다.

 


 

README.md 파일에 작성된 내용을 가져온 이후 parsedown  마크다운 파서를 이용해서 HTML로 출력될 수 있도록 코드를 수정해줬습니다.

/**
 * 플러그인의 readme 파일 내용을 반환한다.
 *
 * @return string
 */
public function getReadMe()
{
    if ($this->hasRemoteData()) {
        return data_get($this->remoteData, 'details', '');
    }

    $file = $this->getPath('README.md');

    if (file_exists($file) === false) {
        return '';
    }

    return Parsedown::instance()
        ->setSafeMode(true)
        ->setMarkupEscaped(true)
        ->text(file_get_contents($file));
}

 

출처

parsedown (Markdown Parser in PHP)  https://parsedown.org/

  • share