2012-11-12 2 views
7

저는 현재 Yesod 프레임 워크를 이용하고 있으며, 작은 CMS를 만드는 것이 좋은 프로젝트라고 생각합니다.defaultLayout 이외의 다른 레이아웃을 어떻게 구현합니까?

현재 나는 defaultLayout보다 다른 레이아웃을 구현하는 방법에 어려움을 겪고 있습니다. 예를 들어, CMS의 관리 영역에서는 adminLayout이 defaultLayout과 매우 다를 것입니다.

defaultLayout을 "복제"할 수있는 방법이 있습니까? - 아니면 다른 접근법을 취해야합니까?

또한, 나는 Yesod와 하스켈 모두 비교적 새로운 해요,하지만 그것을 :)를 통해 내 길을 씹는하고

편집 : 당신이 볼 수있는 바와 같이

, 나는 내 자신의 질문에 대답 끝났다. 이것은 누군가가 이것에 관해 갈 수있는 더 좋은 방법이 있다면, 나는 그들의 질문을 받아들이 기보다 더 행복 할 것이라고 말했다.

답변

13

슈퍼 멋진 신사 [1]의 도움을 받아 작은 출현이 발생했습니다. 미래 명의 Google이 같은 일을 찾고, 나는 그것을했다 간단하게 모든 설명합니다 :

import Yesod.Default.Config (appExtra) 
:

난 그냥 그것을에서 필요한 처리기에 넣고, 당신이 필요로하는 모든 다음과 같은 가져 오는 것입니다

다음은 defaultLayout를 사용하여 원하는만큼 당신이 그것을 사용할 수 있습니다

adminLayout :: Widget -> Handler Html 
adminLayout widget = do 
    master <- getYesod 
    mmsg <- getMessage 
    pc <- widgetToPageContent $ do 
     $(combineStylesheets 'StaticR 
      [ css_normalize_css 
      , css_bootstrap_css 
      ]) 
     $(combineScripts 'StaticR 
      [ js_jquery_js 
      , js_bootstrap_min_js 
      ]) 
     $(widgetFile "admin-layout") 
    giveUrlRenderer $(hamletFile "templates/admin-layout-wrapper.hamlet") 

로 adminLayout을 정의합니다. ... '나는 오랜 시간이 -.- 오류에서 자신이 장님보고 된 원인'이, 희망이 도움

[1] https://groups.google.com/forum/?fromgroups=#!topic/yesodweb/9KpfYBJBwJE