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.

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