Erweiterung der Klasse cCategoryHelper()
Verfasst: Sa 4. Mai 2019, 11:06
Hallo, i bims.
Mir passt die cCategoryHelper-Klasse in manchen Dingen nicht.
https://api.contenido.org/con4911/class ... elper.html
1. Da wäre die Methode getSubCategories(), die außer subcategories noch jeden anderen Scheiß mit ins Array rauswirft, darunter so heikle Daten wie die Zugangsdaten der Datenbank. Die haben in einem Array für Unterkategorien nichts zu suchen.
Das Ergebnis ist viel zu aufgebläht ("Die Maus kreiste und gebar einen Berg").
Welche Möglichkeiten gäbe es da, dieses zu verändern?
Wie mir ein freundlicher Entwickler mal erklärte, kann man das nicht einfach ändern, aus Gründen der Kompatibilität.
Also bliebe nur eine neue Methode mit etwas anderem Namen.
2. Es gibt keine Möglichkeit, dass man für eine Navigation Levels übergeben kann. Bei der Methode getCategoryPath() gibt es den Parameter $startingLevel, aber nicht bei getSubCategories().
Die Tiefe $depth ist überall definiert aber kaum irgendwo der Anfang.
Was fehlt, ist der Parameter $startingLevel, der jedoch global für alle Kategoriehierachien gilt.
Es gibt verschiedene Module hier und Ansätze, wie man Menüs erst am einem bestimmten Level anzeigen lassen kann, aber so generell hatte das lediglich das "Kummer" Menü, das mit einer eigenen Klasse arbeitet (ja, es läuft auch jetzt noch mit PHP 7.x und Con 4.9 und sicher auch 4.10) und somit das "Wissen" in der Klasse hat, welcher Menübaum gerade geöffnet ist.
Das Kummer-Menü lässt sich splitten, die navigation_main nicht.
Nehme ich die navigation_main einfach zweimal, listet sie auch zweimal das gleiche Menü auf.
Theoretisch nicht grundsätzlich falsch, aber es fehlen die Einstellungen, wie man es splitten könnte und den Startlevel übergibt.
Hier wäre die categoryHelper Klasse wieder gefragt.
Diese hat in der Methode getsubcategories jedoch keinerlei Bezug zum Level.
Der wird erst durch eine extra Methode getCategoryLevel() geliefert, die nichts wesentlich anderes tut als den Level aus der Tabelle con_cat_tree auszulesen.
Sinnvoll wäre vielleicht eine interne Verknüpfung der beiden Methoden innerhalb der Klasse, oder?
Wegen der Kompatibilität sollte das eher gehen, wenn die Methode die bisherigen Daten weiter so ausliefert wie gehabt. Lediglich durch zusätzliche Parameter (die einen Default Wert bekommen könnten), sollte die Methode erweitert werden.
Vielleicht ist das alles zu umständlich und es wäre besser, eine neue Kategorie-Klasse aufzubauen?
Mir passt die cCategoryHelper-Klasse in manchen Dingen nicht.
https://api.contenido.org/con4911/class ... elper.html
1. Da wäre die Methode getSubCategories(), die außer subcategories noch jeden anderen Scheiß mit ins Array rauswirft, darunter so heikle Daten wie die Zugangsdaten der Datenbank. Die haben in einem Array für Unterkategorien nichts zu suchen.
Das Ergebnis ist viel zu aufgebläht ("Die Maus kreiste und gebar einen Berg").
Welche Möglichkeiten gäbe es da, dieses zu verändern?
Wie mir ein freundlicher Entwickler mal erklärte, kann man das nicht einfach ändern, aus Gründen der Kompatibilität.
Also bliebe nur eine neue Methode mit etwas anderem Namen.
2. Es gibt keine Möglichkeit, dass man für eine Navigation Levels übergeben kann. Bei der Methode getCategoryPath() gibt es den Parameter $startingLevel, aber nicht bei getSubCategories().
Die Tiefe $depth ist überall definiert aber kaum irgendwo der Anfang.
Was fehlt, ist der Parameter $startingLevel, der jedoch global für alle Kategoriehierachien gilt.
Es gibt verschiedene Module hier und Ansätze, wie man Menüs erst am einem bestimmten Level anzeigen lassen kann, aber so generell hatte das lediglich das "Kummer" Menü, das mit einer eigenen Klasse arbeitet (ja, es läuft auch jetzt noch mit PHP 7.x und Con 4.9 und sicher auch 4.10) und somit das "Wissen" in der Klasse hat, welcher Menübaum gerade geöffnet ist.
Das Kummer-Menü lässt sich splitten, die navigation_main nicht.
Nehme ich die navigation_main einfach zweimal, listet sie auch zweimal das gleiche Menü auf.
Theoretisch nicht grundsätzlich falsch, aber es fehlen die Einstellungen, wie man es splitten könnte und den Startlevel übergibt.
Hier wäre die categoryHelper Klasse wieder gefragt.
Diese hat in der Methode getsubcategories jedoch keinerlei Bezug zum Level.
Der wird erst durch eine extra Methode getCategoryLevel() geliefert, die nichts wesentlich anderes tut als den Level aus der Tabelle con_cat_tree auszulesen.
Sinnvoll wäre vielleicht eine interne Verknüpfung der beiden Methoden innerhalb der Klasse, oder?
Wegen der Kompatibilität sollte das eher gehen, wenn die Methode die bisherigen Daten weiter so ausliefert wie gehabt. Lediglich durch zusätzliche Parameter (die einen Default Wert bekommen könnten), sollte die Methode erweitert werden.
Vielleicht ist das alles zu umständlich und es wäre besser, eine neue Kategorie-Klasse aufzubauen?