As Configurações do Magento

As configurações são o coração do Sistema Magento. Elas descrevem, em conjunto, quase qualquer módulo, classe, template, e etc que você vai precisar acessar. É um nível de abstração com o qual a maioria dos desenvolvedores PHP não estão acostumados a trabalhar, e enquanto ele aumenta o tempo de desenvolvimento e coceira na cabeça, ele também permite que você substitua o comportamento padrão do sistema, dando flexibilidade sem precedentes.

Para começar, vamos criar um módulo Magento que nos permita ver a configuração do sistema Magento no navegador. Enquanto todo o percurso é copiar e colar, vale a pena passar fazê-lo para que as coisas fiquem mais confortáveis enquanto você trabalha com Magento, e também para aprender a terminologia chave.

Para os impacientes, o módulo completo pode ser baixado aqui.

Configurando a estrutura de diretórios do módulo

Nós vamos criar um módulo Magento. Um módulo é um conjunto de arquivos PHP e XML, destinados a estender ou substituir o comportamento do core do sistema. Isso significa adicionar modelos de dados para rastrear informações de vendas, mudando o comportamento das classes existentes, ou adicionar recursos totalmente novos.

É importante notar que a maior parte da Base do Sistema Magent é construída usando o mesmo sistema de módulos que você vai usar. Se você olhar em

app/code/core/Mage

cada pasta é um módulo separado construído pela equipe da Varien. Juntos, estes módulos formam a community do sistema de compras que você está usando. Seus módulos devem ser colocados na seguinte pasta.

app/code/local/Packagename

“Packagename” deve ser uma string única para o Namespace do seu código. Em uma convenção não-oficial, deve ser o nome de sua empresa. A idéia é escolher uma string que niguém mais no mundo poderia usar.

app/code/local/Microsoft

Quando estou trabalhando em meus próprios projetos Magento, eu uso uma versão do meu nome de domínio, “Alanstormdotcom”.

Então, para adicionar um módulo ao seu Magento, crie a seguinte estrutura de diretórios

app/code/local/Alanstormdotcom/Configviewer/Block
app/code/local/Alanstormdotcom/Configviewer/controllers
app/code/local/Alanstormdotcom/Configviewer/etc
app/code/local/Alanstormdotcom/Configviewer/Helper
app/code/local/Alanstormdotcom/Configviewer/Model
app/code/local/Alanstormdotcom/Configviewer/sql

Você não vai precisar de todas essas pastas para cada módulo, mas criá-las agora é uma boa idéia.

A seguir, há dois arquivos que você precisa criar. O primeiro, config.xml, vai na pasta “etc” que você acabou de criar.

app/code/local/Alanstormdotcom/Configviewer/etc/config.xml

O segundo arquivo deve ser criado no seguinte local

app/etc/modules/Alanstormdotcom_Configviewer.xml

A convenção de nomenclatura para este arquivos é Packagename_Modulename.xml.

O arquivo config.xml deve conter o seguinte XML. Não se preocupe muito com o que tudo isso faz por agora, nós vamos chegar lá um dia

<?xml version="1.0" encoding="UTF-8">
<config>
 <modules>
 <Alanstormdotcom_Configviewer>
 <version>0.1.0</version>
 </Alanstormdotcom_Configviewer>
 </modules>
</config>

E finalmente, Alanstormdotcom_Configviewer.xml deve conter o seguinte xml.

<?xml version="1.0" encoding="UTF-8">
<config>
 <modules>
 <Alanstormdotcom_Configviewer>
 <active>true</active>
 <codePool>local</codePool>
 </Alanstormdotcom_Configviewer>
 </modules>
</config>

É isso aí, agora você tem um esqueleto de módulo que não vai fazer nada, mas que Magento conhece. Para se certificar de que você fez tudo certo

1* Limpe o cache do Magento

2* No Magento Admin, vá para Sistema -> Configuração -> Avançado

3* Expanda “Desligar módulos” (se já não estiver)

4* Certifique-se de que Alanstormdotcom_Configviewer aparece

Parabéns, você construiu o seu primeiro módulo Magento!

Criando um módulo de Configuração

Naturalmente, seu módulo não faz nada ainda. Quando estiver pronto, o nosso módulo

1* Verificará a existência de uma variável string de consulta “showConfig”

2* Se showConfig estiver presente, mostrará a nossa configuração Magento e interromperá a execução normal

3* Verificará a existência de uma variável de string de consulta adicional, “showConfigFormat” que vai nos deixar especificar se a saída será texto ou xml.

Em primeiro lugar, vamos adicionar a seguinte seção em nosso arquivo config.xml.

<?xml version="1.0" encoding="UTF-8">
 <config>
 <modules>...</modules>
 <global>
 <events>
 <controller_front_init_routers>
 <observers>
 <alanstormdotcom_configviewer_model_observer>
 <type>singleton</type>
 <class>Alanstormdotcom_Configviewer_Model_Observer</class>
 <method>checkForConfigRequest</method>
 </alanstormdotcom_configviewer_model_observer>
 </observers>
 </controller_front_init_routers>
 </events>
 </global>
 </config>

Em seguida, crie um arquivo em

Alanstormdotcom/Configviewer/Model/Observer.php

e coloque o seguinte conteúdo

php
 class Alanstormdotcom_Configviewer_Model_Observer {
 const FLAG_SHOW_CONFIG = 'showConfig';
 const FLAG_SHOW_CONFIG_FORMAT = 'showConfigFormat';

 private $request;

 public function checkForConfigRequest($observer) {
 $this->request = $observer->getEvent()->getData('front')->getRequest();
 if($this->request->{self::FLAG_SHOW_CONFIG} === 'true'){
 $this->setHeader();
 $this->outputConfig();
 }
 }

 private function setHeader() {
 $format = isset($this->request->{self::FLAG_SHOW_CONFIG_FORMAT}) ?
 $this->request->{self::FLAG_SHOW_CONFIG_FORMAT} : 'xml';
 switch($format){
 case 'text':
 header("Content-Type: text/plain");
 break;
 default:
 header("Content-Type: text/xml");
 }
 }

 private function outputConfig() {
 die(Mage::app()->getConfig()->getNode()->asXML());
 }
 }

É isso aí.

Limpe o cache do Magento novamente, e então carregue qualquer URL Magento com uma string de consulta “showConfig=true”

http://magento.example.com/?showConfig=true

O que eu estou olhando?

Você deve estar olhando para um arquivo XML gigante. Ele descreve o estado do seu sistema Magento. Ele lista todos os módulos, modelos, classes, event listeners ou quase qualquer outra coisa que você poderia pensar.

Por exemplo, considere o arquivo config.xml criado acima. Se você pesquisar no arquivo XML em seu navegador pelo texto

Configviewer_Model_Observer

você vai encontrar a sua classe listada. Cada módulo config.xml é analisado pelo Magento e incluído na configuração global.

Por que eu me importo?

Isso agora pode parecer esotérico, mas esta configuração é a chave para a compreensão do Magento. Cada módulo você criar será adicionado a esta configuração, e quando você precisar acessar um pedaço de uma funcionalidade do core do sistema, Magento será remetido à configuração para procurar alguma coisa.

Um exemplo rápido, antes de avançar para coisas mais práticas. Como um desenvolvedor de MVC, você já deve ter trabalhado com algum tipo de classe auxiliar, instanciado algo como

$helper_sales = new HelperSales();

Uma das coisas que o Magento faz é abstrair declarações de classes PHP. Em Magento, o código acima é algo como

$helper_sales = Mage::helper('sales/data');

Em inglês, o método estático “helper” vai

1* Olhar na seção <helpers /> do config.

2* Dentro de <helpers />, procurar uma seção <sales />.

3* Dentro de <sales /> olhar a seção <class />

4* Usar o nome de classe base encontrados em # 3 (Mage_Sales_Helper) para construir um nome de classe completa Mage_Sales_Helper_Data.

Enquanto isso parece um monte de trabalho (e é), a principal vantagem é que por sempre olhar para o arquivo de configuração para nomes de classes, podemos substituir as funcionalidades do core Magento sem alterar ou adicionar códigos do core. Este nível de meta programação, não é normalmente encontrado em PHP, permite estender de forma limpa apenas as partes do sistema que você precisa.s

2017-01-24T20:24:05+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x