не понимаю такого подхода, получается в коде куча проверок версий движка, куча кода для разных версий движка, читабельность падает, поддерживать и работать с таким кодом намного сложнее. Плюс еще появляются разные языковые папки, что не есть правильно
Я для каждой сильно измененной версии движка создаю отдельную версию модуля. В принципе версий движка не много: 1.5 (1.5.5 и 1.5.6 похожи, 1.5.4 и ниже уже сильно устарели, их можно вообще не поддерживать), 2.0-2.1, 2.2
весь код в гите, так что добавить какую-то новую фичу на разные версии не проблема.
+ так безопаснее, если какая-то версия модуля уходит на варезники, то она будет работать только на своей версии движка, на других уже не будет и пользователю ничего не остается как купить модуль для своей версии движка, рекламу которому сделал варезник))