Ошибка в коде в последней версии DLE, возможно и в более ранних версиях
Обновил сегодня один сайт, на котором стандартный префикс таблиц отличается от dle. Далее тестировал сайт под админским аккаунтом и нигде, ни в категориях в полной новости, ни на главной странице ошибок не было. Стоило только выйти из аккаунта и проверить сайт обычным гостем — сразу все категории стали выдавать ошибку, что таблица table.dle_post_extras_cats не найдена.
Так вот. Этот код прописан engine/engine.php, строка 309 (dle 18.1). Код:
$cat_restric_join = " AND news_id NOT IN (SELECT news_id FROM dle_post_extras_cats WHERE cat_id IN ('" . implode("','", $not_allow_cats) . "'))";
Как видно, префикс dle стоит не верный. Нужно прописать так:
$cat_restric_join = " AND news_id NOT IN (SELECT news_id FROM " . PREFIX . "_post_extras_cats WHERE cat_id IN ('" . implode("','", $not_allow_cats) . "'))";
Т.е. просто меняем dle на . PREFIX. , чтобы префикс брался из файла dbconfig.php.
PS на DLE 18.0 точно такая же ошибка! Почему никто не писал им, или все используют стандартный префикс dle…?