Advertisement
  1. Code
  2. Magento

Configuração personalizada de Backend no Magento

Scroll to top
Read Time: 7 min

() translation by (you can also view the original English article)

Neste tutorial, vou demonstrar a configuração do módulo personalizado no backend do Magento. É sempre útil fornecer um conjunto de opções configuráveis do módulo no backend, que permite aos administradores configurar definições específicas do módulo facilmente. Nós andaremos com o processo de criação e configuração do módulo, criando um módulo personalizado no Magento.

Introdução à configuração personalizada no Magento

Como um desenvolvedor, durante o processo de criação do módulo personalizado você pôde sentir que seria bom se você pudesse transferir o controle de certas configurações específicas do módulo para o backend. Magento permite conseguir isso usando um sistema de configuração de arquivo em XML. Você só precisa configurar os arquivos de acordo com as convenções do Magento, e eles vai ser pego auto-magicamente! Na maioria das vezes, você precisará lidar com bastante configurações fornecidas pelos módulos de núcleo ao configurar o armazenamento básico no frontend.

Presumo que você está familiarizado com o processo de criação do módulo básico no Magento. Aqui está um belo artigo, se você quiser aprender mais sobre módulos personalizados no Magento. Dito isto, o Magento segue a convenção sobre o paradigma de configuração, que deve tornar as coisas mais fáceis de entender se você é um novato para o processo de desenvolvimento do módulo personalizado.

Crie um módulo personalizado para fornecer a configuração personalizada

Para este tutorial, vou criar um módulo personalizado básico chamado "CustomConfig", que fornece a configuração no backend em Sistema > Configuração. Aqui está a lista de arquivos necessários para a configuração desejada:

  • app/etc/modules/Envato_All.xml: É um arquivo usado para habilitar o módulo personalizado.
  • app/code/local/Envato/CustomConfig/etc/config.xml: É um arquivo de configuração do módulo.
  • app/code/local/Envato/CustomConfig/etc/system.xml: É um arquivo que declara as opções de configuração para o módulo.
  • app/code/local/Envato/CustomConfig/Model/Options.php: É um arquivo do model que fornece as opções para certos elementos de formulário de configuração.
  • app/code/local/Envato/CustomConfig/Helper/Data.php: É um arquivo usado pelo sistema de tradução do Magento.

Arquivos de configuração

Para começar, vamos criar um arquivo de ativação do módulo. Crie um arquivo "app/etc/modules/Envato_All.xml" e cole o seguinte conteúdo. Usamos "Envato" como nosso namespace do módulo e "CustomConfig" como o nome do módulo. Isso vai permitir o nosso módulo de "CustomConfig" por padrão esteja ativo.

1
<?xml version="1.0"?>
2
<config>
3
  <modules>
4
    <Envato_CustomConfig>
5
      <active>true</active>
6
      <codePool>local</codePool>
7
    </Envato_CustomConfig>
8
  </modules>
9
</config>

Em seguida, precisamos criar um arquivo de configuração do módulo. Crie "app/code/local/Envato/CustomConfig/etc/config.xml" e cole o seguinte conteúdo.

1
<?xml version="1.0"?>
2
<config>
3
    <modules>
4
        <Envato_CustomConfig>
5
            <version>0.0.1</version>
6
        </Envato_CustomConfig>
7
    </modules>
8
    <global>
9
        <helpers>
10
            <customconfig>
11
                <class>Envato_CustomConfig_Helper</class>
12
            </customconfig>
13
        </helpers>
14
        <models>
15
             <customconfig>
16
                <class>Envato_CustomConfig_Model</class>
17
             </customconfig>
18
        </models>
19
    </global>
20
    <adminhtml>
21
        <acl>
22
            <resources>
23
                <admin>
24
                    <children>
25
                        <system>
26
                            <children>
27
                                <config>
28
                                    <children>
29
                                        <customconfig_options>
30
                                            <title>Custom Configuration Section</title>
31
                                        </customconfig_options>
32
                                    </children>
33
                                </config>
34
                            </children>
35
                        </system>
36
                    </children>
37
                </admin>
38
            </resources>
39
        </acl>
40
    </adminhtml>
41
</config>

Você deve estar familiarizado com a declaração de classe do model e helper conforme as convenções do Magento. Claro, a tag <adminhtml> é nova para você, que é algo que estamos visando com o contexto deste tutorial. Vamos analisar cada tag no detalhe para entender o que ela faz.

A marca de <adminhtml> é usada para definir os recursos do lado do admin. No nosso exemplo, a página de configuração para o módulo é um resource. Além disso, usamos a tag <acl> para dentro dela declarar <resources>, significa que vai ser acessível aos usuários apenas autenticados.

O próximo passo é declarar a tag para definir o caminho da nossa página de configuração no backend. Então o caminho para a nossa página de configuração será "admin/sistema/config/customconfig_options". Claro, a última tag <customconfig_options> deve ser exclusiva para que ela não entre em conflito com outras extensões.

Seguindo em frente, vamos definir o arquivo mais importante, "System.xml". Crie o arquivo "app/code/local/Envato/CustomConfig/etc/system.xml" e cole o seguinte conteúdo.

1
<?xml version="1.0"?>
2
<config>
3
    <tabs>
4
        <customconfig translate="label" module="customconfig">
5
            <label>Custom Configuration Tab</label>
6
            <sort_order>1</sort_order>
7
        </customconfig>
8
    </tabs>
9
    
10
    <sections>
11
        <customconfig_options translate="label" module="customconfig">
12
            <label>Custom Configuration Settings</label>
13
            <tab>customconfig</tab>
14
            <frontend_type>text</frontend_type>
15
            <sort_order>1</sort_order>
16
            <show_in_default>1</show_in_default>
17
            <show_in_website>1</show_in_website>
18
            <show_in_store>1</show_in_store>
19
            <groups>
20
                <section_one translate="label">
21
                    <label>Section One</label>
22
                    <frontend_type>text</frontend_type>
23
                    <sort_order>1</sort_order>
24
                    <show_in_default>1</show_in_default>
25
                    <show_in_website>1</show_in_website>
26
                    <show_in_store>1</show_in_store>                
27
                    <fields>
28
                        <custom_field_one>
29
                            <label>Custom Text Field</label>
30
                            <frontend_type>text</frontend_type>
31
                            <sort_order>1</sort_order>
32
                            <show_in_default>1</show_in_default>
33
                            <show_in_website>1</show_in_website>
34
                            <show_in_store>1</show_in_store>
35
                            <comment>Example of text field.</comment>                   
36
                        </custom_field_one>
37
                    </fields>
38
                </section_one>
39
                <section_two translate="label">
40
                    <label>Section Two</label>
41
                    <frontend_type>text</frontend_type>
42
                    <sort_order>2</sort_order>
43
                    <show_in_default>1</show_in_default>
44
                    <show_in_website>1</show_in_website>
45
                    <show_in_store>1</show_in_store>                
46
                    <fields>
47
                        <custom_field_two>
48
                            <label>Custom Select Field</label>
49
                            <frontend_type>select</frontend_type>
50
                            <source_model>customconfig/options</source_model>
51
                            <sort_order>1</sort_order>
52
                            <show_in_default>1</show_in_default>
53
                            <show_in_website>1</show_in_website>
54
                            <show_in_store>1</show_in_store>
55
                            <comment>Example of select field.</comment>
56
                        </custom_field_two>
57
                        <custom_field_three>
58
                            <label>Custom Radio Field</label>
59
                            <frontend_type>radios</frontend_type>
60
                            <source_model>customconfig/options</source_model>
61
                            <sort_order>2</sort_order>
62
                            <show_in_default>1</show_in_default>
63
                            <show_in_website>1</show_in_website>
64
                            <show_in_store>1</show_in_store>
65
                            <comment>Example of radios field.</comment>
66
                        </custom_field_three>
67
                        <custom_field_four>
68
                            <label>Custom Multiselect Field</label>
69
                            <frontend_type>multiselect</frontend_type>
70
                            <source_model>customconfig/options</source_model>
71
                            <sort_order>3</sort_order>
72
                            <show_in_default>1</show_in_default>
73
                            <show_in_website>1</show_in_website>
74
                            <show_in_store>1</show_in_store>
75
                            <comment>Example of multiselect field.</comment>
76
                        </custom_field_four>
77
                    </fields>
78
                </section_two>
79
            </groups>                
80
        </customconfig_options>
81
    </sections>
82
</config>

Como você deve ter notado, este arquivo é responsável por exibir uma página de configuração do nosso módulo no backend. Vamos dar uma olhada em algumas das tags importantes nesse arquivo.

A tag de <tabs> é usada para definir as guias que serão exibidas no lado esquerdo da página de configuração. E a tag de <sections> é usada para definir seções em cada aba.

Vamos tentar entender através de um exemplo. Vá para Sistema > Configuração no backend do Magento. Você vai notar que existem guias diferentes como Geral, Catálogo, Clientes, etc.

Em cada guia, você vai ver diferentes seções. Por exemplo, sob a tag Avançado, há seções Admin, Sistema, Avançado e Desenvolvedor. Em nosso caso, nós vamos ter uma seção de Configurações Personalizadas sob a aba de Configuração Personalizada.

Em seguida, usamos a tag <groups> para agrupar os campos de configuração similar. Por exemplo, você gostaria de exibir um campo de imagem relacionada e áreas afins em seções diferentes de e-mail. Para isso, definimos <section_one> e a tag <section_two>.

Finalmente, nós envolvemos os campos de cada seção com a marca de <fields>. No nosso exemplo, temos um campo de texto sob o conjunto "Section One", enquanto outros campos como a caixa de seleção, botão de opção e seleção múltipla estão disponíveis sob o conjunto "Section Two". Então é isso para o arquivo "system.xml" .

Em seguida, vamos criar um arquivo do model "app/code/local/Envato/CustomConfig/Model/Options.php".

1
<?php
2
class Envato_CustomConfig_Model_Options
3
{
4
  /**

5
   * Provide available options as a value/label array

6
   *

7
   * @return array

8
   */
9
  public function toOptionArray()
10
  {
11
    return array(
12
      array('value'=>1, 'label'=>'One'),
13
      array('value'=>2, 'label'=>'Two'),
14
      array('value'=>3, 'label'=>'Three'),            
15
      array('value'=>4, 'label'=>'Four')                     
16
    );
17
  }
18
}

Nada de especial aqui — ele só é usado para alimentar as opções para um campo rádio do formulário e o campo select sob a forma de configuração.

Finalmente, nós precisamos criar o "app/code/local/Envato/CustomConfig/Helper/Data.php" arquivo para garantir que o sistema de tradução do Magento funcione corretamente. É quase um arquivo vazio, mas deve estar lá, conforme as convenções!

1
<?php
2
/**
3
 * Sample Widget Helper
4
 */
5
class Envato_CustomConfig_Helper_Data extends Mage_Core_Helper_Abstract
6
{
7
}

Já terminamos os arquivos de instalação. Na próxima seção, vou verificar como fica no backend do Magento.

Navegar através do Backend para a configuração de teste personalizada

Volte para o backend do Magento e limpe todos os caches. Pode ser encontrada em Sistema > Gerenciamento de Cache.

Agora, vá em Sistema > Configuração para abrir a página de configuração. Você deve observar a Tab de Configuração Personalizada do lado esquerdo da página. Abaixo, o link da Configuração Personalizada está disponível, clicando será aberta uma página de configuração para o módulo. Se você não pode ver, tente sair da seção admin e fazer o login novamente.

Custom Configuration in the Back-EndCustom Configuration in the Back-EndCustom Configuration in the Back-End

É uma interface bonita trabalhando fora da caixa, não é? Você pode brincar um pouco, preencha o formulário e clique no botão salvar configuração para confirmar as alterações, e o Magento irá lidar com o resto.

Para acessar os valores dos parâmetros de configuração no código, você pode usar o método estático getStoreConfig. Por exemplo, você pode recuperar o valor do parâmetro custom_field_one usando a seguinte sintaxe:

1
Mage::getStoreConfig('customconfig_options/section_one/custom_field_one');

A sintaxe é bastante simples — você precisa usar o padrão "nome_campo/section_name/group_name", conforme definido no arquivo system.xml.

Conclusão

Configuração de sistema admin é uma das partes mais fortes e úteis do Magento. Magento permite que você conecte em parâmetros de configuração personalizada muito facilmente, graças a escalabilidade de um dos mais poderosos sistemas de comércio eletrônico! Compartilhe seus pensamentos usando o feed abaixo!

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.