Olá Pessoal!!

Estou aqui novamente para mostrar para vocês como faz para criar uma configuração no painel administrativo da loja, e exibir o texto em uma página da loja. Vamos lá?

Após seguir o exemplo de criação do nosso módulo base, e adicionar uma página a loja, vamos criar uma novo item de configuração no painel administrativo.

Primeiro passo, vai ser criar uma pasta chamada Config dentro do diretório do módulo que é a pasta src. Após a pasta ser criada, criem um arquivo chamado system.php dentro dessa pasta, e adicionem o seguinte conteúdo:

<?php

return [
    [
        'key' => 'vendorname_menu',
        'name' => 'Vendor Menu',
        'sort' => 10,
    ], [
        'key' => 'vendorname_menu.settings',
        'name' => 'General Settings',
        'sort' => 1,
    ], [
        'key' => 'vendorname_menu.settings.general_config',
        'name' => 'Config General',
        'sort' => 1,
        'fields' => [
            [
                'name' => 'myFirstField',
                'title' => 'My First Field',
                'type' => 'text',
                'validation' => 'required',
                'channel_based' => true
            ],
        ],
    ],
];

Após isso, abra o arquivo ServiceProvider do módulo, que no nosso exemplo é o HelloWorldServiceProvider e dentro da função boot adicione o seguinte código:

$this->mergeConfigFrom(dirname(__DIR__) . '/Config/system.php', 'core');

Fazendo isso, o menu começará a ser exibido dentro do menu principal Configure, conforme demonstrado na imagem abaixo:

Agora digite algum texto no campo My First Field e clique em Save. No meu caso, eu inseri no cmapo o seguinte texto My text customizable.

Exibindo o valor no Frontend da Loja

Primeiro vamos abrir o arquivo HelloWorldController, localizado em Http/Controllers/Shop. E substituiremos o conteúdo do método index pelo seguinte código:

$myFirstField  = core()->getConfigData('vendorname_menu.settings.general_config.myFirstField');
return view('helloworld::shop.helloworld', compact('myFirstField'));

A função core() é um helper que pode puxar algumas informações do bagisto, como no exemplo acima alguma configuração do admin. Para verificar todos os métodos disponível para essa função, acesse o seguinte arquivo:

packages/Webkul/Core/src/Core.php

Nele conterá algumas funções que podem ser úteis durante o desenvolvimento, inclusive a de buscar uma config no admin, que usamos anteriormente.

Agora iremos abrir o nosso arquivo de template, localizado em: Resources/views/shop/helloworld.blade.php, e adicionarem o seguinte código dentro da section content-wrapper:

<h2>{{$myFirstField}}</h2>

Deixando o arquivo de template da seguinte maneira:

@extends('shop::layouts.master')

@section('page_title')
    Hello World
@endsection

@section('content-wrapper')
    <h1>Hello World</h1>
    <h2>{{$myFirstField}}</h2>
@stop

Fazendo isso, ao acessar a rota /hello-world será exibida a seguinte tela abaixo, exibindo o nosso valor que foi inserido no admin da loja:

Com isso fechamos mais um tutorial!!!

Caso quiser baixar o módulo, o mesmo está disponível no seguinte repositório:

https://github.com/luancschmitz/bagisto-modulo-base/tree/3.0

Até a próxima!!!