fbf/laravel-pages

这是一个Laravel 4的扩展包,用于向网站添加简单的内容管理页面,包括横幅图片、标题、主图片或YouTube视频和正文内容。

v0.5.2 2014-02-25 10:25 UTC

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);
});