Collapsible Category Tree - unknown method 'getItems'

  • Hi zusammen,

    ich möchte die Kategorien in den Boxen auf - und zuklappbar machen und wollte dazu "boxCategories.tpl" überschreiben. Idee war das ganze in <details> und <summary> tags einzubetten, für zwei bis drei Ebenen zu iterieren und anschließend per CSS aufzuhübschen. Allerdings stoße ich auf den Error "unknown method 'getItems'" sobald ich die Child Elemente einer Kategorie verwende. Während {$subcategoryItem->getTitle()} problemlos funktioniert, führen {$subcategoryItem->getItems()} und {$subcategoryItem->getDepth()} zu einem Error (siehe Code unten Zeile 14 - 21).

    Wie kann ich für Child Elemente einer Kategorie auf die entsprechenden Methoden zugreifen bzw. gibt es eine einfacherer Möglichkeit die Kategorien klappbar zu machen?

    Würde mich über Input und Hilfe freuen :)

  • Hallo,

    wenn du im Hintergrund eine PHP-Klasse von CategoryNode verwendest, solltest du nicht $categoryItem->getAllChildCategories() verwenden. Du kannst $categoryItem->getChildren() verwenden damit du weiterhin ein CategoryNode Objekt hast.

    WCF/wcfsetup/install/files/lib/data/category/CategoryNode.class.php at 6.0 · WoltLab/WCF
    WoltLab Suite Core (previously WoltLab Community Framework) - WoltLab/WCF
    github.com
    WCF/wcfsetup/install/files/lib/data/TObjectTreeNode.class.php at 6.0 · WoltLab/WCF
    WoltLab Suite Core (previously WoltLab Community Framework) - WoltLab/WCF
    github.com
  • Vielen Dank für die Antwort! :) Das Ändern zu getChildren() wirft leider einen anderen Error aus: "Undefined array key 2" - $categoryItem ist scheinbar kein TObjectTreeNode sondern kann nur auf die Funktionen von Category und CategoryNode zugreifen. Wie kann ich das ändern?

    Heißt durch getAllChildCategories() bzw. getChildCategories() wird kein CategoryNode sondern nur eine Category zurück gegeben. Lässt sich per categoryID aus dem Category Objekt nicht auch ein CategoryNode erstellen?

    Bitte entschuldige die vielen Fragen, das ist mein erstes Plugin was ich selbst für das WCF schreibe.

  • Es reicht scheinbar aus beim zweiten foreach direkt über $categoryItem zu iterieren um CategoryNodes zu erhalten ohne dass dazu getChildren() o.ä. notwendig ist. Mit {foreach from=$categoryItem item=subcategoryItem} kann ich auf getItem und getDepth zugreifen.

    Cyperghost danke für den Denkanstoß!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!