Próbowałem dodać w liście wyświetlanej przez menu_3.tpl oraz pages_default.tpl liczbę stron/produktów, która jest podpięta pod dany punkt listy. Czyli inaczej mówiąc, na stronie przy danym linku w nawiasie wyświetla się ilość stron/produktów. Np Obuwie - sandały (25) - kozaki (10) - ciapy (21) - szpilki (1)
i nie chodzi mi o ilości magazynowe, tylko ile stron/produktów podpiętych jest do danej kategorii. Ponieważ u mnie jeden produkt = jedna strona, dlatego piszę produkt/strona. Wszystko jedno czy liczyłbym strony czy produkty. Tylko że w obrębie strony zawsze policzy jeden produkt...
W pliku pages.php jest funkcja: function listSubpages( $iPage, $sFile, $iType ), która zawiera zmienną $iCount = count( $this->aPagesChildrens[$iPage] ). Jak tą zmienną przekazuję na stronę, to wyświetla mi ilość stron/produktów w bieżącej kategorii, dla powyższego przykładu:
(bo są 4 podstrony strony "Obuwie"). W jaki sposób pobrać informację o ilości stron sięgając poziom niżej? Czy tu przypadkiem nie trzeba wywołać funkcji listSubpages w samej sobie?
Zrobiłem taką funkcję w pages.php function countSubpages( $dana ){ if( isset( $this->aPagesChildrens[$dana] ) ){ $iCount = count( $this->aPagesChildrens[$dana] ); $this->$iCount; } }
Próbuję się do tej funkcji odwołać w pętli funkcji listSubpages.
ale niestety, za mało umiem i wiem, żeby wiedzieć, co przekazać do tej mojej funkcji. Jak skonstruować zmienną niosącą informację o podstronie danej strony wyliczonej przez zmienną $i, i przekazać ją do funkcji countSubpages?
Nie wiem czy to dobry trop, ale nic innego sensownego nie przychodzi mi już do głowy. Poproszę o jakiś namiar, podpowiedź. Pozdrawiam!
Działa pod wersją 3.7, jednak pojawia się drobny problem (w wersji 4.0 też jest) gdy do strony nie są podpięte produkty. Wywala komunikat "Notice: Undefined index: 19 in C:\www\content\www\core\pages.php on line 432 ", gdzie index jest numerem ID strony, do której nie jest podpięty żaden produkt. Poniżej zaznaczyłem linię 432. Generalnie to działa i nawet nie jest tak bardzo uciążliwe, ale nie wiem do końca jak zrobić wyjątek na sytuację, gdy produktu brak w kategorii, żeby nie wyrzucało komunikatów.
hmmm, a nie machnąłeś się z numerem linii? Bo mi pomogła zmiana w linijce poniżej. Zamieniłem: $this->aPages[$iPage]['iProductsCount'] += $this->mData['aPagesProducts'][$iPageSubpage]; na: $this->aPages[$iPage]['iProductsCount']+=isset($this->mData['aPagesProducts'][$iPageSubpage])? 36;this->mData['aPagesProducts'][$iPageSubpage]:0;
Dorzucę jeszcze tylko jeden drobiazg do tego plugina. Gdy w bazie nie ma wogóle produktów, to wyrzuca komunikat: Warning: Invalid argument supplied for foreach() in C:\www\content\www\core\pages.php on line 393 To chodzi o tą funkcję:
public function definePagesProductsCount( ){ $oProduct = Products::getInstance( );