2012-11-12 14 views
7

Obecnie gram z ramą Yesod i pomyślałem, że zrobienie małego CMS byłoby dobrym projektem.Jak zaimplementować układy inne niż domyślneLayout

W tej chwili walczę o to, jak można wdrożyć inny układ niż defaultLayout. Powiedzmy, że dla obszaru administracyjnego CMS miałbyś adminLayout, który byłby bardzo różny od defaultLayout.

Czy istnieje sposób, aby "zreplikować" defaultLayout i jak? - czy powinienem przyjąć inne podejście niż to?

Również jestem całkiem nowy, zarówno jesod i Haskell, ale jestem żucia moją drogę przez to :)

EDIT:

Jak widać, skończyło się odpowiedzi na moje własne pytanie. To powiedziawszy, jeśli ktoś ma lepszy sposób, aby to osiągnąć, będę bardziej niż szczęśliwy, aby zaakceptować ich pytanie.

Odpowiedz

13

Po udzieleniu pomocy od bardzo miłego dżentelmena [1] nastąpiło małe objawienie. Dla przyszłych Googlersi chce zrobić to samo, pokrótce wyjaśnić wszystko zajęło:

po prostu umieścić to w procedurze obsługi, że muszę go, co potrzebne jest, aby importować następujące:

import Yesod.Default.Config (appExtra) 

a następnie zdefiniować adminLayout jak

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") 

wtedy można go używać jak chcesz używać defaultLayout. Mam nadzieję, że to pomaga, ponieważ przez długi czas uważałem siebie za niewidomych na błędy ... "...

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