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

В OpenCart 3 в OCMOD изменено поведение index="0"??


Recommended Posts

Есть файл: catalog/controller/product/product.php

В нем есть строка: if ($product_info) {

Я после нее вставляю свой код.

 

Проблема в том, что есть модули, которые перелопачивают файл catalog/controller/product/product.php

И выходит, что "if ($product_info) {" может встречаться уже 2 раза. Поэтому на всякий случай ставлю index="0", чтобы вклиниваться только в метод index()

 

<file path="catalog/controller/product/product.php">
		<!-- for NO CONFLICT with quoteProduct() index 0 -->
		<operation>
			<search index="0"><![CDATA[
				if ($product_info) {
			]]></search>
			<add position="after"><![CDATA[			// Customize . Begin
			//...
			// Customize . End
			]]></add>
		</operation>
</file>

 

В OpenCart 3 если строка "if ($product_info) {" встречается только 1 раз, то этот самый index="0" не отрабатывает. В 2.3 вроде все работает. Встречался ли кто с подобным поведением? Какие варианты выхода из ситуации?

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

17 минут назад, SergeTkach сказал:

И выходит, что "if ($product_info) {" может встречаться уже 2 раза. Поэтому на всякий случай ставлю index="0", чтобы вклиниваться только в метод index()

не факт, что добавление кода может происходить после, может и перед, так что здесь Индекс не всегда сработает.

постарайтесь зацепить свой код под другим условием.

 

И конечно пожелание для разработчиков - старайтесь не копировать Стандартный код Opencart`а в своих модификаторах - уважайте и чужой труд, ведь можно тоже самое условие указать по другому, например без пробелов:

if($product_info){

 

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

Я бы не рекомендовал вообще использовать index, потом могут быть "неопределенные" проблемы 
Найдите другую привязку

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

возможно что

if($product_info){

 

Появился ранее чем ожидалось другим модификаторм

index и offset - очень чувствительны

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

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

старайтесь не копировать Стандартный код Opencart`а в своих модификаторах

Хм, а об этом я бы и не подумал )) Правда, я и не клонирую его. Стараюсь клонировать код (если это необходимо) в отдельных файлах модуля, чтобы можно было вносить какие-то правки по необходимости, и не менять системные методы. Особенно, это касается моделей. Но в принципе, посыл понял)

 

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

Я бы не рекомендовал вообще использовать index, потом могут быть "неопределенные" проблемы 
Найдите другую привязку

Да, там ситуации такие: клонирование метода index() + добавление какой-то функционала. Всякие там прибабахи. То есть, если есть строка "if ($product_info) {", то есть и "if ($category_info['meta_title']) {". Ну в общем, поживем посмотрим. Пока что я отменяю index="0" )

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

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

Пока что я отменяю index="0" )

 

нормально все работает, отменять не нужно

скорей всего как выше и писали - дело в очередности выполнения модификаторов

 

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

 

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

но вообще желательно избегать index, offset и тд

не факт, что код какого-нибудь другого мода будет добавлен ПОСЛЕ первого вхождения, а не ПЕРЕД ним

если есть возможность - лучше выбирать что-то другое для привязки

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

  • 1 year later...
4 часа назад, Facebook сказал:

А если код встречается два раза в разных местах, и оба нужно заменить, как указать в этом случае ?

чтобы на все вхождения в файле действовало - используйте просто search без index

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

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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