fbf / laravel-pages
这是一个Laravel 4的扩展包,用于向网站添加简单的内容管理页面,包括横幅图片、标题、主图片或YouTube视频和正文内容。
v0.5.2
2014-02-25 10:25 UTC
Requires
- php: >=5.3.0
- cviebrock/eloquent-sluggable: 1.0.*
- illuminate/support: 4.*
This package is not auto-updated.
Last update: 2024-09-14 14:34:46 UTC
README
这是一个Laravel 4的扩展包,用于向网站添加简单的内容管理页面,包括横幅图片、标题、主图片或YouTube视频和正文内容。
功能
- 页面可以是草稿或已批准
- 它们有一个发布日期,您可以设置在未来的延迟/计划发布
- 页面URI在创建时自动从页面标题生成,但可以编辑
- 页面URI可以包含'/'来表示网站的各个部分
- 可配置路由匹配模式(默认情况下,除了根路由(即'/')之外的所有内容)
- 控制页面标题、元描述和关键字以实现SEO
- 使用软删除,以便在需要检索旧内容时使用
- 配置渲染视图,以便您可以在应用程序中使用而不是包中的视图
- 在自己的视图中使用2个部分,以便您可以在横幅图像和内容区域周围添加额外的内容
包含以下内容
- 创建fbf_pages表的迁移
- 模型、控制器和视图(主视图和2个部分,用于内容和横幅图像)
- 内置路由(目前捕获网站根目录中的所有内容,因此如果其他包有此会冲突的路由,请将ServiceProvider放在列表的最后一个位置)
- 服务提供器自动注册eloquent sluggable包
安装
将以下内容添加到您的composer.json文件中
"fbf/laravel-pages": "dev-master"
运行
composer update
将以下内容添加到app/config/app.php中
'Fbf\LaravelPages\LaravelPagesServiceProvider'
发布配置
php artisan config:publish fbf/laravel-pages
运行迁移
php artisan migrate --package="fbf/laravel-pages"
创建您在配置中指定的相关图像上传目录,例如
public/uploads/packages/fbf/laravel-pages/banner/originals
public/uploads/packages/fbf/laravel-pages/banner/resized
public/uploads/packages/fbf/laravel-pages/main/originals
public/uploads/packages/fbf/laravel-pages/main/resized
配置
查看src/config/config.php文件中的选项
路由配置
默认情况下,包中的路由文件将自动包含,除了主页以外的所有路由都会匹配。
然而,包中的默认路由也会覆盖您的任何app/routes.php路由。
为了避免这种情况,如果您有app路由,您可以配置它不使用包的内置路由文件,然后将包中的路由复制到您的app/routes.php文件中,但放在现有路由之后。
管理员
您可以使用frozennode的优秀Laravel Administrator包来管理您的页面。
http://administrator.frozennode.com/docs/installation
提供在包的src/config/administrator目录中用于Page模型的已准备好使用的模型配置文件(pages.php),您可以将其复制到app/config/administrator目录(或管理员配置文件中设置的model_config_path)。
扩展
假设您的网站中的每个页面都可以有一个推荐评语。
- 安装包后,您可以创建推荐评语表和模型等(或使用fbf/laravel-testimonials包)
- 创建迁移以向fbf_pages表添加testimonial_id字段,并运行它
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class LinkPagesToTestimonials extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('fbf_pages', function(Blueprint $table) { $table->integer('testimonial_id')->nullable()->default(null); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('fbf_pages', function(Blueprint $table) { $table->dropColumn('testimonial_id'); }); } }
- 在app/models目录中创建一个扩展包模型并包含关系的模型
<?php class Page extends Fbf\LaravelPages\Page { public function testimonial() { return $this->belongsTo('Fbf\LaravelTestimonials\Testimonial'); } }
- 如果您使用的是FrozenNode的Administrator包,请更新pages配置文件以使用您的新模型,并允许选择附加到页面的推荐评语
/** * The class name of the Eloquent model that this config represents * * @type string */ 'model' => 'Page',
...
'testimonial' => array( 'title' => 'Testimonial', 'type' => 'relationship', 'name_field' => 'title', ),
- 最后,更新IoC容器以将模型实例注入到控制器中,而不是包的模型,例如在
app/start/global.php
中。
App::bind('Fbf\LaravelPages\PagesController', function() { return new Fbf\LaravelPages\PagesController(new Page); });