Criando modificação no OpenCart com VQmod

Vamos aprender a como criar uma modificação no OpenCart, utilizando o VQmod. Caso não tenha instalado no OpenCart, você pode seguir esse tutorial passo a passo, de como instalar.

Como informado no tutorial de instalação, o VQMod serve pra realizar modificações, sem alterar o Core da aplicação, na hora de carregar os arquivos, ele chamada com a copia do arquivo criado com a modificação.

Vamos a prática.

Por padrão o OpenCart tem a opção de contagem de produtos  por categoria, o qual  você pode exibir ou não essa opção. O problema é que mesmo informando que não deseja exibir, ele continua fazendo a contagem. Então criaremos uma modificação pra resolver essa situação.

Vamos criar um arquivo chamado vqmod-alteracoes.xml, e vamos colocar na pasta vqmod/xml.

Criando modificação no OpenCart com VQmod
Criando modificação no OpenCart com VQmod

Agora vamos adicionar as informações básicas da nossa alteração, no próprio código terá a descrição de cada parte para uma melhor compreensão:

[xml]
<!– Inicia Marcação do XML, informando a versão e a codificação –>
<?xml version="1.0" encoding="UTF-8"?>
<!–
Abertura de tag modification, todas as informações estarão dentro dessa tag
–>
<modification>
<!–Nome do VQmod criado e descrição–>
<id>VQMOD – OPCIONAL DE CONTAGEM DE PRODUTO DAS CATEGORIAS</id>
<!–Informa a versão –>
<version>1.0</version>
<!–
Aqui informa a versão mínima do VQmod para essa modificação funcionar.
O parâmetro required="true" é opcional
–>
<vqmver required="true">2.4.0</vqmver>

<!–Autor da Modificação–>
<author>David CHC</author>

<!– Fechamento da Tag modification–>
</modification>
[/xml]

Agora vamos a parte da modificação mesmo, até agora só definimos as informações do nosso VQmod.

Basicamente agora, iremos informar qual arquivo queremos modificar nesse arquivo, qual trecho queremos adicionar ou alterar, e informar a alteração. Para uma melhor compreensão, colocarei apenas essa parte, com comentários, e no final será colocado todo o VQmod, com comentários, e também sem comentários .

[xml]
<!–
Na tag file, com parâmetro name, informamos
qual arquivos iremos modificar
–>
<file name="catalog/controller/common/header.php">
<!–
Dentro da tag Operation, vamos definir as nossa alteração
–>
<operation>
<!–
A tag search, irá busca parte do código que desejamos alterar
A propriedade position defini que tipo de ação será feita
replace => substituição do trecho informado
before => irá adicionar anters do trecho informado
after => irá adicionar depois do trecho informado
No nossa caso, iremos substituir o trecho informado dentro:
<![CDATA[ ]]>
–>
<search position="replace"><![CDATA[$product_total = $this->model_catalog_product->getTotalProducts($data);]]></search>

<!–Agora definimos nossa alteração–>
<add><![CDATA[$product_total = $this->config->get(‘config_product_count’) ? $this->model_catalog_product->getTotalProducts($data) : ” ;]]></add>
<!–Fechamento da tag operation–>
</operation>
<!– fechamento da tag file–>
</file>
[/xml]

Agora vamos juntar tudo com os comentários:

[xml]
<!– Inicia Marcação do XML, informando a versão e a codificação –>
<?xml version="1.0" encoding="UTF-8"?>
<!–
Abertura de tag modification, todas as informações estarão dentro dessa tag
–>
<modification>
<!–Nome do Vqmod criado e descrição–>
<id>VQMOD – OPCIONAL DE CONTAGEM DE PRODUTO DAS CATEGORIAS</id>
<!–Informa a versão –>
<version>1.0</version>
<!–
Aqui informa a versão mínima do vqmod para essa modificação funcionar.
O parametro required="true" é opcional
–>
<vqmver required="true">2.4.0</vqmver>

<!– autor da Modificação–>
<author>David CHC</author>

<!–
Na tag file, com parametro name, informamos
qual arquivos iremos modificar
–>
<file name="catalog/controller/common/header.php">
<!–
Dentro da tag Operation, vamos definir as nossa alteração
–>
<operation>
<!–
A tag search, irá busca parte do código que desejamos alterar
A propriedade position defini que tipo de ação será feita
replace => substituição do trecho informado
before => irá adicionar anters do trecho informado
after => irá adicionar depois do trecho informado
No nossa caso, iremos substituir o trecho informado dentro:
<![CDATA[ ]]>
–>
<search position="replace"><![CDATA[$product_total = $this->model_catalog_product->getTotalProducts($data);]]></search>

<!–Agora definimos nossa alteração–>
<add><![CDATA[$product_total = $this->config->get(‘config_product_count’) ? $this->model_catalog_product->getTotalProducts($data) : ” ;]]></add>
<!–Fechamento da tag operation–>
</operation>
<!– fechamento da tag file–>
</file>
<!– Fechamento da Tag modification–>
</modification>
[/xml]

Agora vamos sem comentários ( se forem testar, utilizem o que está sem comentário)

[xml]
<?xml version="1.0" encoding="UTF-8"?>
<modification>

<id>VQMOD – OPCIONAL DE CONTAGEM DE PRODUTO DAS CATEGORIAS</id>
<version>1.0</version>
<vqmver required="true">2.4.0</vqmver>
<author>David CHC</author>

<file name="catalog/controller/common/header.php">
<operation>
<search position="replace"><![CDATA[$product_total = $this->model_catalog_product->getTotalProducts($data);]]></search>
<add><![CDATA[$product_total = $this->config->get(‘config_product_count’) ? $this->model_catalog_product->getTotalProducts($data) : ” ;]]></add>
</operation>
</file>

</modification>
[/xml]

Existem n parâmetros que podem se adicionados, com trabalhar com expressão regular, ignorar erro, definir vários arquivos pra serem modificadores ao mesmo tempo, etc.

O link abaixo, está a documentação, com exemplos que poderá ajudar melhor a compreensão.

https://code.google.com/p/vqmod/wiki/Scripting

Espero que tenha ajudado, e até a próxima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *