Notice
Recent Posts
Recent Comments
Dharma
[Weblocks] 지저분한(?) 태그 없애기 본문
Weblocks 로 Web Programming 을 하다보면 자동으로 생성되는 Tag 들이 보기 싫을 때가 있습니다.
자동으로 만들어 주면서 관련된 javascript, stylesheet 를 연결해서 최소한도로 손을 안대도 코딩이 되게 할려는 목적으로 만들어서 편하기는 한데, 공부를 하는 차원에서는 이 태그 저 태그 붙어서 정신 없는 것보다 깔끔하게 내가 원하는 만큼의 HTML을 생성하는 것이 여러모로 편리할 때가 많습니다. 이러한 방법을 알아보기로 하지요.
http://uint32t.blogspot.com/2008/01/weblocks-starting-with-blank-slate.html 조금 예전 자료긴 하지만 충분히 참조할 만합니다.
자동으로 붙어 나오는 tag 는 page-wrapper , page-extra-top , page-extra-bottom 등 3개씩 붙어 나와서 보기 흉합니다. 이렇게 붙어 나오는 이유는
weblocks/src/page-template.lisp 안에 있는 render-page-body 함수 때문입니다.
보시면 weblocks-webapp 객체의 method 인 render-page-body 입니다. 태그를 붙이는 코드의 내용이 확인됩니다. 그렇다면 이 부분을 수정해서 재컴파일 하면 되는 것이냐.. 하는 것인데. 절대 그럴 필요 없습니다. lisp 의 막강한 기능인 함수 오버라이딩을 바로 해줄 수 있습니다.
weblocks 으로 만들어준 temp-cloud 라는 프로젝트에서 temp-cloud/src/init-session.lisp 파일을 열어줍니다. 최 상단에 있는 (in-package :temp-cloud) 구문 아래에 바로 오버라이딩 함수를 추가해줍니다.
단지 이렇게 해준 것만으로 깔끔하게 태그가 사라진 결과물을 볼 수 있습니다.
자동으로 만들어 주면서 관련된 javascript, stylesheet 를 연결해서 최소한도로 손을 안대도 코딩이 되게 할려는 목적으로 만들어서 편하기는 한데, 공부를 하는 차원에서는 이 태그 저 태그 붙어서 정신 없는 것보다 깔끔하게 내가 원하는 만큼의 HTML을 생성하는 것이 여러모로 편리할 때가 많습니다. 이러한 방법을 알아보기로 하지요.
http://uint32t.blogspot.com/2008/01/weblocks-starting-with-blank-slate.html 조금 예전 자료긴 하지만 충분히 참조할 만합니다.
자동으로 붙어 나오는 tag 는 page-wrapper , page-extra-top , page-extra-bottom 등 3개씩 붙어 나와서 보기 흉합니다. 이렇게 붙어 나오는 이유는
weblocks/src/page-template.lisp 안에 있는 render-page-body 함수 때문입니다.
(defmethod render-page-body ((app weblocks-webapp) body-string)
"Default page-body rendering method"
(with-html
(:div :class "page-wrapper"
(render-extra-tags "page-extra-top-" 3)
(htm (str body-string))
(render-extra-tags "page-extra-bottom-" 3))))
"Default page-body rendering method"
(with-html
(:div :class "page-wrapper"
(render-extra-tags "page-extra-top-" 3)
(htm (str body-string))
(render-extra-tags "page-extra-bottom-" 3))))
보시면 weblocks-webapp 객체의 method 인 render-page-body 입니다. 태그를 붙이는 코드의 내용이 확인됩니다. 그렇다면 이 부분을 수정해서 재컴파일 하면 되는 것이냐.. 하는 것인데. 절대 그럴 필요 없습니다. lisp 의 막강한 기능인 함수 오버라이딩을 바로 해줄 수 있습니다.
weblocks 으로 만들어준 temp-cloud 라는 프로젝트에서 temp-cloud/src/init-session.lisp 파일을 열어줍니다. 최 상단에 있는 (in-package :temp-cloud) 구문 아래에 바로 오버라이딩 함수를 추가해줍니다.
(in-package :temp-cloud)
(defmethod render-page-body ((app weblocks-webapp) body-string)
"Default page-body rendering method"
(with-html
(cl-who:htm (str body-string))))
(defmethod render-page-body ((app weblocks-webapp) body-string)
"Default page-body rendering method"
(with-html
(cl-who:htm (str body-string))))
단지 이렇게 해준 것만으로 깔끔하게 태그가 사라진 결과물을 볼 수 있습니다.