m4tlch / laravel-blog
基于webdevetc/m4blog的Laravel博客(包含管理面板)
Requires
- cviebrock/eloquent-sluggable: 4.5.*|4.6.*
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0
- intervention/image: 2.*
- laravelium/feed: ~2.12.0|~3.0.0
- swisnl/laravel-fulltext: 0.13.0
Requires (Dev)
- phpunit/phpunit: ^7.0
README
添加完整博客(包含管理后端)到您的Laravel应用的简单安装Laravel包
5分钟安装!快速简单!
简介
这是WebDevEtc的 M4Blog包。它包含了您快速轻松添加博客到Laravel应用所需的一切。
请访问此处获取5分钟安装指南(带视频教程)
安装指南 • Packagist << 请务必遵循说明。它们很简单,但必须遵循。
特性
- 包含所有视图、路由、模型、控制器、事件等
- 面向公众的页面
- 查看所有帖子(分页)
- 查看分类中的所有帖子(分页)
- 查看单个帖子
- 添加评论视图/确认视图
- 搜索(全文搜索)、搜索表单、搜索结果页面。
- 管理页面
- 帖子 (CRUD博客帖子,上传特色图片(自动调整大小)
- 查看所有帖子,
- 创建新帖子,
- 编辑帖子,
- 删除帖子
- 分类 (CRUD帖子分类)
- 查看所有分类,
- 创建新分类,
- 编辑帖子,
- 删除帖子
- 评论 (包括评论批准)
- 查看所有评论,
- 批准/管理评论,
- 删除评论
- 上传图片
- 以及上传每个博客帖子的特色图片(自动调整到多个定义的大小),您还可以单独上传图片。
- 查看所有上传的图片(多个尺寸)
- 帖子 (CRUD博客帖子,上传特色图片(自动调整大小)
- 面向公众的页面
- 包含管理面板
- 创建/编辑帖子
- 创建/编辑帖子分类
- 管理(批准/删除)提交的评论
- 允许每个博客帖子上传特色图片(您可以定义实际尺寸) - 在大、中、缩略图尺寸下
- 完全通过其
config/m4blog.php
配置文件配置。 - 包含所有必需的视图文件,无需额外设置即可直接使用。所有视图文件(Blade文件)使用Bootstrap 4,并且非常干净的HTML(易于理解)。您可以通过在
/resources/views/vendor/m4blog/
目录中放置文件来轻松覆盖任何视图文件 - 内置评论(使用数据库),可以自动批准或要求管理员批准(评论管理)。
- 其他选项包括使用Disqus评论或禁用评论。
- 包含单元测试。
- 对数据库的任何更改都会触发事件,因此您可以轻松添加事件监听器以添加额外的逻辑。
- < 5分钟安装时间,您的博客即可上线并运行,准备好进入管理面板编写博客帖子 - 下面是详细步骤,但这是所需步骤的摘要
- 使用Composer安装,
- 进行数据库迁移,复制配置文件(使用
php artisan vendor:publish
完成), - 更改
public/blog_images/
目录的权限和所有权,以便为每个博客帖子上传特色图片。 - 然后在您的
\App\User
文件中添加 1 个方法(canManageM4BlogPosts()
- 但请参阅安装说明以了解如何使一切正常运行
此包适用于谁/什么
- 适用于运行 Laravel(5.6)的网站
- 想要拥有网站博客,并且有一个易于使用的界面来撰写博客文章/分配类别/管理现有文章
- 仅管理员用户可以编辑/管理博客(这并不适合让您的网站上每位用户都能管理文章)
- 您了解文章可能(可能)包含 JS 或任何其他代码,因此您应该只允许受信任的管理员用户添加/编辑/删除/管理博客文章
此包不适用于什么
- 您想要让您的(普通、非管理员)用户撰写博客文章的网站。您必须在您的用户模型上设置
canManageM4BlogPosts()
以仅允许受信任的用户。
重要注意事项
-
任何可以管理博客文章的人(由您添加到用户模型中的
canManageM4BlogPosts()
方法定义)都可以提交任何要输出的 HTML。这是一个安全问题。如果您不信任内容,请在输出之前添加自定义视图并转义博客内容,并将配置中的use_custom_view_files
设置为 false。 -
如果配置中启用了
use_custom_view_files
(默认情况下是启用的),这意味着任何设置了自定义视图文件的帖子(详情请参阅文档)可以包含/resources/views/custom_blog_posts
中的任何文件,Blade 将执行这些文件。不过,此包没有提供方法来编辑该目录中的任何文件。
如何将 M4Blog 安装到您的 Laravel 应用中
请参阅我们的 M4Blog Laravel 博客包文档/安装指南 了解安装说明。(非常简单 - 通过 composer/artisan 命令完成,还需要在您的 \App\User 模型中添加一个方法 canManageM4BlogPosts()
,如果此用户可以管理博客,则应返回 true
)。
如何自定义博客视图/模板
这很简单,更多详情请参阅我们的 M4Blog Laravel 博客包文档。
在正确执行 vendor:publish
后,所有默认模板文件都将在 /resources/views/vendor/m4blog/ 中找到,并且很容易进行编辑以符合您的需求。
路由
它将自动设置所有必需的路由(公共界面和后台管理)。有一些配置选项(例如,将 /blog/ URL 更改为其他名称),可以在 m4blog.php 文件中完成。
配置选项
有关详细信息,请参阅M4Blog 配置选项文档。
所有配置选项都有注释来描述它们的作用。请仅参考您 /config/ 目录中的 m4blog.php
文件。
事件
您可以通过查看 /src/Events
目录来找到所有触发的事件。
将这些(以及事件监听器)添加到您的 EventServiceProvider.php
文件中,以便在事件触发时使用这些事件。
内置 CAPTCHA/反垃圾邮件
内置了一个 CAPTCHA(反垃圾邮件评论)系统,您可以用自己的实现轻松替换。
有关更多详情,请参阅我们的 CAPTCHA 文档。
待办事项
这是一个我想最终完成的功能或事项列表
- 更好的上传图像/查看上传图像的 UI
- 将上传的图像链接到博客文章。目前它们没有关联。
- 允许用户从博客文章中移除特色图像。
- 使用 HTMLPurifier 清理输出的选项。
- 为分配帖子作者提供更好的选项(目前只是分配当前登录用户)。然而,如果网站有10,000个以上的用户,我们真的需要为此提供一个UI界面吗?另一种方法是向
users
表添加一个类似is_admin
的字段,并只显示管理员用户。 - 可能添加标签(我们已经有分类了),但鉴于我们已经有分类,我不确定它们真的有多有用。
- 对单个帖子视图的评论进行分页?目前我们将其限制在一个较高的数量(配置文件中的默认值为5000)。
- RSS订阅源:显示从完整内容(去除标签)到博客帖子HTML的转换(尽管它有一个setTextLimit()方法)- 需要修剪这个,如果它使用自定义视图文件,则应该渲染该文件(不包含HTML)。
- 当添加新评论时向管理员发送电子邮件通知
- RSS使用generate_introduction()生成内容。
近期更改
- 添加了全文搜索和搜索视图。您必须在配置文件中启用它(参见最新的配置文件)
- 需要默认的3种图像尺寸以外的更多尺寸?在config/m4blog.php文件中添加更多,添加数据库列,它就会工作!
有问题,有什么地方不工作吗?
图像上传错误?
尝试将以下内容添加到config/app.php
'Image' => Intervention\Image\Facades\Image::class
- 同时确保/tmp是可写的。如果您启用了open_basedir,请确保将其值添加为:/tmp。
- 确保服务器可以写入/public/blog_images(或您在配置中设置的任何目录)
- 您可能需要设置更高的内存限制,或上传更小的图像文件。这取决于您的服务器。我已经用它上传了巨大的(10mb+)jpg图像而没有问题,一旦服务器正确设置以处理较大的文件上传。
版本历史
- 3.1 - 些小的修复
- 3.0.3 - 修复了RSS订阅源缓存问题
- 3.0.2 - 修复了默认中等图像尺寸(更改为600x400)
- 3.0.1 - 将所有短标签(?)替换为完整的开启标签(?php)
- 3.0 - 添加了单独的上传图像功能(并在数据库中保存一些元数据)
- 2.1 - 在数据库和表单中添加了'short_description',M4BlogPost::generate_introduction()方法将尝试使用此生成简介文本。
- 2.0 - 添加了全文搜索(通过配置文件启用 - 默认情况下已禁用)。
- 1.2 - 添加了WYSIWYG,一些较小的更改
- 1.1.1 - 添加了基本的验证码
- 1.0.5 - composer.json更改。
- 1.0 - 首次发布
- 0.3 - 一些小的更改,packagist设置。
- 0.1 - 首次发布
问题,支持,错误报告,安全问题
请联系我,请通过WebDev Etc上的联系表单或在twitter上,我将尽快回复您。