XE 3 플러그인 상세 페이지 - Documentation 에 README.md 에 작성된 마크 다운 (Markdown)이 그대로 출력되고 있었습니다.
![](https://sparkweb.co.kr/storage/app/public/thumbnails/88/1e/spill_800x800_ce6b778c9f44cbe11e3d36d08640a29620d9f69a.JPG)
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 이라는 마크다운 파서를 사용해서 아래와 같은 이미지가 출력될 수 있도록 했습니다.
![](https://sparkweb.co.kr/storage/app/public/thumbnails/ac/41/spill_800x800_23b653daa7c192e2debed8a53c8cbc6ca9c8ea93.JPG)
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/
0개 댓글