Приветствую.
В func.php, fn_ab__dotd_get_plural_rule():
if (__('ab__dotd.countdown.seconds',[],'en') === __('ab__dotd.countdown.seconds',[],$lang_code)) {
Если язык en в магазине не установлен, этой строки нет в cscart_language_values, а ядро не кэширует отсутствующие langvars — в итоге на каждой странице с блоком «Товара дня» выполняется лишний SQL-запрос, вечно. Воспроизводится на CS-Cart 4.20.1 ULTIMATE (языки uk/ru): дважды открыть страницу с блоком — запрос виден в дебагере оба раза.
Обошли так:
INSERT IGNORE INTO cscart_language_values (lang_code, name, value)
VALUES ('en', 'ab__dotd.countdown.seconds', '[n] second|[n] seconds|[n] seconds');
Предложение: кэшировать результат функции в static по $lang_code или не запрашивать перевод неустановленного языка. Спасибо!