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

ocmod найти кусок кода и заменить всю строку


Recommended Posts

Всем привет. Подскажите пожалуйста, не могу разобраться в проблеме.

 

Имеется код в языковом файл:

// Error
$_['error_login']                  = 'Неправильно заполнены поле E-Mail и/или пароль!';
$_['error_attempts']               = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час';
$_['error_approved']               = 'Необходимо подтвердить аккаунт перед авторизацией.';

Задача: заменить значение error_login на другое


Кусок кода ocmod:

        <operation>
            <search><![CDATA[$_['error_login']]]></search>
            <add position="replace"><![CDATA[
$_['error_login']                  = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
]]></add>
        </operation>


После применения ocmod получается так, что вызывает синтаксическую ошибку:
 

// Error

$_['error_login']                  = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
                  = 'Неправильно заполнены поле E-Mail и/или пароль!';
$_['error_attempts']               = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час';
$_['error_approved']               = 'Необходимо подтвердить аккаунт перед авторизацией.';


Как можно найти кусок кода и заменить всю строку? Не хочу искать по всей строке т.к. перевод в разных сборка Opencart может отличаться.

Змінено користувачем ILexus
Надіслати
Поділитися на інших сайтах


3 часа назад, ILexus сказал:

перевод в разных сборка Opencart может отличаться

вы не заменяйте, а вставляйте перед $_['error_attempts']:

	<search><![CDATA[
		$_['error_attempts']
	]]></search>
		<add position="before"><![CDATA[
$_['error_login'] = 'Новый текст';
		]]></add>

 

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

Или так

<operation>
  <search><![CDATA[$_['error_login']                  = 'Неправильно заполнены поле E-Mail и/или пароль!';]]></search>
  <add position="replace"><![CDATA[
$_['error_login']                  = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
  ]]></add>
</operation>

 

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

6 минут назад, klaos27 сказал:

Или так

 

4 часа назад, ILexus сказал:

перевод в разных сборка Opencart может отличаться

 

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


 

4 часа назад, ILexus сказал:

Всем привет. Подскажите пожалуйста, не могу разобраться в проблеме.

 

Имеется код в языковом файл:


// Error
$_['error_login']                  = 'Неправильно заполнены поле E-Mail и/или пароль!';
$_['error_attempts']               = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час';
$_['error_approved']               = 'Необходимо подтвердить аккаунт перед авторизацией.';

Задача: заменить значение error_login на другое


Кусок кода ocmod:


        <operation>
            <search><![CDATA[$_['error_login']]]></search>
            <add position="replace"><![CDATA[
$_['error_login']                  = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
]]></add>
        </operation>


После применения ocmod получается так, что вызывает синтаксическую ошибку:
 


// Error

$_['error_login']                  = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
                  = 'Неправильно заполнены поле E-Mail и/или пароль!';
$_['error_attempts']               = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час';
$_['error_approved']               = 'Необходимо подтвердить аккаунт перед авторизацией.';


Как можно найти кусок кода и заменить всю строку? Не хочу искать по всей строке т.к. перевод в разных сборка Opencart может отличаться.

 

 

Частный случай 1

<operation>

<search><![CDATA[$_['error_login']]]></search>

<add position="after"><![CDATA[ $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!'; ]]></add>

</operation>

 

 

Частный случай 2

<operation>

<search><![CDATA[$_['error_login']]]></search>

<add position="replace"><![CDATA[ $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!'; // ]]></add>

</operation>

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

<operation> 
<search index="1"><![CDATA[// Error]]></search> 
     <add position="replace"><![CDATA[ 
       // Error
        $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';

    ]]></add> 
</operation>

На сколько я понял, речь именно про замену существующей строки, а не добавления новой.

 

Только почему не применить свою языковую переменную и не париться с заменой?

Змінено користувачем Tom
Надіслати
Поділитися на інших сайтах

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

Только почему не применить свою языковую переменную и не париться с заменой?

Языковая переменная может использоваться в нескольких местах и добавление своей приведёт к необходимости внесения множественных изменений.

Гораздо проще заменить, но при замене строки, в которой определена переменная, могут возникнуть проблемы, например с пробелами или табами...

Поэтому проще не заменять, а переопределить переменную. Именно это и предложил chukcha.

Для переопределения переменной не обязательно привязываться к строке в которой она определена. Я делаю так: привязка к <?php и добавление после привязки с заведомо большим offset, в итоге переменные добавляются в конец файла и гарантировано переопределяют переменные объявленные ранее.

    <operation>
      <search><![CDATA[<?php]]></search>
      <add position="after" offset="9999"><![CDATA[
$_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!';
$_['error_login1'] = 'Значение переменной 1';
$_['error_login2'] = 'Значение переменной 2';
      ]]></add>
    </operation>

Это особенно удобно когда надо переопределить несколько переменных... всё выполняется в одной операции.

  • +1 2
Надіслати
Поділитися на інших сайтах

30 минут назад, chukcha сказал:

Даже если переменой нет, то она появится

Мне нужно чтобы были языковые переменные с определёнными значениями... мне монопенисуально были переменные или нет, главное что после модификатора переменные будут.

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

Всем спасибо за ответы, перепробовал куча вариантов, думал почему лыжи не едут, оказывается нет такого функционала в ocmod :)

 

13 часов назад, chukcha сказал:

Частный случай 2

<operation>

<search><![CDATA[$_['error_login']]]></search>

<add position="replace"><![CDATA[ $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!'; // ]]></add>

</operation>

Именно к такой конструкции кода я пришел перебором разных вариантов, работает, но мне показалось это такой костыль :) , комментировать через ocmod часть старого кода которую не получилось полностью заменить. В примерах других разработчиков никогда такого не встречал.

 

10 часов назад, Tom сказал:

Только почему не применить свою языковую переменную и не париться с заменой? 

Да я хотел ввести новую переменную, но тогда придется вносить изменения в шаблон нескольких местах, что очень не хотелось бы. 

 

Переопределение переменной для меня будет самым верным решением в данном случае.

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


В качестве примера

<file path="catalog/controller/{*,extension/module}/{category,product,search,special,manufacturer,latest,featured,bestseller}.php">
      <operation>
          <search><![CDATA[
                Одинаковая переменная в нескольких файлах
               ]]></search>
           <add position="after"><![CDATA[
                Ваше новое значение
           ]]></add>
      </operation>
 </file>

 

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

Насколько я понял ocmod реплейсит именно искомое значение 

$_['error_login']

А не всю строку в которой есть совпадение.

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

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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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