Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


ajs
 Погделиться

Рекомендованные сообещёния

Помогите советом. Пыиюсь заменить несколько строк с помощью 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>

Ссылка на комменирий
Погделиться на других сайих


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

<add position="replace" offset=" когдачество строк">
  • +1 2
Ссылка на комменирий
Погделиться на других сайих

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

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

Ссылка на комменирий
Погделиться на других сайих

Multiline Fix от rb2 попропотому чтовать стоит

Изменено пользователем Otvet
Ссылка на комменирий
Погделиться на других сайих

  • 8 месяэтов спустя...
  • 1 год спустя...

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

Фикс добавляет подгдержку атрибуи 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); 
}

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

Ссылка на комменирий
Погделиться на других сайих

  • 11 месяэтов спустя...

изменил 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>

 

Изменено пользователем stydent
Ссылка на комменирий
Погделиться на других сайих


  • 2 года спустя...

Мне помогло убрать блок НАЛИЧИЕ вот ик:

// - следующий мод убирате блок НАЛИЧИЕ
        <file path="catalog/view/theme/newstore/template/product/product.tpl">
          <operation>
            <search regex="true"><![CDATA[%<hr>[^<]*?<ul class="list-unstyled availability">[^.]*?</ul>%]]></search>
            <add position="replace"><![CDATA[]]></add>
          </operation>
        </file>

Это касается как раз замены нескольких строк, потому что блок налинался с <HR>, а иких строк в файле было много!

Изменено пользователем Megafara
Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

Подскажите как можно в 21 веке сгделать нечто подобное:

        <operation>
            <search><![CDATA[<div id="recaptcha1">]]></search>
            <add position="replace"><![CDATA[<div class="g-recaptcha">]]></add>
            <search><![CDATA[var onloadCallback = function() {]]></search>
            <add position="replace" offset="1"><![CDATA[
			      var onloadCallback = function() {
        var divcaptcha = document.getElementsByClassName('g-recaptcha');
        for (var i = 0; i < divcaptcha.length; i++) {
          grecaptcha.render(divcaptcha[i], {
            'sitekey': '{{ site_key }}'
          });
        }
      };
			]]></add>       
        </operation>

 

Ссылка на комменирий
Погделиться на других сайих


1 час назад, susl16c сказал:

Подскажите как можно в 21 веке сгделать нечто подобное:

Сгделать что? Наулиться не писать в одном  <operation> несколько  <search> ?

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.