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:

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

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 .

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

Agora vamos juntar tudo com os comentários:

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

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

<?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>

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 *