2016-07-12 7 views
1

Ich mache eine benutzerdefinierte Vorlage für den Concrete5 Autonav-Block und frage mich, ob es eine Möglichkeit gibt, die Gesamtzahl der Nachkommen (Kinder, Enkel usw.) für jedes einzelne Nav zu erhalten Artikel? Zum Beispiel erhalten Nachkomme für die Top-Level-Navigation, die Gesamtzahl der Seiten zu zeigen, die Nachkommen unter jeweils:Concrete5 Autonav Block Anzahl der Nachfahren

Tutorials (33) 
Freebies (25) 
Lesson Plans (10) 

Der Autonav Block eine flache Anordnung von Objekten liefert (was jede Seite), und jedes Objekt eine ID für seine Eltern, aber ich kann nicht meinen Kopf herumschleichen und ein Array für die Multilevel-Navigation erstellen.

Bietet Concrete5 eine Methode dafür, oder muss ich herausfinden, wie man eine Schleife erstellt, die diese Informationen extrahiert?

ich im Wesentlichen für die Funktionalität dieser threadsuchen (leider beantworten sie die Frage nicht)

Antwort

1

Wichtig!

Vergessen Sie nicht, dass es den Inhalt von

/concrete/blocks/autonav/

in

/application/blocks/autonav/ (Erstellen Sie die Ordner blocks und autonav falls erforderlich)

und tun, um diese change zu kopieren. Sonst sind sie beim nächsten Systemupdate weg!


Als $navItem hat die folgende Eigenschaft:

$ navItem-> cid: Sammlung ID der Seite dieses nav Artikel stellt

ein Verfahren zum Controller hinzufügen (Dies ist ein Quickie obwohl):

public function getChildPagesFromID($cID) 
{ 
    $db = Database::connection(); 
    $r = $db->query(
      "select cID from Pages where cParentID = ? order by cDisplayOrder asc", 
      array($cID)); 
    $pages = array(); 
    while ($row = $r->fetchRow()) { 
     $pages[] = Page::getByID($row['cID'], 'ACTIVE'); 
    } 

    return sizeof($pages); 
} 

Dann können Sie diese in den view.php tun:

// Existing code: 
if (count($navItems) > 0) { 
    echo '<ul class="nav">'; //opens the top-level menu 

    foreach ($navItems as $ni) { 
     echo '<li class="' . $ni->classes . '">'; 

Fügen Sie diese irgendwo in dem <li> Tag:

echo $controller->getChildPagesFromID($ni->cID); 

Die $ni->cObj->getNumChildren(); als auch im Forum bekommen Systemseiten vorgeschlagen. Ich glaube nicht, dass es das ist, was du willst.


Wie für Ihren Kommentar "scheint in Systemseite zu bringen, zu", dass, wenn Sie sich entschließen, zu zeigen, sie in Ihrem Auto-Nav Block abhängt:

enter image description here

+0

mich korrigieren, wenn ich m falsch, aber es scheint, dass nur die Anzahl der untergeordneten Seiten für die aktuelle Seite generiert wird, nicht für jede Seite auf oberster Ebene der Navigation? EDIT: nur getestet und es ist für die aktuelle Seite und scheint auch System-Seiten zu bringen - sorry, vielleicht war meine Frage nicht klar: Ich frage mich, ob es eine Möglichkeit gibt, alle Kinderseiten von der obersten Ebene zu generieren. – jonkratz

+0

Ah ich sehe, warte ich werde das testen –

+0

Bearbeitete meine Antwort –

Verwandte Themen