4.1.0.0 странная работа MODов

Тема в разделе "Ошибки и их решения", создана пользователем fsv_1, 14 июн 2025.

  1. fsv_1

    fsv_1 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Написал мод(xml) с 2-мя заменами
    1:
    <file path="catalog/view/template/common/header.twig">
    <operation error="skip">
    <search><![CDATA[ {{ telephone }} ]]></search>
    <add position="after"><![CDATA[
    <li class="list-inline-item"><a href="mailto:{{ store_email }}"><i class="fa-solid fa-envelope"></i> <span class="d-none d-lg-inline">{{ store_email }}</span></a></li> ]]></add>
    </operation>
    </file>
    2:
    <file path="catalog/controller/common/header.php">
    <operation error="skip">
    <search><![CDATA[ $data['telephone'] = $this->config->get('config_telephone'); ]]></search>
    <add position="after"><![CDATA[
    $data['store_email'] = $this->config->get('config_email');
    ]]></add>
    </operation>
    </file>
    чтобы в хидере был адрес почты. Бросил в систем. В админке нажал "обновить". Сайт лег с ошибкой 503.
    Разделил на два файла. Первый мод выдает значек "почта" в заголовок и сайт работает. Во втором ошибок в логе нет, файл в каталоге extension/ocmod.... появляется и сайт в 503 ошибке.
    $data['store_email'] = $this->config->get('config_email'); - добавляю руками в нужный файл, сайт работает. Что я делаю не так?
     
  2. Tom

    Tom Специалист

    Сообщения:
    1.044
    Симпатии:
    373
    Весь файл покажите.
     
  3. fsv_1

    fsv_1 Новичок

    Сообщения:
    4
    Симпатии:
    0
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>e-Mail_header</name>
    <code>e-Mail_header</code>
    <version>1.0.0</version>
    <author>щлшьмл</author>
    <link>https://netu.poka</link>


    <file path="catalog/view/template/common/header.twig">
    <operation error="skip">
    <search><![CDATA[ {{ telephone }} ]]></search>
    <add position="after"><![CDATA[

    <li class="list-inline-item"><a href="mailto:{{ store_email }}"><i class="fa-solid fa-envelope"></i> <span class="d-none d-lg-inline">{{ store_email }}</span></a></li> ]]></add>
    </operation>
    </file>

    <!-- неработает

    <file path="catalog/controller/common/header.php">
    <operation error="skip">
    <search><![CDATA[ $data['telephone'] = $this->config->get('config_telephone'); ]]></search>
    <add position="after"><![CDATA[

    $data['store_email'] = $this->config->get('config_email');

    ]]></add>
    </operation>
    </file>
    -->

    </modification>
     
  4. Tom

    Tom Специалист

    Сообщения:
    1.044
    Симпатии:
    373
    Не вижу здесь явных проблем.
    Даже в закомментированном участке. Возможно проблема связана с иным модификатором или с тем, что вносит схожие правки с другим xml файлом.
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
        <name>Add Store Email to Header</name>
        <code>store_email_header</code>
        <version>1.0.0</version>
        <author>Developer Name</author>
        <link>https://example.com</link>
    
        <!-- Adds store email link with icon to header template -->
        <file path="catalog/view/template/common/header.twig">
            <operation error="skip">
                <search><![CDATA[ {{ telephone }} ]]></search>
                <add position="after"><![CDATA[
    <li class="list-inline-item"><a href="mailto:{{ store_email }}"><i class="fa-solid fa-envelope"></i> <span class="d-none d-lg-inline">{{ store_email }}</span></a></li>
                ]]></add>
            </operation>
        </file>
    
        <!-- Assigns store email from config to template data -->
        <file path="catalog/controller/common/header.php">
            <operation error="skip">
                <search><![CDATA[ $data['telephone'] = $this->config->get('config_telephone'); ]]></search>
                <add position="after"><![CDATA[
    $data['store_email'] = $this->config->get('config_email');
                ]]></add>
            </operation>
        </file>
    
    </modification>
     
  5. fsv_1

    fsv_1 Новичок

    Сообщения:
    4
    Симпатии:
    0
    на 4.1.0.0 rs2, установил экспорт/импорт и написал первый XML добавления почты в контакты на страницу контакты, там было 3 изменения и одно не работало, даже без выдаваемых ошибок.

    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>e-Mail_contact</name>
    <code>e-Mail_contact</code>
    <version>1.0.0</version>
    <author>варвнр</author>
    <link>https://netu.poka</link>

    <file path="catalog/language/ru-ru/information/contact.php">
    <operation error="skip">
    <search><![CDATA[$_['text_telephone'] = 'Телефон';]]></search>
    <add position="after"><![CDATA[

    $_['mytext_email'] = 'Почта';

    ]]></add>
    </operation>
    </file>


    <file path="catalog/controller/information/contact.php">
    <operation error="skip">
    <search><![CDATA[ $data['telephone'] = $this->config->get('config_telephone'); ]]></search>
    <add position="after"><![CDATA[

    $data['store_email'] = $this->config->get('config_email');

    ]]></add>
    </operation>
    </file>

    <file path="catalog/view/template/information/contact.twig">
    <operation error="skip">
    <search><![CDATA[ {{ telephone }} ]]></search>
    <add position="after"><![CDATA[
    <br/>
    <br/>
    </div>
    {% endif %}

    {% if store_email %}
    <div class="col-sm-3"><strong>{{ mytext_email }}</strong>
    <br/>
    <a href="mailto:{{ store_email }}">{{ store_email }}</a> ]]></add>
    </operation>
    </file>

    </modification>

    первое изменение(добавление текста в языковой файл) неработает тоже. Текста в переменной store_email - нет. И ошибок нет. Все изменения сделанные руками в нужных файлах дают результат.
     
  6. fsv_1

    fsv_1 Новичок

    Сообщения:
    4
    Симпатии:
    0
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    4.172
    Симпатии:
    1.437
    В opencart 4 модификаторы работают немного по другому принципу и то что работало в 3х , не будет точно работать в 4х. Пока не сделают как было, лучше вообще не пользоваться модификаторами.
     
  8. World-Web

    World-Web Пользователь

    Сообщения:
    58
    Симпатии:
    11
    Поменяйте в файле строчку на правильную. Так же и в другом файле.
    Код:
    <id>e-Mail_header</id>
     
  9. vrndorog

    vrndorog Пользователь

    Сообщения:
    36
    Симпатии:
    5
    Погодите ругать четверку. Рискну пердположить, что властители Опенкарта хотят, чтобы мы здорово подумали, прежде, чем использовать Модификаторы. Контроллер header.php возвращает простой массив. Поставьте ему в хвост event, в котором и изменяйте его, а простая проверка isset поможет Вам случайно не переписать существующие ключи в этом массиве.