Wagtail MultiSite - 交叉发布内容

2024-01-10

我目前正在通过单个 Wagtail 安装构建两个站点。这些网站适用于一家公司及其姊妹公司,内容有一些重叠。理想情况下,我们不想将相同的内容发布两次。特别是,我们在两个网站上都有一个活动页面,可能有与两家公司相关的活动。

问题是 Wagtail 页面一次只能存在于树中的一个位置。我考虑过创建一个“MirroredEventPage”模型,其中只有一个原始 EventPage 模型的外键字段,尽管这种方法在编写 EventIndex 页面和重用模板时存在问题。

我还考虑过将事件创建为普通 Django 模型,但这也不理想。

有没有人遇到过类似的问题并找到了好的解决方案?


一个想法是混合使用 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

您需要确保这些字段在页面编辑中不可编辑,但在代码片段下可编辑。然后你只需让事情与你的信号同步,有点混乱,但在管理中给你一个实际的“页面”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wagtail MultiSite - 交叉发布内容 的相关文章

随机推荐