一个想法是混合使用 Wagtail Snippets 和RoutablePageMixin
在您的活动索引页上。
1. 制作事件片段
将“活动”页面的共享内容制作成 Wagtail 片段。您将失去访问更改版本的能力,但获得跨站点共享的能力。
http://docs.wagtail.io/en/v1.13/topics/snippets.html http://docs.wagtail.io/en/v1.13/topics/snippets.html
2. 更新您的事件索引页面模型以使用 RoutablePageMixin
http://docs.wagtail.io/en/v1.13/reference/contrib/routablepage.html http://docs.wagtail.io/en/v1.13/reference/contrib/routablepage.html
然后,您可以挂钩任何事件索引页面的 URL 调用(如果它们具有类似内容)mydomain.com/events/123-event-name-as-slug
。这可以加载自定义模板(可以共享或不共享,具体取决于站点),以及通过上下文发送的事件索引和事件片段。
这些 URL 将是它们自己唯一的 URL,但实际上它们后面没有页面。请记住考虑您的 SEO 影响,确保管理编辑可以管理片段上的元描述等内容(或研究如何自动传播)。
您还可以挂接 Wagtail 按钮(称为 Wagtail Userbar),这样当编辑者单击前端 Wagtail 按钮并单击“编辑事件”时,可以直接进入管理中的片段编辑页面。
http://docs.wagtail.io/en/v1.13/reference/hooks.html#construct-wagtail-userbar http://docs.wagtail.io/en/v1.13/reference/hooks.html#construct-wagtail-userbar
3. 更新事件索引列表
如果您不想在两个站点上发生某些事件,您可以为您操作的两个站点添加复选框(默认情况下均已勾选)。这意味着事件索引页面将仅显示与该站点相关的事件。
您可以通过重写页面模型上的服务方法来完成此操作。
注意:在此示例中,您并未将每个事件显式链接到每个站点的事件索引页。您只需加载相关事件的查询并将其传递到事件索引模板即可。
4. 更复杂的集成
如果您确实想要每个站点下的每个“事件”都有一个单独的页面,您可以在片段创建/编辑/删除上创建自定义信号。
鹡鸰信号简介:http://docs.wagtail.io/en/v1.13/reference/signals.html http://docs.wagtail.io/en/v1.13/reference/signals.html
您需要确保这些字段在页面编辑中不可编辑,但在代码片段下可编辑。然后你只需让事情与你的信号同步,有点混乱,但在管理中给你一个实际的“页面”。