optimistdigital/nova-blog

该软件包已被废弃,不再维护。未建议替代软件包。

Laravel Nova 的博客管理器

9.7.0 2021-08-04 10:57 UTC

README

Laravel Nova 软件包允许您创建博客,管理博客文章和内容。该软件包面向无头 CMS。

安装

使用 Composer 在 Laravel Nova 项目中安装该软件包

composer require optimistdigital/nova-blog

发布 nova-blog 配置文件,并根据您的喜好进行编辑

php artisan vendor:publish --provider="OptimistDigital\NovaBlog\ToolServiceProvider" --tag="config"

发布数据库迁移文件并运行迁移

php artisan vendor:publish --provider="OptimistDigital\NovaBlog\ToolServiceProvider" --tag="migrations"
php artisan migrate

NovaServiceProvidertools() 方法中注册此工具

// in app/Providers/NovaServiceProvider.php

public function tools()
{
    return [
        // ...
        new \OptimistDigital\NovaBlog\NovaBlog
    ];
}

定义区域设置

配置接受区域设置的字典。

// in /config/nova-blog.php

// ...
'locales' => [
  'en' => 'English',
  'et' => 'Estonian',
],

// OR

'locales' => function () {
  return Locale::all()->pluck('name', 'key');
},

// if you wish to cache the configuration, pass a reference instead:

'locales' => NovaBlogConfiguration::class . '::locales',

// ...

Nova Lang

此软件包支持 optimistdigital/nova-lang,以简化内容本地化。安装并设置 nova-lang 软件包后,您可以在 nova-blog 配置文件中使用 nova_lang_get_all_locales 辅助函数。

'locales' => nova_lang_get_all_locales(),

切换页面草稿功能

草稿功能允许您在发布资源之前创建资源的预览。默认情况下,此功能已禁用,但可以通过安装 nova-drafts 软件包来启用。

composer require optimistdigital/nova-drafts

添加前端页面链接

要在 slug 旁边显示实际页面的链接,请在 config/nova-blog.php 中添加或覆盖 page_url 键的闭包。

// in /config/nova-blog.php

// ...
'page_url' => function (Post $post) {
  return env('FRONTEND_URL') . '/' . $post->slug;
},

// if you wish to cache the configuration, pass a reference instead:

'page_url' => NovaBlogConfiguration::class . '::pageUrl',
// ...

辅助函数

nova_get_blog_structure()

辅助函数 nova_get_blog_structure() 返回基本文章结构(标题、slug、发布日期、内容),您可以在前端根据这些结构构建路由。

示例响应

[
  {
    "id": 7,
    "created_at": "2019-06-19 11:58:56",
    "updated_at": "2019-06-19 11:59:23",
    "title": "Test post 1",
    "slug": "test-post-1",
    "post_content": [
      {
        "layout": "text",
        "key": "8965c7bfc0918086",
        "attributes": {
          "text-content": "Test post content."
        }
      },
      {
        "layout": "image",
        "key": "56f5bbe608b68cd6",
        "attributes": {
          "caption": "Test post image."
        }
      }
    ],
    "published_at": "2019-06-19 09:00:00",
    "seo_title": null,
    "seo_description": null,
    "seo_image": null,
    "data": null
  },
  {
    "id": 8,
    "created_at": "2019-06-19 12:00:06",
    "updated_at": "2019-06-19 12:00:06",
    "title": "Test post 2",
    "slug": "tes-post-2",
    "post_content": [
      {
        "layout": "text",
        "key": "0e340b84bc5dec28",
        "attributes": {
          "text-content": "Test post content."
        }
      },
      {
        "layout": "image",
        "key": "a4625050e49cf77c",
        "attributes": {
          "caption": "Test post image."
        }
      }
    ],
    "published_at": "2019-06-19 09:00:05",
    "seo_title": null,
    "seo_description": null,
    "seo_image": null,
    "data": null
  }
]

nova_get_post_by_id($postId)

辅助函数 nova_get_post_by_id($postId) 找到并返回具有给定 ID 的文章。

查询 ID 为 7 的页面(nova_get_post_by_id(7))的示例响应

{
  "id": 7,
  "name": "Test post 1",
  "slug": "testpost1",
  "published_at": "2019-06-19T09:00:00.000000Z",
  "post_content": [
    {
      "layout": "text",
      "key": "8965c7bfc0918086",
      "attributes": {
        "text-content": "Test post content."
      }
    },
    {
      "layout": "image",
      "key": "56f5bbe608b68cd6",
      "attributes": {
        "caption": "Test post image."
      }
    }
  ]
}

nova_get_post_by_slug($slug)

辅助函数 nova_get_post_by_slug($slug) 找到并返回具有给定 slug 的文章。

查询 slug 为 test-post-3 的页面(nova_get_post_by_slug('test-post-3'))的示例响应

{
  "id": 14,
  "name": "Test post 3",
  "slug": "test-post-3",
  "published_at": "2019-06-25T09:00:00.000000Z",
  "post_content": [
    {
      "layout": "text",
      "key": "fc64d73f1f7508c4",
      "attributes": {
        "text-content": "Test post content."
      }
    },
    {
      "layout": "image",
      "key": "f8c9cc65b23b862a",
      "attributes": {
        "caption": "Test post image."
      }
    }
  ]
}

致谢

许可

Nova blog 是开源软件,根据 MIT 许可 许可。