Yesod 子站点中的占位符

Place holders in Yesod subsite

假设我有一个子站点 Profile 可以显示用户的个人资料(包括他的网站、他的狗的名字和所有这些),还有另一个管理友谊的子站点 Social用户之间。

我希望在 Michael 的个人资料页面上,我可以单击 "become friend with Michael"(因为他构建了很棒的框架;))。关于封装,这段代码我既不能放在Profile里,也不能放在Social里。所以我想到了 word press 以及我们必须在主题中放置占位符的能力,我们可以在其中放置我们想要的任何小部件。

这使我得出以下结论:

instance  YesodProfile App where
        <random stuff>
        placeholder userId = [ becomeFriendWidget userId, likeThisGuyWidget userId]

然后 Profile 子站点必须在配置文件页面的某处显示给定的小部件。

它看起来是一个好的解决方案吗?是否存在此类问题的另一种 "standard" 解决方案?

对我来说这似乎是一个很好的解决方案。它与 yesod-auth 执行其插件功能的方式并没有太大的不同,因此存在一定程度的现有技术。