/** * @param string $alias * @param bool $addDefFields * @return array * @throws \Exception */ public function load($alias, $addDefFields = true) { $content = $this->readFile($alias); list($yaml, $segments) = $this->parseContent($content); $data = (array) Yaml::parse($yaml); if ($addDefFields) { $data['format'] = isset($data['format']) ? $data['format'] : pathinfo($alias, PATHINFO_EXTENSION); $data['date'] = isset($data['date']) ? $data['date'] : PathHelper::extractDateFromPath($alias); $data['path'] = isset($data['path']) ? $data['path'] : $alias; } return ['data' => $data, 'segments' => $segments]; }
/** * @param string $path * @return Collection */ public function build($path = null) { if (is_null($path)) { $path = $this->path; } $collection = $this->cache->get(__CLASS__); if ($collection === false) { $realpath = realpath($path); $collection = new Collection($this->blogRoute); if (is_readable($realpath)) { $loader = new FrontMatterLoader(); foreach (scandir($realpath, 1) as $filename) { if (in_array(substr($filename, 0, 1), ['.', '_'])) { continue; } $pathinfo = pathinfo($filename); if (!in_array($pathinfo['extension'], $this->extensions)) { continue; } $data = $loader->load($realpath . '/' . $filename); if (empty($data['modified'])) { $data['modified'] = date('c', filemtime($realpath . '/' . $filename)); } if (empty($data['date'])) { $data['date'] = PathHelper::extractDateFromPath($filename); } $data['path'] = '@post/' . $filename; $data['blogRoute'] = $this->blogRoute; $item = new Item($data); $collection->addItem($item); } } $this->cache->set(__CLASS__, $collection); } return $collection; }