pinkwhalenl/jellyfish

安装: 174

依赖: 0

建议: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 4

语言:JavaScript

4.0.2 2019-12-16 14:32 UTC

This package is auto-updated.

Last update: 2024-09-27 06:47:36 UTC


README

最简单且动态的Laravel CMS,内置语言、用户和媒体管理。使用 模块,您可以根据预配置的字段(例如 文本多行文本框下拉列表 等)构建自己的后端页面。所有字段都将存储在 jelly_types 表的 JSON 列中。每个页面都将存储在 jelly_content 表中。在前端,您可以使用 Jelly 静态类查询它们,例如:Jelly::Module('categories')->get()

概览

要求

  • Laravel 5.7.*(或更高版本)
  • PHP 7.1(或更高版本)
  • 预配置的数据库(支持 JSON 列)

升级指南

不再需要 data() 来从文档获取字段数据。 现在您可以这样做 $result->data->title。您还可以在 jelly_content 表的 data 列中查询。请更新您的代码,在下一个版本中,将删除 data() 函数。

安装

  1. 运行 composer require pinkwhalenl/jellyfish
  2. 确保您的 .env 文件已配置(数据库)。
  3. 发布配置、CSS、JS 和字体文件 php artisan vendor:publish
  4. 运行新的迁移 php artisan migrate
  5. 转到 https://{YOURDOMAIN}}.com/backend
  6. 使用默认凭据登录;info@pinkwhale.io & secret

动态内容

模块就像MySQL数据库表一样,您将在 模块 中定义列以结构化您的数据并将它们分组。在这个平台的管理员侧,您可以将 字段 添加到您的JSON文件中,并通过告诉每个字段要做什么,您将获得一个用户友好的表单。当您完成 模块 后,您可以从导航栏开始添加一些文档。

添加模块

  1. 点击右上角的用户名。
  2. 点击 admin - 模块
  3. 点击 创建新模块
  4. 添加一个 标题,并选择您需要的选项。
  5. 从头开始,并添加以下代码。
{
    "fields":
        [
          
        ]
}
  1. 使用下面的字段填充字段部分。

[注意] 添加模块时的默认复选框
您可以选择两个复选框。 sort & published_at 这两个与 JSON 数据分开,并在 jelly_content 表中拥有自己的列。您也可以通过标准的 eloquent 方式查询它们。

// Example with published_date.
Jelly::Module('example')->orderBy('published_at','desc')->get();

可用字段

在每个字段中,您仍然可以使用键 validation 管理从Laravel带来的验证规则。还有一些函数可以指定数据如何存储在您的数据库中。每个 字段 都有自己的选项。因此,请参阅下面的文档。

文本

当您使用文本字段作为标题时,您还可以添加 "slug":true。系统将自动添加字段 {name}_slug。注意;一旦文档已保存,就不能更改此字段!

{
    "title":"Title of document",
    "placeholder":"eg. This is a title",
    "type":"text",
    "name":"title",
    "slug":true,
    "validation":"required"
}

Markdown

{
    "title":"Content",
    "placeholder":"...",
    "type":"markdown",
    "name":"content",
    "required":true,
    "validation":"required"
}

选择选项

{
    "title": "Select",
    "placeholder": "Pick a options",
    "type": "select",
    "name": "language",
    "options": [
        "Nederlands",
        "Engels"
    ]
},

其他模块的项目

此字段将列出其他模块及其选定的列。文档的唯一ID将存储在此字段中。

{
    "title": "Written By",
    "type": "module",
    "name": "writtenby",
    "required": true,
    "function": {
        "module": "employees",
        "field": "name"
    },
    "validation": "required"
},

图片

此字段允许您从媒体库中选择图片。

{
     "title":"Image",
     "placeholder":"...",
     "type":"media",
     "name":"picture",
     "required":true,
     "validation":"required"
}

附件

此字段允许您从媒体库中选择文件。

{
     "title":"attachment",
     "placeholder":"...",
     "type":"media",
     "name":"pdf",
     "required":false,
     "function": ["attachment"]
}

前端使用

当您存储文档时,例如基于所选的 模块。所有内容都将存储在 data 列表中。此列填充了模块的 JSON 值。

从所选模块获取文档

这只是 Laravel,我们只完成了前几个步骤。所以使用静态函数 Jelly::Module('MODULENAME')>{Query}。在后台,我们使用 Content 模型并通过类型查询 ->where('type','MODALNAME')

// example 1.
@foreach(Jelly::Module('articles')->get() as $article)
	<li>{{var_dump($article->data)}}</li>
@endforeach

// example 2.
$content = Jelly::Module('articles')->where('data->slug',$slug)->firstOrFail();

// example 3.
$content = Jelly:Module('articles')->where('data->code','7465')->first();
echo $content->created_at;
echo $content->data->title;

打印图片

Jellyfish 支持广泛的图像和图像缓存功能。

<!-- Where 'picture' is field's name.) -->
<img src="{{route('img',[$item->picture,'size=100x100'])}}"/>

使用Markdown字段

在使用 markdown 字段时,请添加 Markdown::convertToHtml() 函数将 markdown 转换为 HTML 格式。

{!! Markdown::convertToHtml($data->data()->content) !!}

存储表单

CMS 存储并允许您管理您的表单数据。下面是示例;

// ExampleController.php
use JellyForms;

public function store(){
    // Validate
    request()->validate([
        'name' => 'required',
    ]);
    
    // Store
    JellyFroms::put('contact_form',request()->all());
    
    // Store -> Alternatice
    JellyForms::put('contact_form',[
        'name' => request()->name,
	'email' => request()->email
    ]);
    
    return redirect()->route('ROUTENAME')->with('alert','success');
}

身份验证

您可以通过输入 JellyAuth::Check() 检查用户是否已登录,此函数返回 true/false。您还可以通过使用 User() 函数获取所有用户信息,例如:JellyAuth::User()。当您想知道用户是否有 admin-access 时,请输入:JellyAuth::IsAdmin(),这也返回 true/false

示例

// Show button is signed in.
@if(JellyAuth::Check())
<ul>
    <li><a href="#">Click here..</a></li>
</ul>
@endif

// Check user is an Admin.
@if(JellyAuth::IsAdmin())
    <li><a href="#">[Admin] - Debtors..</a></li>
@endif

// Get Userdata.
JellyAuth::User()->id // Get unique ID
JellyAuth::User()->name // Get name
JellyAuth::User()->email // Get email

翻译

默认情况下,jellyfish 将识别 Laravel 的运行语言。您也可以强制将其设置为另一种语言。

{{Trans::get('home.title')}} // Most basic.
{{Trans::get('home.title','nl')}} // With language.
{{Trans::get('home.title','nl','lorem:10')}} // With language + Lorem Ipsum.
{{Trans::get('home.title',null,'lorem:10')}} // No language.

在开发环境中

当您想要从 vendor 文件夹更改此包时,请输入:composer require pinkwhalenl/jellyfish dev-master --prefer-source