Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


ajs

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>

Надіслати
Поділитися на інших сайтах


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

<add position="replace" offset=" количество строк">
  • +1 2
Надіслати
Поділитися на інших сайтах

  • 8 months later...
  • 1 year later...

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

Фикс добавляет поддержку атрибута 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 months later...

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

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

// - следующий мод убирате блок НАЛИЧИЕ
        <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 month later...

Подскажите как можно в 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
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.