7

私は現在、Yesod フレームワークをいじっていますが、小さな CMS を作成するのは良いプロジェクトだと思いました。

現時点では、defaultLayout 以外の別のレイアウトを実装する方法に苦労しています。たとえば、CMS の管理領域では、defaultLayout とは大きく異なる adminLayout を使用します。

defaultLayoutを「複製」する方法はありますか? -または、これとは別のアプローチを取る必要がありますか?

また、私はYesodとHaskellの両方にかなり慣れていませんが、それを噛み砕いています:)

編集:

ご覧のとおり、私は自分の質問に答えることになりました。これは、誰かがこれについてもっと良い方法を持っているなら、私は彼らの質問を喜んで受け入れるだろう.

4

1 に答える 1

13

とても素敵な紳士 [1] の助けを借りて、小さなひらめきが起こりました。同じことをやろうとしている将来のグーグル社員のために、必要なことをすべて簡単に説明します。

これを必要なハンドラーに入れただけです。必要なのは、次のものをインポートすることだけです。

import Yesod.Default.Config (appExtra)

次に、adminLayout を次のように定義します。

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

その後、defaultLayout を使用するのと同じように使用できます。これが役立つことを願っています。「私は長い間エラーを盲目的に見つめていたからです..-」 ...

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

于 2012-11-12T17:38:19.750 に答える