Add a simple, flat-file markdown blog to your existing Laravel application.
You can install the package via composer:
# Require it as a dependency
composer require swiftmade/blogdown
# Publish the config file
php artisan vendor:publish --provider "Swiftmade\Blogdown\BlogdownProvider"
Go to config/blogdown.php
to configure authors (example included in the file).
Simply run this command to make a new article:
php artisan blog:new
Follow the instructions, and you'll have your first blog post ready in seconds.
Each post consists of a meta section (mandatory) and the content. You can use Markdown to enrich your post's format.
To use markdown inside blade, simply invoke @markdown
/ @endmarkdown
. Or, you can also add .md
extension before .blade.php
and skip the markdown calls.
{{--
title: Hello World!
tags: blog, first post
date: 18.03.2020
--}}
Use blade to compose post content.
@markdown
**Or even use markdown** if you want.
### Isn't that great?
@endmarkdown
Let's say you're working on a long post and it's not production ready yet. Just do this:
{{--
... other attributes
draft: true
--}}
... Your awesome content ...
Since you added the draft
meta attribute, this post will be hidden in production
environments.
You can declare as many meta attributes as you want.
{{--
random_attribute: 51231
--}}
You can access your post's meta attributes like so:
$post->random_attribute; // 51231
php artisan blog:index
You can change most things about Blogdown. To get started, publish the config:
php artisan vendor:publish --provider "Swiftmade\Blogdown\BlogdownProvider"
Things you can customize
- Override views to change how your blog looks
- Add list of authors to quickly load author meta
- Format and content of post slugs
- Enable/disable default routes.
- Change date format.
- And probably more...
By default, this is how a post's slug is built:
public function slug()
{
return Str::slug($this->view_name);
}
If needed, you can override the Post
model and build a better slug:
public function slug()
{
return Str::slug($this->date->format('Y-m-d') . ' ' . $this->title);
}
Don't forget to register your custom Post
model in config/blogdown.php
!
If you want to see more features or report bugs feel free to open issues and send pull requests.
Contributors: