Как заменить функцию в файле fn.products.php аддоном?

Мне необходимо заменить функцию fn_get_product_price в файле app/functions/fn.products.php

Я сделал аддон со структурой:
[папка имя_аддона]

  • [папка functions]
    • [файл fn.products.php]

Там прописал эту функцию, но при активации аддона ничего не происходит

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

Тогда вопрос как мне подменить эту функцию на свою? Просто если я просто отредактирую этот файл то большая вероятность того что в случае обновления изменения исчезнут.

Конечно исчезнут. По-любому варианта два. Либо в своём модуле использовать хуки из этой функции, либо, если хуками требуемого результата добиться невозможно, как вы сказали, правит функцию “на месте”.

Гугление дало результат:

https://www.php.net/manual/ru/function.runkit7-function-redefine.php

Вы можете переопределить php функцию с помощью php расширения на своём сервере.
Нужно попросить администратора хостинга включить это расширение для вашего сайта + немного кода с Вашей стороны.

Можете написать мне в телеграмм https://t.me/max_cscart

1 лайк

Это для php 7 и далее версий?

Очень похоже на то. Но я находил инфу и по более старой библиотеке. У Вас php 5?

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

1 лайк

Попробуйте это

https://php5.kiev.ua/manual/function.runkit-function-redefine.html

Я правда не знаю. Может этого нет в стандартной поставке php и его нужно докачивать с PECL

https://pecl.php.net/

В функции же есть и pre, и post хуки. Используйте их в своем модуле, чтобы полностью изменить возвращаемый функцией результат

1 лайк

Благодарю за совет. Так и сделал. Привязался к post хуку и все работает!