2016-06-22 11 views
1

Innerhalb eines Blocks wäre es sinnvoll, auf die aufrufende Seite, dh den Kontext, zugreifen zu können, um Filterbereiche auf alle Datensammlungen anzuwenden, die ich anzeigen möchte in meinem Block.Zugriff auf aktuelle Seite innerhalb eines Blocks innerhalb eines StreamFields

Hier ist eine Blockvorlage, die ich habe:

<div class="fooblock__items"> 
    {% foo_tag calling_page=??? %} 
</div> 

Wie Sie sehen können, ich mag die aufrufende Seite auf die benutzerdefinierten Tags senden genannt foo_tag so kann ich den anruf Seitenbezeichnerliste in meinem Tag Logik verwenden:

Wie kann ich in meiner Blockvorlage auf das aufrufende Seitenmodell zugreifen?

+0

diese Quellen von Informationen gefunden, könnte mir helfen, noch nicht sicher ... https://github.com/ Torchbox/Bachstelze/Themen/1743 # issuecomment-143593450 https://github.com/torchbox/wagtail/issues/1743#issuecomment-225080709 https://gist.github.com/mgd020/d841f8016024707b11b490b82ec648f0 –

+1

Nur um zu überprüfen - Sie sprechen von einem Block in einem StreamField (mit einer eigenen Vorlage, die als Teil der Blockdefinition zugewiesen ist), ja? – gasman

+0

Ja, das stimmt. Ich sollte das zur Frage hinzufügen, danke –

Antwort

1

Dies ist mit der aktuellen Methode zum Rendern von Blöcken über {{ ... }} Tags nicht möglich, da Django den Kontext zu diesem Zeitpunkt nicht weitergibt. (Im Wesentlichen rendern Sie eine feste HTML-Darstellung des Blocks, die nichts über die aufrufende Seite weiß.) Die einzige Problemumgehung besteht darin, die Verwendung von Blockvorlagen für Objekte zu vermeiden, die Zugriff auf den äußeren Kontext benötigen die Stream-Werte stattdessen in der äußeren Vorlage.

Es gibt einen Vorschlag läuft ein {% include_block %} Template-Tag einzuführen, die diese Adresse würde: https://github.com/torchbox/wagtail/issues/1743

+0

Danke @gasman für das Aufräumen. Ich habe getan, was Sie vorgeschlagen, es sieht in etwa so aus: https://gist.github.com/dwickstrom/1b8613b6e02d165c0a326731e53785dd –