2017-11-27 3 views
0

Ich möchte einige Hauptmenüpunkte haben, die nicht anklickbar sind, aber ihre Kinder sind im Dropdown-Menü und anklickbar.Nicht klickbare Menüelemente in Wagtail

Ich stelle mir einen Ansatz als eine besondere Art von Modell sein, das ist:

  • Eltern auf ein paar Seiten
  • unzugänglich selbst

Oder kann eleganteren Weg, es zu tun Ich vermute nicht?

+0

Hallo - ist dies in Bachstelze Admin? Oder Ihr öffentliches Frontend? Wenn es das Frontend ist - was ist Ihr CSS-Framework? –

+0

Dies ist ein öffentliches Frontend. Ich habe keine Ahnung für den Moment, das ist nicht mein Teil. – miric

+0

ok, könnte ein bisschen mehr Informationen benötigen, um eine konstruktive Antwort zu geben, sorry, wie der Template-Code, um das Menü zu rendern. –

Antwort

0

Wie Sie erwähnt haben, verwenden Sie den Beispielcode von here, dies ist eher eine Bootstrap-Frage, aber hier ist eine mögliche Lösung.

Gegen Ende des <nav> Elements haben Sie Ihren Container, der die Hauptmenüpunkte enthält.

<div class="container"> 
    <div class="collapse navbar-collapse" id="navbar-collapse-3"> 
    <ul class="nav navbar-nav navbar-left"> 
     {% for menuitem in menuitems %} 
     <li class="{% if menuitem.active %}active{% endif %}"> 
      {% if menuitem.show_dropdown %} 
      <a href="{{ menuitem.url }}">{{ menuitem.title }} 
       <span class="hidden-lg hidden-md hidden-sm visible-xs-inline"> 
       <span class="glyphicon glyphicon-chevron-right"></span> 
       </span> 
      </a> 
      {% top_menu_children parent=menuitem %} 
      {% else %} 
      <a href="{% pageurl menuitem %}">{{ menuitem.title }}</a> 
      {% endif %} 
     </li> 
     {% endfor %} 
    </ul> 
    </div> 
</div> 

Um die Menüelemente nicht anklickbar zu machen, passen Sie das href-Attribut für den Menüeintrag an. Anstatt {{ menuitem.url }} zu sein, machen Sie es #. Dadurch wird sichergestellt, dass das Menü-Dropdown immer noch funktioniert, aber es gibt keine URL, um Personen auf die "Eltern" -Seite zu bringen.

 <a href="#">{{ menuitem.title }} 
      <span class="hidden-lg hidden-md hidden-sm visible-xs-inline"> 
      <span class="glyphicon glyphicon-chevron-right"></span> 
      </span> 
     </a> 

Siehe auch: Boostrap 3 Navbar Docs

+0

Vielen Dank für Ihre Aber ich habe alle überflüssigen Container und Bootstrap-Stile eliminiert, um Framework-neutralen Code zu haben. Ich versuche, einen anderen Ansatz zu entwickeln. Ich habe ein NoopPage-Modell erstellt, das 404 selbst auslöst, aber Unterseiten enthalten kann. Ich habe dort BooleanField 'noop' hinzugefügt, um dieses Attribut in der Vorlage zu lesen, um die Darstellung von href für Links mit NoopPage hinter ihnen zu verhindern. Ich vermute, dass es Elternseiten mit untergeordneten Unterseiten geben kann, die auch anklickbar/zugänglich sein sollten. Obwohl dieses 'noop' Attribut in der top_menu_children Vorlage aus irgendeinem Grund nicht sichtbar ist. – miric

+0

Haben Sie versucht, die spezifische Seite mit self.specific oder page.spezial zu erhalten? Das Noop-Attribut ist nur für die spezifische Instanz verfügbar. –

+0

Ich eliminierte 'noop' Attribut und relay auf seo_title Feld, das mit 'Noop' Zeichenfolge für diese (Noop) Seite beim Speichern standardmäßig gefüllt ist. Es funktioniert für den Moment. Ich werde sehen, ob es gut mit weiteren Front-End spielen wird. get_children() gibt das Seitenmodell selbst zurück, nicht die von ihm geerbten Seiten. Deshalb war meine .noop nicht verfügbar. – miric