bozboz/pagemanager

使用页面模板和Backpack\CRUD为Laravel网站上的演示网站创建管理面板。

dev-master / 1.0.x-dev 2021-02-01 22:55 UTC

This package is auto-updated.

Last update: 2024-09-11 19:32:58 UTC


README

Backpack PageManager 分支而来

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

一个接口,允许您的管理员通过定义具有任意数量内容区域和任意数量内容类型的页面模板,向您的Laravel 6、7或8网站添加和编辑演示页面。使用 Laravel Backpack

Backpack PageManager edit page

安全更新和重大更改

订阅Backpack新闻通讯 以了解任何安全更新、重大更改或新功能。我们每1-2个月发送一封电子邮件。

安装

  1. app/PageTemplates.php 中添加一个文件以定义您的页面模板
<?php

namespace App;

trait PageTemplates
{
    /*
    |--------------------------------------------------------------------------
    | Page Templates for Bozboz\PageManager
    |--------------------------------------------------------------------------
    |
    | Each page template has its own method, that define what fields should show up using the Backpack\CRUD API.
    | Use snake_case for naming and PageManager will make sure it looks pretty in the create/update form
    | template dropdown.
    |
    | Any fields defined here will show up after the standard page fields:
    | - select template
    | - page name (only seen by admins)
    | - page title
    | - page slug
    */

    protected function metas()
    {
        $this->crud->addField([
            'name' => 'metas_separator',
            'type' => 'custom_html',
            'value' => '<br><h3>'.trans('backpack::pagemanager.metas').'</h3><hr>',
        ]);
        $this->crud->addField([
            'name' => 'meta_title',
            'label' => trans('backpack::pagemanager.meta_title'),
            'fake' => true,
            'store_in' => 'extras',
        ]);
        $this->crud->addField([
            'name' => 'meta_description',
            'label' => trans('backpack::pagemanager.meta_description'),
            'fake' => true,
            'store_in' => 'extras',
        ]);
        $this->crud->addField([
            'name' => 'meta_keywords',
            'type' => 'textarea',
            'label' => trans('backpack::pagemanager.meta_keywords'),
            'fake' => true,
            'store_in' => 'extras',
        ]);

        $this->crud->addField([
            'name' => 'metas_end_separator',
            'type' => 'custom_html',
            'value' => '<br><hr>',
        ]);
    }

    private function basicPage()
    {

        $this->metas();

        $this->crud->addField([
            'name' => 'content',
            'label' => trans('backpack::pagemanager.content'),
            'type' => 'wysiwyg',
            'placeholder' => trans('backpack::pagemanager.content_placeholder'),
        ]);
    }
}
  1. 在您的终端中
composer require bozboz/pagemanager
  1. 发布视图、迁移和PageTemplates特质
php artisan vendor:publish --provider="Bozboz\PageManager\PageManagerServiceProvider"
  1. 运行迁移以获得我们需要的数据库表
php artisan migrate
  1. [可选] 在 resources/views/vendor/backpack/base/inc/sidebar.blade.php 或 menu.blade.php 中添加一个菜单项
php artisan backpack:add-sidebar-content "<li class='nav-item'><a class='nav-link' href='{{ backpack_url('page') }}'><i class='nav-icon la la-file-o'></i> <span>Pages</span></a></li>"

使用方法

  1. 转到 yourapp/admin/page 并查看其工作原理。
  2. 使用Backpack\CRUD API在 app/PageTemplates.php 中定义您自己的模板。

前端示例

未提供前端(Backpack仅负责管理面板),但对于大多数项目,此前端代码将满足您的需求

(1) 在路由文件末尾创建一个通配符路由

/** CATCH-ALL ROUTE for Backpack/PageManager - needs to be at the end of your routes.php file  **/
Route::get('{page}/{subs?}', ['uses' => '\App\Http\Controllers\PageController@index'])
    ->where(['page' => '^(((?=(?!admin))(?=(?!\/)).))*$', 'subs' => '.*']);

(2) 创建 app\Http\Controllers\PageController.php 来实际显示页面。

<?php

namespace App\Http\Controllers;

use Bozboz\PageManager\app\Models\Page;
use App\Http\Controllers\Controller;

class PageController extends Controller
{
    public function index($slug, $subs = null)
    {
        $page = Page::findBySlug($slug);

        if (!$page)
        {
            abort(404, 'Please go back to our <a href="'.url('').'">homepage</a>.');
        }

        $this->data['title'] = $page->title;
        $this->data['page'] = $page->withFakes();

        return view('pages.'.$page->template, $this->data);
    }
}

(3) 创建这些模板的视图(页面实际的外观 - HTML CSS JS)并将它们放置在您的 resources/views/pages/ 目录中。在这些blade文件中,您可以使用 $page 变量。那里存储了所有页面内容。对于更复杂的页面,您还可以在页面模板中使用 假字段。您也会在 $page 变量中找到这些属性。

注意:如果您发现自己需要向多个页面加载的视图中发送额外的数据,应考虑 使用视图组合器;

扩展

如果您需要修改控制器、模型或请求,应

  • 确保 config/backpack/pagemanager.php 已发布;如果没有,请使用 php artisan vendor:publish --provider="Bozboz\PageManager\PageManagerServiceProvider" 发布它;
  • 创建一个新的控制器/模型,扩展包中的控制器/模型;
  • 在 pagemanager.php 配置文件中将控制器或模型输入,CRUD将使用它;

变更日志

有关最近更改的详细信息,请参阅 CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCONDUCT

覆盖功能

如果您需要在项目中修改此功能的工作方式

  • 创建一个 routes/backpack/pagemanager.php 文件;包将看到它,并加载 您的 路由文件,而不是包中的路由文件;
  • 创建扩展包中控制器/模型的控制器/模型,并在您的新路由文件中使用它们;
  • 在新的控制器/模型中修改您想修改的任何内容;

安全

如果您发现任何与安全相关的问题,请通过电子邮件hello@tabacitu.ro联系,而不是使用问题跟踪器。

致谢

许可证

Backpack免费供非商业使用,商业使用每项目69欧元。请参阅许可证文件backpackforlaravel.com获取更多信息。

雇佣我们

我们在Laravel上创建、抛光和维护管理面板上投入了超过10,000小时。我们开发了电子商务、电子学习、ERP系统、社交网络、支付网关等等。我们在管理面板上投入了如此多的精力,以至于我们创造了该领域最受欢迎的软件之一——仅仅是因为我们公开了在项目中重复出现的内容。

如果您正在寻找开发者/团队来帮助您在Laravel上构建管理面板,请不必再寻找。您将很难找到更有经验且对这一点更热情的人。这就是我们做的事情。联系我们 - 让我们看看是否能一起工作