Angenommen, Sie haben die folgenden Seiten in einem Menübaum:
- Projekte
- Projekt Eins
- Projekt Zwei
- Projekt Drei
Ich suche nach einer Möglichkeit, eine Ansicht zu erstellen, die in die Projektseite (übergeordnete Seite) eingebettet wird und ein Bild, einen Titel und einen Text (Zusammenfassung) von den untergeordneten Seiten anzeigt.
Die Beziehung zwischen Eltern und Kindern wird im Menübaum definiert.
Ich weiß, dass ich eine Knotenreferenz verwenden kann, aber das würde bedeuten, dass jedes Mal, wenn jemand eine Seite erstellt, diese die Menübeziehung und dann die Knotenreferenzbeziehung definieren müsste.
Ich weiß auch, dass ich einen anderen Inhaltstyp erstellen könnte, aber ich halte dies für übertrieben, da alle Inhaltsseiten gleich aussehen.
Antworten:
Eine Lösung besteht darin, Taxonomiebegriffe zu verwenden, um die Beziehungen zu definieren, und dann das Modul Taxonomiemenü zu verwenden, um diese Begriffsbeziehungen in Menüelemente zu übersetzen. Sie können dann das Modul "Benutzerdefinierte Seite" und das Modul " Kontext" verwenden, um Informationen und Bereiche auf allen Seiten zu steuern, wenn Sie keine Bedienfelder verwenden möchten.
quelle
Genau dies können Sie mit der Menüknoten-API und den Modulen " Menüknotenansichten" tun .
Erstellen Sie eine Ansicht mit dem gewünschten Inhaltstyp und wählen Sie einen Kontextfilter für "Menü: Menü-Link-ID" (dies ist nur verfügbar, wenn die obigen Module installiert sind).
Wählen Sie unter "Wenn der Filterwert nicht verfügbar ist" die Option "Standardwert bereitstellen" und dann "PHP-Code" aus.
Das folgende Snippet wird es tun, dann machen Sie einfach einen Block aus der Ansicht frei und Sie sind da:
quelle
menu_load_object(arg(1))
anstelle von verwendennode_load()
, um einige Kosten zu sparen. 2) Stellen Sie sicher, dass der Menüpunkt aus dem Menü stammt, mit dem Sie sich befassen. Im Moment kehren Sie nur den ersten zurück$mlid
. Innerhalb von foreach sollten Sie eine Bedingung hinzufügenif ($data->menu_name == 'my-menu')
, um dies zu beheben. und 3) Möglicherweise möchten Sie einen zweiten Filter hinzufügen, ummenu: hidden
nur Elemente zurückzugeben, die nicht ausgeblendet sind. Verwenden Sie dasselbe Snippet, geben Sie jedoch das$data->hidden;
anstelle des zurück$mlid
.Das Knotenhierarchie-Modul ermöglicht diese Art von Beziehung und bietet eine Ansichtenintegration.
quelle
Möglicherweise hat sich dies für D7 / Views 3 geändert, aber Sie benötigen kein PHP, um das gewünschte Verhalten zu erreichen:
voila. Es sollte nicht funktionieren , aber es funktioniert.
Es funktioniert problemlos nur mit Knoten, aber der Vorteil der Verwendung von Menüverknüpfungen gegenüber der Knotenhierarchie besteht darin, dass Sie nicht nur die Navigation um Knoten herum erstellen können. Sie können sogar externe Links in Ihre Ansicht aufnehmen.
quelle
Es gibt ein relativ neues Modul, das Views Menu Node Children Filter , genau das zu tun scheint, was Sie wollen:
quelle
Haben Sie darüber nachgedacht, die Knotenreferenz für diesen Zweck zu verwenden?
So können Sie ein ähnliches Ergebnis erzielen, wie Sie wahrscheinlich suchen.
quelle
Die Antwort von Emile ist richtig, aber ich musste den erwähnten PHP-Code in einen Kontextfilter vom Typ " Menu: Parent menu link id " einfügen .
quelle
Wenn Sie die Entitätsübersetzung verwenden und der Knoten an verschiedene Menüs angehängt ist, finden Sie hier eine Anpassung des Codes, der nach der aktuellen Sprache filtert. Sie müssen dies als PHP-Code für den Kontextfilter (Link-ID des übergeordneten Menüs) in Ihre Ansicht kopieren, wie in den anderen Antworten erläutert
quelle
Aus der Ausgabe-Warteschlange von Menu Node Views haben wir diese schöne Lösung:
Geben Sie den folgenden Code ein
quelle