Interacting with content

In this example we’re looking at one of the built-in content types: Article. You can use these same steps for all classes that extend from “AloiaCms\Models\Model”.

To load all articles in the “articles” folder in the folder you specified in config('aloiacms.collection_path') you can use the following script:

use AloiaCms\Models\Article;
use Illuminate\Support\Collection;

/**@var Article[]|Collection*/
$articles = Article::all();

You can use that to display your posts on a page. You can also load a single post, using:

$article = Article::find('this-post-is-amazing');

If you only want all published posts, you’ll need to retrieve them like so:

$published_articles = Article::published();

To get the raw contents of each article (content + front matter), you can use:

$articles = Article::find('this-post-is-amazing')->rawContent();

And finally, to update your article, you can run:

use Carbon\Carbon;

Article::find('this-post-is-amazing')
    ->setExtension('md') // md is the default, but you can use html as well.
    ->setMatter([
        'description' => 'This post is about beautiful things',
        'is_published' => true,
        'is_sechduled' => false,
        // Either use post_date in setMatter() or setPostDate()
        'post_date' => date('Y-m-d')
    ])
    ->setPostDate(Carbon::now())
    ->setBody('# This is the content of an article')
    ->save();