/** * Retrieve a set of products, based on the given parameters. * Add Parent Group Pages to diplay within list. * * Note that you can hide the "top level" * @return DataObjectSet | Null */ public function currentFinalProducts($alternativeSort = null) { $products = parent::currentFinalProducts($alternativeSort); if ($products) { foreach ($products as $product) { $product->ParentSegments = null; if ($this->NumberOfLevelsToHide < 20) { $segmentArray = array(); $item = $product; while ($item && $item->ParentID) { $item = ProductGroup::get()->byID($item->ParentID); if ($item) { $segmentArray[] = array("URLSegment" => $item->URLSegment, "ID" => $item->ID, "ClassName" => $item->ClassName, "Title" => $item->Title, "Link" => $item->Link()); } } if (count($segmentArray)) { $product->ParentSegments = new ArrayList(); $segmentArray = array_reverse($segmentArray); foreach ($segmentArray as $key => $segment) { if ($key > $this->NumberOfLevelsToHide) { $product->ParentSegments->push(new ArrayData($segment)); } } } } } } return $products; }