I tried to extract a simple, reusable blog module to use on my projects. I used two external packages in total. For keeping the URL pretty on every possible page, I added Eloquent Sluggable and for displaying the content of a post I decided to use Laravel Markdown. This can of course be overwritten.
The module includes the following models and each model has a default observer:
PS: Observers are currently not customizable. :(
Methods | Description |
---|---|
posts() | Posts of the category. (hasMany) |
postsCount() | Posts count of the category. (hasOne) |
latestPost() | Latest post of the category. (hasOne) |
scopePopular($descending = true) | Order the categories accoring to their popularities. (scope) |
Methods | Description |
---|---|
posts() | Posts of the tag. (belongsToMany) |
postsCount() | Posts count of the tag. (hasOne) |
latestPost() | Latest post of the tag. |
Posts have a media type attribute so that the users can choose between a Text Post, Single Image Post, Multiple Image Post or Video Post. Videos support 3 different websites: YouTube, Vimeo, DailyMotion
Methods | Description |
---|---|
category() | Category of the post. (belongsTo) |
user() | User of the post. (belongsTo) |
comments() | Comments of the post. (hasMany) |
commentsCount() | Comments count of the post. (hasOne) |
latestComment() | Latest comment of the post. |
tags() | Tags of the post. (belongsToMany) |
tagsCount() | Tag count of the post. (hasOne) |
scopePopular($descending = true) | Order the categories accoring to their popularities. (scope) |
scopeInCategory($categoryId = true) | Filter the posts to a category. (scope)* |
scopeWithTags($tagIds = [], $and = false) | Filter the posts by their tags. (scope)* |
PS: * This should be able to receive multiple ids sometime.
Methods | Description |
---|---|
post() | Post of the comment. (belongsTo) |
user() | User of the comment. (belongsTo) |
isApproved() | Check the approval state of the comment. |
approve($state = true) | Update the appvoval of the comment. |
disapprove() | Update the appvoval of the comment. |
Todo: Add contribution guidelines.
Owner:
- Ozan Kurt ([email protected])