Написал мод(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'); - добавляю руками в нужный файл, сайт работает. Что я делаю не так?
<?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>
Не вижу здесь явных проблем. Даже в закомментированном участке. Возможно проблема связана с иным модификатором или с тем, что вносит схожие правки с другим 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>
на 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 - нет. И ошибок нет. Все изменения сделанные руками в нужных файлах дают результат.
https://forum.opencart.com/viewtopic.php?t=235431 - похоже что глюк в 4х версии, даже в 4.1.0.3 уже нашли. Остается на 3х переходить?
В opencart 4 модификаторы работают немного по другому принципу и то что работало в 3х , не будет точно работать в 4х. Пока не сделают как было, лучше вообще не пользоваться модификаторами.
Погодите ругать четверку. Рискну пердположить, что властители Опенкарта хотят, чтобы мы здорово подумали, прежде, чем использовать Модификаторы. Контроллер header.php возвращает простой массив. Поставьте ему в хвост event, в котором и изменяйте его, а простая проверка isset поможет Вам случайно не переписать существующие ключи в этом массиве.