/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); $sections = []; // collects sections /* @var $page Page */ foreach ($pageCollection as $page) { if ($page->getSection() != '') { $sections[$page->getSection()][] = $page; } } // adds node pages to collection if (count($sections) > 0) { $menuWeight = 100; foreach ($sections as $section => $pages) { if (!$pageCollection->has($section . '/index')) { usort($pages, 'PHPoole\\Util::sortByDate'); $page = (new Page())->setId(Page::urlize(sprintf('%s/index', $section)))->setPathname(Page::urlize(sprintf('%s', $section)))->setTitle(ucfirst($section))->setNodeType(NodeType::SECTION)->setVariable('pages', $pages)->setVariable('menu', ['main' => ['weight' => $menuWeight]]); $generatedPages->add($page); } $menuWeight += 10; } } return $generatedPages; }
/** * {@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; }
/** * {@inheritdoc} */ public function generate(PageCollection $pageCollection, \Closure $messageCallback) { $generatedPages = new PageCollection(); /* @var $page Page */ foreach ($pageCollection as $page) { $aliases = []; if ($page->hasVariable('aliases')) { $aliases = $page->getVariable('aliases'); } if ($page->hasVariable('alias')) { $aliases[] = $page->getVariable('alias'); } if (!empty($aliases)) { foreach ($aliases as $alias) { /* @var $aliasPage Page */ $aliasPage = (new Page())->setId($alias . '/redirect')->setPathname(Page::urlize($alias))->setTitle($alias)->setLayout('redirect.html')->setVariable('destination', $page->getPermalink()); $generatedPages->add($aliasPage); } } } return $generatedPages; }