public function getList(): \IvoPetkov\DataList
    {
        $cacheKey = 'blog_categories_list';
        if (!isset(Internal\Data::$cache[$cacheKey])) {
            $list = Internal\Data::getList('bearcms/blog/categories/category/');
            array_walk($list, function(&$value) {
                $value = $this->makeBlogCategoryFromRawData($value);
            });

            $structureData = Internal\Data::getValue('bearcms/blog/categories/structure.json');
            $structureData = $structureData === null ? [] : json_decode($structureData, true);
            $flattenStructureData = [];
            foreach ($structureData as $itemData) {
                $flattenStructureData[] = $itemData['id'];
            }
            $flattenStructureData = array_flip($flattenStructureData);
            usort($list, function($object1, $object2) use ($flattenStructureData) {
                return $flattenStructureData[$object1->id] - $flattenStructureData[$object2->id];
            });
            unset($flattenStructureData);
            Internal\Data::$cache[$cacheKey] = $list;
            unset($list);
        }
        return new \IvoPetkov\DataList(Internal\Data::$cache[$cacheKey]);
    }