/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); if (!$pageCollection->has('index')) { $filteredPages = $pageCollection->filter(function (Page $page) { return $page->getNodeType() === null && $page->getSection() == $this->config->get('site.paginate.homepage.section') && !empty($page->getBody()); }); $pages = $filteredPages->sortByDate()->toArray(); /* @var $page Page */ $page = (new Page())->setId('index')->setNodeType(NodeType::HOMEPAGE)->setPathname(Page::urlize(''))->setTitle('Home')->setVariable('pages', $pages)->setVariable('menu', ['main' => ['weight' => 1]]); $generatedPages->add($page); } return $generatedPages; }
/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); $filteredPages = $pageCollection->filter(function (Page $page) { return false !== $page->getTitle(); }); /* @var $page Page */ foreach ($filteredPages as $page) { $alteredPage = clone $page; $alteredPage->setTitle(strtoupper($page->getTitle())); $generatedPages->add($alteredPage); } return $generatedPages; }
/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); $filteredPages = $pageCollection->filter(function (Page $page) { return in_array($page->getNodeType(), [NodeType::HOMEPAGE, NodeType::SECTION]); }); /* @var $page Page */ foreach ($filteredPages as $page) { if ($this->config->get('site.paginate.disabled')) { return $generatedPages; } $paginateMax = intval($this->config->get('site.paginate.max')); $paginatePath = $this->config->get('site.paginate.path'); $pages = $page->getVariable('pages'); $path = $page->getPathname(); // paginate if (count($pages) > $paginateMax) { $paginateCount = ceil(count($pages) / $paginateMax); for ($i = 0; $i < $paginateCount; $i++) { $pagesInPagination = array_slice($pages, $i * $paginateMax, $paginateMax); $alteredPage = clone $page; // first page if ($i == 0) { $alteredPage->setId(Page::urlize(sprintf('%s/index', $path)))->setPathname(Page::urlize(sprintf('%s', $path)))->setVariable('aliases', [sprintf('%s/%s/%s', $path, $paginatePath, 1)]); } else { $alteredPage->setId(Page::urlize(sprintf('%s/%s/%s/index', $path, $paginatePath, $i + 1)))->setPathname(Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i + 1)))->unVariable('menu'); } // pagination $pagination = ['pages' => $pagesInPagination]; if ($i > 0) { $pagination += ['prev' => Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i))]; } if ($i < $paginateCount - 1) { $pagination += ['next' => Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i + 2))]; } $alteredPage->setVariable('pagination', $pagination); $generatedPages->add($alteredPage); } } } return $generatedPages; }
/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); $filteredPages = $pageCollection->filter(function (Page $page) { return false !== $page->getVariable('external'); }); /* @var $page Page */ foreach ($filteredPages as $page) { try { $pageContent = file_get_contents($page->getVariable('external'), false); $html = (new Converter())->convertBody($pageContent); $page->setHtml($html); $generatedPages->add($page); } catch (\Exception $e) { $error = sprintf('Cannot get contents from %s', $page->getVariable('external')); $message = sprintf("> Unable to generate '%s': %s", $page->getId(), $error); call_user_func_array($messageCallback, ['GENERATE_PROGRESS', $message]); } } return $generatedPages; }