Airship\Cabin\Hull\Blueprint\Blog::listBySeries PHP Method

listBySeries() public method

Return an array of the most $num recent posts, including URL and title
public listBySeries ( integer $seriesId, integer $num = 20, integer $offset ) : array
$seriesId integer
$num integer
$offset integer
return array
    public function listBySeries(int $seriesId, int $num = 20, int $offset = 0) : array
    {
        $items = $this->db->run('SELECT
                *
            FROM
                hull_blog_series_items
            WHERE
                parent = ?
            ORDER BY
                listorder ASC
            OFFSET ' . $offset . '
            LIMIT ' . $num, $seriesId);
        $series_items = [];
        foreach ($items as $item) {
            if ($item['post']) {
                try {
                    $row = $this->getBlogPostById((int) $item['post']);
                } catch (EmulatePageNotFound $ex) {
                    continue;
                }
                if (!empty($row)) {
                    $row['type'] = 'blogpost';
                    $series_items[] = $row;
                }
            } elseif ($item['series']) {
                $row = $this->getSeriesById((int) $item['series']);
                if (!empty($row)) {
                    $row['type'] = 'series';
                    $series_items[] = $row;
                }
            }
        }
        return $series_items;
    }

Usage Example

Beispiel #1
0
 /**
  * List all of the blog posts for a given year
  *
  * @route blog/series/{slug}/{page}
  * @param string $slug
  * @param string $page
  */
 public function listBySeries(string $slug = '', string $page = '')
 {
     list($offset, $limit) = $this->getOffsetAndLimit($page);
     $series = $this->blog->getSeriesInfo($slug);
     $count = $this->blog->countBySeries((int) $series['seriesid']);
     $series_items = $this->blog->listBySeries((int) $series['seriesid'], $limit, $offset);
     $args = ['series' => $series, 'pageTitle' => $series['name'], 'series_items' => $series_items, 'pagination' => ['base' => \Airship\LensFunctions\cabin_url() . 'blog/series/' . $slug, 'count' => $count, 'page' => (int) \ceil($offset / ($limit ?? 1)) + 1, 'per_page' => $limit]];
     $this->config('blog.cachelists') ? $this->stasis('blog/series', $args) : $this->lens('blog/series', $args);
 }