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의 플러그인 개발도 공부할 겸 해서 마크다운 또 다른 링커 플러그인을 만들었다. 데모 페이지를 만들었다.
참고문헌
- Grav
- Quark One Page – Error when editing class: offset-box with Admin GUI
- Theme Inheritance
- Grav Plugin: Markdown Yet Another Linker
- Page linking with less typing
- Markdown Yet Another Linker Demo
- Improve page name to folder name conversion
- Remove single quotes when slugifying title
- Unicode slug support
- Multiple pages in one folder?
- Grav: creating a user with editor role
- Allow images as well as icons in features