Jump to content
Sign in to follow this  
ILexus

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 может отличаться.

Edited by ILexus

Share this post


Link to post
Share on other sites
3 часа назад, ILexus сказал:

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

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

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

 

Share this post


Link to post
Share on other sites

Или так

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

 

Share this post


Link to post
Share on other sites
6 минут назад, klaos27 сказал:

Или так

 

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

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

 

Share this post


Link to post
Share on other sites


 

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>

Share this post


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

    ]]></add> 
</operation>

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

 

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

Edited by Tom

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
4 часа назад, Yesvik сказал:

заведомо большим offset,

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

Share this post


Link to post
Share on other sites
30 минут назад, chukcha сказал:

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

<operation>

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

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

</operation>

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

<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>

 

Share this post


Link to post
Share on other sites

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

$_['error_login']

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

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.

Sign in to follow this  

  • Similar Content

    • By setbenson
      300.00 руб
      Скачать/Купить дополнение


      Обновление количества товаров в корзине без перезагрузки страницы [ocmod]
      Расширение заменяет вывод количества возле товаров в корзине (и в мини-корзине) на поле ввода с кнопками "+" и "-", которые обновляют количество добавленных товаров в корзину без перезагрузки страницы (Ajax).
       
      Совместимо с шаблоном Default, или любым другим, в котором не изменен вывод товаров в файлах /catalog/view/theme/[шаблон]/template/common/cart.twig (мини-корзина в шапке сайта) и /catalog/view/theme/[шаблон]/template/checkout/cart.twig (страница "Корзина").
       
      Если нужна адаптация под ваш шаблон, напишите мне личное сообщение.
      Добавил setbenson Добавлено 25.11.2019 Категория Покупки, оформление заказа, корзина Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Не проверялось Обращение к серверу разработчика Нет Старая цена 0  
    • By setbenson
      Особенности:
      простота установки; создание неограниченного количества блоков; простота использования без каких-либо знаний в области программирования; мультиязычность (English, Русский, Українська)  
      Преимущества:
      переопределение заголовка модуля; управлением изображением, заголовком и кратким описанием для блоков; Изменение количества столбцов (Bootstrap3); управление размером и выравниванием изображения;
    • By setbenson
      300.00 руб
      Скачать/Купить дополнение


      Модуль преимуществ с пользовательским изображением [ocmod]
      Особенности:
      простота установки; создание неограниченного количества блоков; простота использования без каких-либо знаний в области программирования; мультиязычность (English, Русский, Українська)  
      Преимущества:
      переопределение заголовка модуля; управлением изображением, заголовком и кратким описанием для блоков; Изменение количества столбцов (Bootstrap3); управление размером и выравниванием изображения; Добавил setbenson Добавлено 23.11.2019 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Opencart.pro 2.3 Обращение к серверу разработчика Нет Старая цена 0  
    • By setbenson
      Расширение заменяет вывод количества возле товаров в корзине (и в мини-корзине) на поле ввода с кнопками "+" и "-", которые обновляют количество добавленных товаров в корзину без перезагрузки страницы (Ajax).
       
      Совместимо с шаблоном Default, или любым другим, в котором не изменен вывод товаров в файлах /catalog/view/theme/[шаблон]/template/common/cart.twig (мини-корзина в шапке сайта) и /catalog/view/theme/[шаблон]/template/checkout/cart.twig (страница "Корзина").
       
      Если нужна адаптация под ваш шаблон, напишите мне личное сообщение.
    • By mpn2005
      Модуль динамически изменяет цену товара при выборе опции и изменении количества товара.
      Дополнительные действия к цене опции: =, %, *,  /.
       
      Демо:
      OpenCart v3.0.2.0: Демо1 Демо2 (акция)
       
      Возможности:
      Учитывается акция на товар Учитывается скидка на товар Обновление цены с учётом налогов Обновление цены в бонусных баллах (вкл / выкл) Умножение цены на введённое количество товара (вкл / выкл) Акция на опции пропорционально акции на товар  (вкл / выкл) Скидка на опции пропорционально скидке на товар (вкл / выкл) Автоматический выбор первой опции (вкл / выкл) Вывод цены в дополнительной валюте (вкл / выкл) Не показывать цену опции Дополнительные действия к цене опции: =, %, *,  /. Поддержка шаблонов: UniShop, LightShop, NewStore и друие  
      Настройки модуля находятся на закладке Локализация в конфигурации магазина
       
      Версия для OC1.5, OC2
       
      Особенности работы:
      Не используется AJAX, поэтому при подсчёте скидок учитывается только введённое количество (товар, лежащий в корзине, в расчёте не участвует).  
      Поддержка:
      При возникновении проблем с установкой пишите в личку, помогу с установкой. Для некоторых тем может понадобится доработка модуля. Пишите в личку с указанием доступа на фтп и в админку, а также ссылкой на образец товара, помогу с адаптацией. Поддержка не круглосуточная, отвечу как только буду на связи. При длительном отсутствии всегда сообщаю об этом в профиле. При возникновении вопросов о возможности реализации дополнительного функционала, свяжитесь со мной перед покупкой.
  • 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.