Grav

Grav를 테스트하면서 배운 것들을 정리한다.

1   Admin 플러그인의 한글 문제

Admin 플러그인에서 페이지를 생성할 때 폴더명에서 한글을 없애 버린다. 슬러그 자체가 한글을 포함하지 않기 때문에 자바스크립트 라이브러리에서 지원하지 않는다. 이 이슈PR을 보면 어디에서 이 변환이 이루어지는지 알 수 있다.

user/plugins/admin/themes/grav/app/pages/page/add.js 파일의 23 번 줄을 다음과 같이 수정하면 된다.

    //let slug = $.slugify(elements.title.val(), {custom: {"'": ''}});
    let slug = elements.title.val().replace(/[`~!@#\$%^&*=+\\|;:'",\/?()\[\]{}<> \t_.-]+/g, '-').replace(/^-|-$/g, '');

그래도 한글이 제대로 변환되지 않는다. 자바스크립트 파일들을 모아서 미니파이하기 때문이다. user/plugins/admin/themes/grav/js/admin.min.js 파일을 열어서 정규 표현식으로 .=..default.slugify(..title을 검색하면 다음과 비슷한 문장이 보인다.

n=a.default.slugify(t.title.val(),{custom:{"'":""}});

이 부분을 다음 문장으로 교체하면 된다. 물론 변수명은 원본과 동일하게 유지해야 된다.

n=t.title.val().replace(/[`~!@#\$%^&*=+\\|;:'",\/?()\[\]{}<> \t_.-]+/g,'-').replace(/^-|-$/g,'');

이 문제는 Grav 개발자에게 보고해서 수정해 달라고 해도 고쳐주지 않을 가능성이 높다. 유니코드 슬러그를 지원할 생각은 없냐는 질문에 단호하게 슬러그의 정의를 한 번 읊고 다른 말은 없다.

2   페이지별 디렉토리 구조

하나의 디렉토리 내에 복수의 페이지는 지원하지 않을 것이다.

3   Markdown Yet Another Linker 플러그인

마크다운 문법을 위키처럼 쓰려면 링크를 걸 때 타이핑을 많이 해야 하는 문제가 있다. 즉, [페이지 제목](페이지-제목) 같이 페이지 제목을 두 번씩이나 입력해야 된다. 위키는 링크를 걸면서 글을 쓰는 시스템이기 때문에 자연스럽게 내부적인 링크를 많이 걸 수 밖에 없는데 이렇게 페이지 제목을 두 번씩 입력한다는 것은 비효율적이다. 이 문제를 해결할 수 있는 플러그인은 없었다. 그래서 내가 Grav의 플러그인 개발도 공부할 해서 마크다운 또 다른 링커 플러그인을 만들었다. 데모 페이지를 만들었다.

참고문헌

이 칸을 비워 두세요.