BlogHub
Use a Git repository to generate blog entities and contents., (*1)
=====, (*2)
WORK IN PROGRESS.
=====, (*3)
Requirements
Installation
Add to your project Composer packages
Just add sly/blog-hub
package to the requirements of your Composer JSON configuration file,
and run php composer.phar install
to install it., (*4)
Install from GitHub
Clone this library from Git with git clone https://github.com/Ph3nol/BlogHub.git
., (*5)
Goto to the library directory, get Composer phar package and install vendors:, (*6)
curl -s https://getcomposer.org/installer | php
php composer.phar install
You're ready to go., (*7)
Repository structure
Your git repository has to respect a Categories/Posts structure to be
understood by the library., (*8)
The logic:, (*9)
Category 1
`-- Title of my post 1
`-- Title of my post 2
`-- Title of my post 3
Category 2
`-- Title of my post 4
To match this logic, the repository tree will be:, (*10)
Category 1/
Category 1/Title of my post 1.md
Category 1/Title of my post 2.md
Category 1/Title of my post 3.md
Category 2/
Category 2/Title of my post 4.md
Post structure
Each post has to be a markdown file, into a category folder.
Informations can be added to it as PHPDoc/Annotations one.
Here is an example:, (*11)
/**
* @createdAt 2013-01-01
* @description This is my post description.
* @tags tag1, tag2, tag3
* @format markdown
*/
# My post title
My post content.
Example
``` php
require_once 'vendor/autoload.php';, (*12)
use GitElephant\Repository;
use Sly\BlogHub\Blog\Blog;, (*13)
/**
* GitElephant repository instance.
*/
$repo = new Repository('/path/to/your/repository');
$repo->checkout('master');, (*14)
/**
* BlogHub instance, with repository object as argument.
*/
$blog = new Blog($repo);, (*15)
### Categories list
``` php
foreach ($blog->getCategories() as $category) {
// Your logic
}
Elements:, (*16)
- Category name:
(string) $category
or $category->getName()
- Posts collection:
$category->getPosts()
- Number of posts:
$category->getPosts()->count()
Posts list
``` php
foreach ($blog->getPosts() as $post) {
// Your logic
}, (*17)
``` php
foreach ($category->getPosts() as $post) {
// Your logic
}
Elements:, (*18)
- Post title:
(string) $post
or $post->getTitle()
- Post category object:
$post->getCategory()
- Slug:
$post->getSlug()
- Excerpt:
$post->getExcerpt([string $separator = ' [...]'])
- Tags collection:
$post->getTags()
- Creation DateTime:
$post->getCreatedAt()
- Update DateTime:
$post->getUpdatedAt()
``` php
foreach ($blog->getTags() as $tag) {
// Your logic
}, (*19)
``` php
foreach ($post->getTags() as $tag) {
// Your logic
}
Elements:, (*20)
- Tag name:
(string) $tag
or $tag->getName()
Query Builder
You can use the QueryBuilder to retreive a specific model entity.
Here is an example:, (*21)
php
$query = $blog->getQuery(); // Get QueryBuilder from Blog Manager service
$post = $query->from('Post')->getOneBySlug('hello-world'); // Get the Post from its slug
, (*22)