Jump to content
ajs

OCMOD замена нескольких строк

Recommended Posts

Помогите советом. Пытаюсь заменить несколько строк с помощью OCMOD в  OC 2 . если одну менять , то все работает, а если в search несколько строк добавить, то не работает.  

 

Пример который не работает:



<operation>
            <search><![CDATA[
              if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/address_form.tpl')) {
    $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/address_form.tpl', $data));
    } else {
    $this->response->setOutput($this->load->view('default/template/account/address_form.tpl', $data));
    }
            ]]></search>
                <add position="replace"><![CDATA[
              if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/custom_address_form.tpl')) {
            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/custom_address_form.tpl', $data));
            } else {
            $this->response->setOutput($this->load->view('default/template/account/custom_address_form.tpl', $data));
            }
            ]]></add>
        </operation>

Share this post


Link to post
Share on other sites

Ищем первую строку,меняем её и определённое количество после неё

<add position="replace" offset=" количество строк">
  • +1 1

Share this post


Link to post
Share on other sites

VQMOD / OCMOD ищут только по одной строке

для поиска по нескольким - делать отдельно для каждой

Share this post


Link to post
Share on other sites

Multiline Fix от rb2 попробовать стоит

Edited by Otvet

Share this post


Link to post
Share on other sites

Иногда при написании модификаторов для Опенкарт возникает необходимость поиска многострочных маркеров для более высокой точности.

Фикс добавляет поддержку атрибута qoute, с которым используется функция preg_quote(). Изменения производятся в файле admin/controller/extension/modification.php. 

Нужно найти следующий фрагмент кода:

$search = trim($operation->getElementsByTagName('search')->item(0)->textContent); 
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit'); 
$replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);

И заменить его на этот (добавилась строка):

$search = $operation->getElementsByTagName('search')->item(0)->textContent; 
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit'); 
$quote = $operation->getElementsByTagName('search')->item(0)->getAttribute('quote'); 
$replace = $operation->getElementsByTagName('add')->item(0)->textContent;

Далее после блока:
 

// Limit 
if (!$limit) { 
   $limit = -1; 
}

Добавить этот:

// Quote 
if ($quote == 'true') { 
    $search = preg_quote($search); 
}

Вот и все! Не забудьте сохранить файл и очистить кеш.

Share this post


Link to post
Share on other sites

изменил admin/controller/extension/modification.php как написали.

но мой модификатор не работает с двумя строчками. с одной все ок. чего может не хватать?

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>my_hack</name>
  <code>2</code>
  <version>228</version>
  <author>Андрей</author>
  <link>5</link>
<file path="catalog/view/theme/default/template/common/header.tpl">
        <operation>
            <search reqex="true" quote="true" limit="2"><![CDATA[
<script src="catalog/view/javascript/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
<link href="catalog/view/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
]]></search>
            <add position="replace"><![CDATA[
            4545
            ]]></add>
        </operation>  
        
        
    </file>
</modification>

 

Edited by stydent

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.