() 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.



É 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!