Sistema CMS completo com construtor de páginas e gerenciador de temas fáceis de usar para FilamentPHP
composer require tomatophp/filament-cms
depois de instalar seu pacote, execute este comando
NOTA se você precisar personalizar algum recurso, não use este comando e siga as próximas etapas porque esta etapa executa a migração e você precisa personalizar a configuração antes de executar a migração.
php artisan filament-cms:install
finalmente registre o plugin em /app/Providers/Filament/AdminPanelProvider.php
-> plugin (
TomatoPHP FilamentCms FilamentCMSPlugin :: make ()
-> useCategory ()
-> usePost ()
-> allowExport ()
-> allowImport ()
)
agora publique e migre a tabela de mídia
php artisan vendor:publish --provider= " SpatieMediaLibraryMediaLibraryServiceProvider " --tag= " medialibrary-migrations "
php artisan migrate
você pode permitir a importação de conteúdo do YouTube adicionando YOUTUBE_KEY
ao seu .env
YOUTUBE_KEY = YOUR_YOUTUBE_KEY
agora no seu provedor de painel /app/Providers/Filament/AdminPanelProvider.php
adicione este método
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowYoutubeImport ())
primeiro de tudo você precisa instalar dusk
como pacote principal para permitir esse recurso
composer require laravel/dusk
agora instale o driver do crepúsculo
php artisan dusk:install
agora você precisa permitir a importação do behanace em seu provedor de painel /app/Providers/Filament/AdminPanelProvider.php
adicione este método
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowBehanceImport ())
você pode adicionar um tipo personalizado ao CMS usando o método Façade em seu método AppServiceProvider boot()
use TomatoPHP FilamentCms Facades FilamentCMS ;
use TomatoPHP FilamentCms Services Contracts CmsType ;
public function boot ()
{
FilamentCMS :: types ()-> register ([
CmsType :: make ( ' building ' )
-> label ( ' Buildings ' )
-> icon ( ' heroicon-o-home ' )
-> color ( ' danger ' )
]);
}
você pode adicionar mais tipos de autores usando o método Façade em seu método AppServiceProvider boot()
use TomatoPHP FilamentCms Facades FilamentCMS ;
use TomatoPHP FilamentCms Services Contracts CmsAuthor ;
public function boot ()
{
FilamentCMS :: authors ()-> register ([
CmsAuthor :: make ( ' Admin ' )
-> model ( App Models User ::class)
]);
}
o gerenciador de temas é construído com módulos Laravel, então você precisa instalá-lo primeiro
Nota: se você estiver instalando tomatophp/filament-plugins
você não precisa instalar nwidart/laravel-modules
porque ele já está instalado
composer require nwidart/laravel-modules
agora no seu composer.json
adicione ao autoload psr-4
{
"autoload" : {
"psr-4" : {
"App \ " : " app/ " ,
"Modules \ " : " Modules/ "
}
}
}
agora execute este comando para carregar automaticamente os temas
composer dump-autoload
e você precisa de outro pacote para armazenar em cache e retornar temas como modelo, usamos o pacote sushi
composer require calebporzio/sushi
agora na sua configuração filament-cms
return [
/*
* ---------------------------------------------------
* Allow Features
* ---------------------------------------------------
*/
" features " => [
" theme-manager " => true ,
],
];
agora você precisa ativar a tabela de configurações
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
php artisan migrate
agora você pode usar o gerenciador de temas para gerenciar temas multifrontend em seu aplicativo, em seu provedor de painel /app/Providers/Filament/AdminPanelProvider.php
adicione este método
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> useThemeManager ())
agora você pode acessar /admin/themes
para gerenciar seus temas e pode criar um novo tema usando esta linha de comando
php artisan filament-cms:theme
você encontrará um novo módulo com arquivo module.json
personalizado em seu diretório Modules
o construtor de páginas torna muito fácil personalizar sua página e gerar páginas carregadas automaticamente para construir seu site usando Sections
para começar a usá-lo, você precisa adicionar este método em seu provedor de painel /app/Providers/Filament/AdminPanelProvider.php
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> usePageBuilder ())
a primeira coisa que você precisa é criar uma seção em seu método boot()
do AppServiceProvider
use TomatoPHP FilamentCms Services Contracts Section ;
use TomatoPHP FilamentCms Facades FilamentCMS ;
use Filament Forms Components TextInput ;
FilamentCMS :: themes ()-> register ([
Section :: make ( ' hero ' )
-> label ( ' Hero Section ' )
-> view ( ' sections.pages.hero ' )
-> form ([
TextInput :: make ( ' title ' )
-> label ( ' title ' ),
TextInput :: make ( ' description ' )
-> label ( ' description ' ),
TextInput :: make ( ' url ' )
-> url ()
-> label ( ' url ' ),
TextInput :: make ( ' button ' )
-> label ( ' button ' ),
])
]);
NOTA: a chave da seção deve ser exclusiva
depois de registrar sua seção você pode começar a usar o construtor de páginas, você precisa criar uma nova rota para sua página como esta
use Illuminate Support Facades Route ;
Route :: get ( ' / ' , function () {
$ page = load_page ( ' / ' );
return view ( ' welcome ' , compact ( ' page ' ));
});
como você pode ver, você precisa usar o auxiliar load_page
para carregar sua página e passá-la para sua visualização, este método verifica se a página existe por slug
e retorna os dados da página se a página não existir ou for excluída, ele irá restaurá-la ou criá-la para você
no seu arquivo welcome.blade.php
você precisa usar este componente blade
< x-tomato-builder-toolbar :page =" $page " allow-layout />
se você precisar usar o Filament Layout para facilitar a ativação do estilo Livewire / Tailwind, use o atributo allow-layout
se precisar usá-lo sem nenhum estilo, você pode usá-lo sem este atributo
agora, se você abrir sua página, encontrará a visualização do construtor como esta
você pode adicionar mais campos ao construtor de formulários usando este método em seu provedor.
use TomatoPHP FilamentCms Services FilamentCMSFormFields ;
use TomatoPHP FilamentCms Services Contracts CmsFormFieldType ;
FilamentCMSFormFields :: register ([
CmsFormFieldType :: make ( ' code ' )
-> className ( CodeEditor ::class)
-> color ( ' warning ' )
-> icon ( ' heroicon-s-code-bracket-square ' )
-> label ( ' Code Editor ' ),
]);
depois de criar seu formulário você pode usá-lo por key
como esta
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> build ()
você pode usar solicitações de formulário para enviar os dados do formulário usando este método em seu provedor.
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> send ( $ data )
você pode usar o escudo para proteger seu recurso e permitir funções de usuário instalando-o primeiro
composer require bezhansalleh/filament-shield
Adicione a característica SpatiePermissionTraitsHasRoles ao(s) seu(s) modelo(s) de usuário:
use Illuminate Foundation Auth User as Authenticatable ;
use Spatie Permission Traits HasRoles ;
class User extends Authenticatable
{
use HasRoles ;
// ...
}
Publique o arquivo de configuração e defina sua configuração:
-> plugin ( BezhanSalleh FilamentShield FilamentShieldPlugin :: make ())
Agora execute o seguinte comando para instalar o escudo:
php artisan shield:install
Agora podemos publicar os ativos do pacote.
php artisan vendor:publish --tag= " filament-users-config "
agora você precisa permitir isso nas opções do plugin
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowShield ())
para mais informações consulte o Filament Shield
às vezes você precisa adicionar alguma lógica personalizada à sua postagem, como enviar e-mail ou notificar o usuário. Você pode usar os eventos de postagem para fazer isso, e os eventos suportados são:
TomatoPHP FilamentCms Events PostCreated ::class
TomatoPHP FilamentCms Events PostUpdated ::class
TomatoPHP FilamentCms Events PostDeleted ::class
você pode publicar o arquivo de configuração usando este comando
php artisan vendor:publish --tag= " filament-cms-config "
você pode publicar o arquivo de visualizações usando este comando
php artisan vendor:publish --tag= " filament-cms-views "
você pode publicar o arquivo de idiomas usando este comando
php artisan vendor:publish --tag= " filament-cms-lang "
você pode publicar o arquivo de migração usando este comando
php artisan vendor:publish --tag= " filament-cms-migrations "
Confira nosso incrível TomatoPHP