This project is no longer maintained. This repository has been archived and is no longer accepting issues or pull requests. Feel free to fork if you'd like to continue development.
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:newFollow 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?
@endmarkdownLet'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; // 51231php 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!