austintoddj / canvas
Laravel 发布平台
Requires
- php: ^7.3|^8.0
- ext-json: *
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- laravel/legacy-factories: ^1.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0
- dev-master
- v6.0.54
- v6.0.53
- v6.0.52
- v6.0.51
- v6.0.50
- v6.0.49
- v6.0.48
- v6.0.47
- v6.0.46
- v6.0.45
- v6.0.44
- v6.0.43
- v6.0.42
- v6.0.41
- v6.0.40
- v6.0.39
- v6.0.38
- v6.0.37
- v6.0.36
- v6.0.35
- v6.0.34
- v6.0.33
- v6.0.32
- v6.0.31
- v6.0.30
- v6.0.29
- v6.0.28
- v6.0.27
- v6.0.26
- v6.0.25
- v6.0.24
- v6.0.23
- v6.0.22
- v6.0.21
- v6.0.20
- v6.0.19
- v6.0.18
- v6.0.17
- v6.0.16
- v6.0.15
- v6.0.14
- v6.0.13
- v6.0.12
- v6.0.11
- v6.0.10
- v6.0.9
- v6.0.8
- v6.0.7
- v6.0.6
- v6.0.5
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.4.1
- v5.4.0
- v5.3.11
- v5.3.10
- v5.3.9
- v5.3.8
- v5.3.7
- v5.3.6
- v5.3.5
- v5.3.4
- v5.3.3
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.1
- v5.1.0
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.2.9
- v4.2.8
- v4.2.7
- v4.2.6
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.39
- v4.1.38
- v4.1.37
- v4.1.36
- v4.1.35
- v4.1.34
- v4.1.33
- v4.1.32
- v4.1.31
- v4.1.30
- v4.1.29
- v4.1.28
- v4.1.27
- v4.1.26
- v4.1.25
- v4.1.24
- v4.1.23
- v4.1.22
- v4.1.21
- v4.1.20
- v4.1.19
- v4.1.18
- v4.1.17
- v4.1.16
- v4.1.15
- v4.1.14
- v4.1.13
- v4.1.12
- v4.1.11
- v4.1.10
- v4.1.9
- v4.1.8
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.4.5
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.0
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.2.0
- v2.1.17
- v2.1.16
- v2.1.15
- v2.1.14
- v2.1.13
- v2.1.12
- v2.1.11
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0
- dev-develop
- dev-dependabot/composer/orchestra/testbench-8.21.1
- dev-dependabot/composer/phpunit/phpunit-10.5.9
- dev-dependabot/composer/laravel/framework-10.42.0
- dev-dependabot/npm_and_yarn/eslint-plugin-vue-9.20.1
- dev-dependabot/npm_and_yarn/vue-3.4.15
- dev-dependabot/npm_and_yarn/vue-loader-17.4.2
- dev-dependabot/npm_and_yarn/unsplash-js-7.0.19
- dev-dependabot/composer/mockery/mockery-1.6.7
- dev-dependabot/npm_and_yarn/eslint-plugin-sort-imports-es6-autofix-0.6.0
This package is auto-updated.
Last update: 2024-09-12 20:59:53 UTC
README
简介
Canvas 是一个完全开源的包,可扩展您的现有 Laravel 应用程序,并在几分钟内创建一个博客。除了无干扰的写作体验外,您还可以查看您的内容的月度趋势,了解读者流量等!
系统要求
- PHP >= 7.3
- Laravel >= 6.0
- Laravel 支持的五个数据库之一
安装
您可以使用 composer 将 Canvas 安装到您的 Laravel 项目中
composer require austintoddj/canvas
使用 canvas:install
Artisan 命令发布资产和主要配置文件
php artisan canvas:install
使用 storage:link
Artisan 命令创建符号链接,以确保文件上传可以从网络公开访问
php artisan storage:link
配置
发布 Canvas 的资产后,主要配置文件将位于 config/canvas.php
。此文件允许您自定义应用程序使用该包的各个方面。
Canvas 默认在 /canvas
处公开其 UI。可以通过更新 path
或 domain
选项来更改此设置
/* |-------------------------------------------------------------------------- | Base Domain |-------------------------------------------------------------------------- | | This is the subdomain where Canvas will be accessible from. If the | domain is set to null, Canvas will reside under the defined base | path below. Otherwise, this will be used as the subdomain. | */ 'domain' => env('CANVAS_DOMAIN', null), /* |-------------------------------------------------------------------------- | Base Path |-------------------------------------------------------------------------- | | This is the URI where Canvas will be accessible from. If the path | is set to null, Canvas will reside under the same path name as | the application. Otherwise, this is used as the base path. | */ 'path' => env('CANVAS_PATH_NAME', 'canvas'),
有时,您可能希望在访问 Canvas 时应用自定义角色或权限。您可以在其中创建和附加任何额外的中间件
/* |-------------------------------------------------------------------------- | Route Middleware |-------------------------------------------------------------------------- | | These middleware will be attached to every route in Canvas, giving you | the chance to add your own middleware to this list or change any of | the existing middleware. Or, you can simply stick with the list. | */ 'middleware' => [ 'web', ],
Canvas 使用存储磁盘进行媒体上传。您可以在其中配置不同的文件系统选项
/* |-------------------------------------------------------------------------- | Storage |-------------------------------------------------------------------------- | | This is the storage disk Canvas will use to put file uploads. You may | use any of the disks defined in the config/filesystems.php file and | you may also change the maximum upload size from its 3MB default. | */ 'storage_disk' => env('CANVAS_STORAGE_DISK', 'local'), 'storage_path' => env('CANVAS_STORAGE_PATH', 'public/canvas'), 'upload_filesize' => env('CANVAS_UPLOAD_FILESIZE', 3145728),
角色 & 权限
Canvas 默认包含 3 个预定义角色
- 贡献者(可以撰写和管理自己的帖子,但不能发布它们)
- 编辑者(可以发布和管理帖子,包括其他用户的帖子)
- 管理员(可以做任何事,看到任何事)
安装 Canvas 的新版本时,将自动设置一个默认管理员用户。从那里,您可以对用户执行任何基本 CRUD 操作,并分配他们的各种角色。
Canvas UI
想要一个美丽、Medium.com 启发的前端吗? 使用 canvas:ui
Artisan 命令安装脚手架
php artisan canvas:ui
生成前端脚手架后,您的 package.json
文件将包含安装和编译所需的必要依赖项
# Using NPM npm install npm run dev # Using Yarn yarn yarn dev
就是这样!您可以导航到 /canvas-ui
并亲自检查。您可以自由修改任何您想要的方面。
Unsplash 集成
想要访问整个 Unsplash 库吗? 在 https://unsplash.com/oauth/applications 上设置一个新应用程序,获取您的访问密钥,并更新 config/canvas.php
/* |-------------------------------------------------------------------------- | Unsplash Integration |-------------------------------------------------------------------------- | | Visit https://unsplash.com/oauth/applications to create a new Unsplash | app. Use the confidential Access Key given to you to integrate with | the API. Note that demo apps are limited to 50 requests per hour. | */ 'unsplash' => [ 'access_key' => env('CANVAS_UNSPLASH_ACCESS_KEY'), ]
电子邮件通知
想要每周摘要吗? Canvas 允许用户接收其撰写的内容的每周摘要。一旦您的应用程序 配置了发送邮件,请更新 config/canvas.php
/* |-------------------------------------------------------------------------- | E-Mail Notifications |-------------------------------------------------------------------------- | | This option controls e-mail notifications that will be sent via the | default application mail driver. A default option is provided to | support the notification system as an opt-in feature. | | */ 'mail' => [ 'enabled' => env('CANVAS_MAIL_ENABLED', false), ]
由于此功能在 Laravel 的调度器 上运行,因此您需要将以下 cron 条目添加到您的服务器
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
API
安装Canvas UI将是最高效的方式,以前端界面来展示你的数据。然而,许多用户会选择手动创建,因为这给了他们设计美学的灵活性。
使用published
范围将允许你仅检索过去有发布日期的文章
Canvas\Models\Post::published()->get()
你也可以使用draft
范围来检索相反的内容
Canvas\Models\Post::draft()->get()
为了返回单个文章,你可能需要通过一个特定的slug来找到它,以及包含相关实体,例如
$post = Canvas\Models\Post::with('user', 'tags', 'topic')->firstWhere('slug', $slug);
重要:在返回文章的相同方法中,确保触发
PostViewed
事件,否则访问/浏览将不会被记录。
event(new Canvas\Events\PostViewed($post));
你可以通过一个特定的slug找到一个标签
Canvas\Models\Tag::with('posts')->firstWhere('slug', $slug);
类似的查询也可以用于一个主题
Canvas\Models\Topic::with('posts')->firstWhere('slug', $slug);
可以通过id
、username
或email
来检索用户
$user = Canvas\Models\User::find($id); $user = Canvas\Models\User::firstWhere('username', $username); $user = Canvas\Models\User::firstWhere('email', $email);
此外,你还可以返回与相关主题关联的用户发布的文章
$user->posts()->published()->with('topic')
更新
Canvas遵循语义化版本控制,并以MAJOR.MINOR.PATCH
数字递增版本。
- 主版本将包含重大更改,因此请遵循升级指南以获取逐步分解
- 次要版本和补丁版本不应包含重大更改,因此你可以安全地按照以下步骤更新包
你可以使用composer更新你的Canvas安装
composer update
运行任何新的迁移使用canvas:migrate
Artisan命令
php artisan canvas:migrate
使用canvas:publish
Artisan命令重新发布资产
php artisan canvas:publish
为了保持资产更新并避免未来更新中的问题,你可以在应用程序的composer.json
文件中将canvas:publish
命令添加到post-update-cmd
脚本中
{ "scripts": { "post-update-cmd": [ "@php artisan canvas:publish --ansi" ] } }
贡献
测试
使用以下命令运行测试
composer test
故障排除
如果您遇到问题,请随时打开新问题或检查讨论论坛,看看其他人是否遇到过类似的问题。
许可证
Canvas是开源软件,许可协议为MIT许可证。