Página 1 de 1

Problema com o vqmod do opencart

Enviado: 21 Fev 2012, 05:33
por daniel_jhonatan
Olá quando eu procuro por mais de uma linha de código não funciona?

Re: Problema com o vqmod do opencart

Enviado: 21 Fev 2012, 12:39
por Renato Frota
Em alguns casos até encontra, mas uma busca por conteúdos de multi-linhas não é correto (o autor não garante esta funcionalidade).

Se você está procurando múltiplas linhas para fazer um replace, use o parâmetro offset dentro do campo search, e o replace vai agregar mais linhas.

exemplo: texto original
Código: Selecionar todos
esta é a linha 1
esta é a linha 2
esta é a linha 3
Código: Selecionar todos
<operation>
<search position="replace" offset="1"><![CDATA[linha 1]]></search>
<add><![CDATA[esta é a nova linha 1
esta é a nova linha 2]]></add>
</operation>
resultado final:
Código: Selecionar todos
esta é a nova linha 1
esta é a nova linha 2
esta é a linha 3
mais aqui: http://code.google.com/p/vqmod/wiki/Scripting

Re: Problema com o vqmod do opencart

Enviado: 21 Fev 2012, 14:53
por daniel_jhonatan
É que eu estou querendo ocutar certas coisa que não são uteis para mim no admin, por exemplo o modulo Downloads.
Tetei colocar o offset mais funcionou. :(
Li a documentação mais não entedi como usar o valor do offset. O que significa o valor que esta entre aspas no parametro offset?

Queria saber se essa seria a melhor maneira de ocutar os itens que eu não preciso no admin?


Vejá o código que eu estou usando:
Código: Selecionar todos
<modification>

	<id>Ocuta o modulo Downloads que vem como padrao.</id>
	<version>1.0.0</version>
	<vqmver>2.1.5</vqmver>
	<author>Daniel Jhonatan - daniel_jhonatan123@hotmail.com / www.webdesigndaniel.com.br</author>

	<file name="admin/view/template/common/header.tpl"><!-- Ocuta do Menu da Administracao -->
		<operation error="skip">
            <search position="replace">
			<![CDATA[
				<li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li>
			]]>
			</search>
            <add>
			<![CDATA[
            ]]>
			</add>
		</operation>
	</file>

	<file name="admin/view/template/catalog/product_form.tpl"><!-- Ocuta da Aba LIGACAO no cadastro no produto -->
		<operation error="skip">
            <search position="replace">
			<![CDATA[
            <tr>
              <td><?php echo $entry_download; ?></td>
              <td><div class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($downloads as $download) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                  <div class="<?php echo $class; ?>">
                    <?php if (in_array($download['download_id'], $product_download)) { ?>
                    <input type="checkbox" name="product_download[]" value="<?php echo $download['download_id']; ?>" checked="checked" />
                    <?php echo $download['name']; ?>
                    <?php } else { ?>
                    <input type="checkbox" name="product_download[]" value="<?php echo $download['download_id']; ?>" />
                    <?php echo $download['name']; ?>
                    <?php } ?>
                  </div>
                  <?php } ?>
                </div></td>
            </tr>
			]]>
			</search>
            <add>
			<![CDATA[
            ]]>
			</add>
		</operation>
	</file>

</modification>

Re: Problema com o vqmod do opencart

Enviado: 21 Fev 2012, 16:37
por Renato Frota
Não quebre as linhas sem necessidade! Campos de busca, especialmente os envolvidos por CDATA, são campos literais. Gera mais processamento a remoção dessas quebras, espaços e tabulações. Só quebre linhas na tag <add>, exatamente onde quiser exista uma quebra.
Código: Selecionar todos
<modification>
   <id>Ocuta o modulo Downloads que vem como padrao.</id>
   <version>1.0.0</version>
   <vqmver>2.1.5</vqmver>
   <author>Daniel Jhonatan - daniel_jhonatan123@hotmail.com / www.webdesigndaniel.com.br</author>
   <file name="admin/view/template/common/header.tpl"><!-- Ocuta do Menu da Administracao -->
      <operation error="log">
            <search position="replace"><![CDATA[<li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li>]]></search>
            <add><![CDATA[]]></add>
      </operation>
   </file>
   <file name="admin/view/template/catalog/product_form.tpl"><!-- Ocuta da Aba LIGACAO no cadastro no produto -->
<!-- primeira operacao troca esta linha foreach e as 4 anteriores por apenas ela mesma (as 4 anteriores somem) -->
      <operation error="log">
            <search position="replace" offset="-4"><![CDATA[<?php foreach ($downloads as $download) { ?>]]></search>
            <add><![CDATA[<?php foreach ($downloads as $download) { ?>]]></add>
      </operation>
<!-- segunda operacao troca esta linha foreach e as 11 seguintes por NADA ou seja completa a remocao do bloco -->
      <operation error="log">
            <search position="replace" offset="13"><![CDATA[<?php foreach ($downloads as $download) { ?>]]></search>
            <add><![CDATA[]]></add>
      </operation>
   </file>
</modification>
mas uma forma mais correta, seria simplesmente colocar o atributo display com o valor none nesta <tr>, pois se algum produto já tiver atribuição a downloads depois de aplicar esse mod acima, as informações de produtos editados serão perdidas (o formulario é enviado sem o campo product_download[] pois você o removeu.
Código: Selecionar todos
<modification>
   <id>Ocuta o modulo Downloads que vem como padrao.</id>
   <version>1.0.0</version>
   <vqmver>2.1.5</vqmver>
   <author>Daniel Jhonatan - daniel_jhonatan123@hotmail.com / www.webdesigndaniel.com.br</author>
   <file name="admin/view/template/common/header.tpl"><!-- Ocuta do Menu da Administracao -->
      <operation error="log">
            <search position="replace"><![CDATA[<li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li>]]></search>
            <add><![CDATA[]]></add>
      </operation>
   </file>
   <file name="admin/view/template/catalog/product_form.tpl"><!-- Ocuta da Aba LIGACAO no cadastro no produto -->
      <operation error="log">
            <search position="replace" offset="-1"><![CDATA[<td><?php echo $entry_download; ?></td>]]></search>
            <add><![CDATA[<tr style="display:none;">
              <td><?php echo $entry_download; ?></td>]]></add>
      </operation>
   </file>
</modification>

Re: Problema com o vqmod do opencart

Enviado: 21 Fev 2012, 16:43
por Renato Frota
Outra coisa. Evite usar o skip em mods simples como esse.

O correto é você logar as ocorrências (com log - loga e continua - ou abort - loga e reverte as alterações do xml, cancelando sua aplicação), pois se o arquivo de logs do vqmod não está vazio, é sinal que alguma coisa tem que ser corrigida.

O skip é utilizado é grandes xml, que alteram vários arquivos, e algumas alterações mais simples não comprometem o resultado final (normalmente estáticas) ou são gatilhos que podem ou não ser encontrados, conforme o conteúdo das páginas varia.

Re: Problema com o vqmod do opencart

Enviado: 25 Fev 2012, 04:13
por Renato Frota
Estava fazendo um css aqui e usei display:hidden. Então me dei conta que o correto é display:none! E me lembrei que tinha orientado este tópico dias atrás.

Corrigi a informação 2 posts acima. =)