plutuss / static-text-laravel

此包使得在 Laravel 中,可以从管理面板修改页面的静态文本成为可能。

1.0.5 2024-06-04 14:14 UTC

This package is auto-updated.

Last update: 2024-09-04 15:02:30 UTC


README

Laravel

“Static Text Laravel” 包提供了一种简单有效的解决方案,可以直接从 Laravel 管理面板管理网站上的静态文本和图片。利用其功能,您可以在无需开发者干预的情况下更新网站内容,使内容管理更加灵活方便。

关键特性

  1. 静态文本管理:允许网站管理员轻松更新文本内容,如标题、段落、列表和其他元素,无需修改代码或重新加载页面。
  2. 图片编辑:允许从管理面板直接上传新图片和更新现有图片。这对于更新横幅、标志和其他网站视觉元素来说非常方便。
  3. 多语言支持:提供管理多语言内容的能力,对于多语言网站尤其有用。
  4. 访问控制:为管理员和内容编辑器提供灵活的访问设置,根据用户角色限制对功能的使用。
  5. Laravel 集成:完全兼容 Laravel 框架,并利用最佳开发实践,如迁移、种子和服务提供者。
 composer require plutuss/static-text-laravel
php artisan vendor:publish --provider="Plutuss\Providers\StaticTextServiceProvider"
php artisan migrate
<?php

use Plutuss\Models\Page;
use Plutuss\Http\Requests\StorePageRequest;
use Plutuss\Http\Requests\StorePageItemRequest;

class PageController extends Controller
{
    public function index()
    {
         $page = Page::findByName('name_page');
         
         return view('welcome', compact('page'))
    }
    
    public function addPage(StorePageRequest $request)
    {
          $page = Page::add(
                name: 'home',
                slug: '/',
                template: 'main',
                seo_title: 'seo_title', // this field can be empty
                seo_description: 'seo_description' // this field can be empty
          ); 
    }
    
        
    public function addPageItem(StorePageItemRequest $request)
    {
          $page = Page::findByName('home');
    
          $pageItem = PageItem::add(
            name: 'header',
            page_id: $page->id,
            data: [
                [
                    'key' => 'h1',
                    'value' => 'Installed packages Laravel',
                    'type' => 'text',
                ],
                [
                    'key' => 'image-bg',
                    'value' => 'path/image.jpg', // path image or file
                    'type' => 'image',  // or file
                ]
            ]);
    }
    
    public function addPageItemWithLocale()
    {
           $pageItem = PageItem::add(
                name: 'header',
                page_id: $page->id,
                data: [
                    [
                        'key' => 'h3_en', // You can specify a key with the available localisations in the application
                        'value' => 'Installed packages Laravel',
                        'type' => 'text',
                    ],
                    [
                        'key' => 'h3_de',  // You can specify a key with the available localisations in the application
                        'value' => 'Installierte Pakete Laravel',
                        'type' => 'text',
                    ]
                ]);
    }

}

resources/views/*.blade.php

    <h1> {{ $page->show('header:h1') }} </h1>
    
    // You can specify a default value
    // if the required value is not found in the database.
   {{ $page->show('header:description_text','default value') }}
   
    // Call to a view without specifying a locale
    <h3> {{ $page->show('header:h3') }} </h3>

您可以使用包装类

    $page = Page::query()->first();

    $wrapper = new  StaticTextWrapper();

    $wrapper->setName('header');
    $wrapper->setPageId($page->id);
    $wrapper->setData('h1_title', 'packages', 'text');
    $wrapper->setData('description', 'Installed packages laravel', 'text');
    $wrapper->setData('package_url', 'https://github.com/plutuss/static-text', 'url');

    $pageItem = PageItem::addWithWrapper($wrapper);
    
    // Or  *************************************
    
    $page = Page::query()->first();

    $wrapper = (new  StaticTextWrapper())->setName('header')
        ->setPageId($page->id)
        ->setData('h1_title', 'packages', 'text')
        ->setData('description', 'Installed packages laravel', 'text')
        ->setData('package_url', 'https://github.com/plutuss/static-text', 'url');

    $pageItem = PageItem::addWithWrapper($wrapper);

您还可以获取一个用于保存的已准备好的数据数组

  • 使用一个方法 get()
    $page = Page::query()->first();

    $wrapper = (new  StaticTextWrapper())->setName('header')
        ->setPageId($page->id)
        ->setData('h1_title', 'packages', 'text')
        ->setData('description', 'Installed packages laravel', 'text')
        ->setData('package_url', 'https://github.com/plutuss/static-text', 'url')
        ->get();
        
    $pageItem = PageItem::create($wrapper);
  • 然后在 blade 中调用
   {{ $page->show('header:h1_title') }}

   {{ $page->show('header:description') }}
   
   {{ $page->show('header:package_url') }}