raczej nie jest to rozwiazanie z oryginalnego, tylko jakiegos dogranego... niewiadomego pochodzenia

wyglada na to, ze ktos zmienil sobie klase getProduct zeby pobieral po pozycji produktu, ale to wymagalo raczej zmiany kontrolera. to nie jest standardowe rozwiazanie. w standardzie wyglada to tak:
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb :

);
czyli analizujac sam nawias, $nb - czyli wartosc wpisana w konfiguracji modulu jako ilosc wyswietlana (gdzie sie zapisuje to juz malo wazne, ale tak, wlasnie we spomnianej lokalizacji) i dalej po '?' jezlei nie istnieje ta wartosc (puste pole w konfiguracji to bierz domyslna wartosc '8'. ale tak czy tak musi byc tutaj cyfra a nie string, jak w twoim wypadku.
analizujac dalej... jezeli chcesz wybieraz z wiekszej ilsoci to musisz tutaj dac wybor z wiekszej ilosci, czyli wywalic w tym miejscu calkiem $nb i dac wartosc do analizy przez getProduct(), a ilosc $nb ustalasz w koncowej fazie shufle.
mowiac gotowcem: zamiast ($nb ? $nb :

dajesz stala wartosc np. 500 i dopiero z tych 500 poszuflowanych wybierasz ilosc $nb w array_splice()