2017-07-06 27 views
2

我目前正在建造兩個站點的單個W installation安裝。這些網站是針對一家公司的,它是姊妹公司,內容有一些重疊。理想情況下,我們不希望兩次發佈相同的內容。特別是,我們在這兩個網站上都有一個活動頁面,並且可能會有與兩家公司相關的事件。W Multi MultiSite - 交叉發帖內容

問題是W page頁面只能一次存在於樹中的一個地方。我曾考慮創建一個只有一個外鍵字段的「MirroredEventPage」模型,儘管這種方法在編寫EventIndex頁面和重用模板方面存在問題。

我也考慮創建事件作爲香草Django模型,這是不理想的。

有沒有人有類似的問題,並找到一個很好的解決方案?

回答

0

一個想法是在活動索引頁上使用W Sn片段和RoutablePageMixin的混合。

1.做一個活動預覽可用

讓你的活動頁面的共享內容到鶺鴒片段。您將失去訪問更改版本的能力,但獲得跨站點共享的能力。

http://docs.wagtail.io/en/v1.13/topics/snippets.html

2.更新活動指數頁面模型使用RoutablePageMixin

http://docs.wagtail.io/en/v1.13/reference/contrib/routablepage.html

然後可以掛接到URL呼籲任何事件的索引頁,如果他們有像mydomain.com/events/123-event-name-as-slug。這可以加載自定義模板(可以共享或不共享,具體取決於網站),事件索引和通過上下文發送的事件代碼段。

這些網址將是他們自己的唯一網址,但實際上並沒有網頁。請記住考慮您的SEO影響,確保管理員編輯可以管理片段上的元描述等內容(或者通過如何自動傳播)。

您也可以掛入W button按鈕(稱爲W User用戶欄),以便當編輯點擊前端W button按鈕並點擊'編輯活動'時,它可以直接將它們帶到管理員的片段編輯頁面。

http://docs.wagtail.io/en/v1.13/reference/hooks.html#construct-wagtail-userbar

3.更新活動指數上市

如果有您不希望這兩個網站上的一些事件,你可以添加複選框(默認情況下都打勾)爲您操作兩個網站。這意味着事件索引頁面將僅顯示與該網站相關的事件。

您可以通過覆蓋頁面模型上的serve方法來做到這一點。

注意:在本例中,您並未明確地將每個事件鏈接到每個站點的事件索引頁面。您只需加載相關事件的查詢並將其傳遞給事件索引模板。

4.更復雜的集成

如果你真的想爲每個站點下的每個「事件」的個人頁面,你可以創建一個片段自定義信號創建/修改/刪除。

簡介鶺鴒信號: http://docs.wagtail.io/en/v1.13/reference/signals.html

你會想,以確保字段在頁面編輯不可編輯,但會在片段編輯。然後,您只需讓信號與您的信號保持同步,有點麻煩,但會在管理員中爲您提供實際的「頁面」。

+0

RoutablePageMixin就是我以前的樣子,非常感謝你的回覆。我沒有使用片段,因爲我想在我的活動中保留Wagtail頁面功能。最後,我創建了一個沒有網站的根頁面,我可以在其中創建常見的內容,如事件。這些事件與站點模型具有m2m的關係,因此我可以輕鬆選擇事件適用的站點。最後,我有一個EventsIndex頁面,它使用RoutablePageMixin爲公共區域的頁面提供服務。 –

+0

很高興這有助於:) –