1. Так вообще работает?
$notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE published = '1'")->fetchColumn(); echo $notReadNews;
То есть для начала надо разобраться выполняется запрос без условия или нет. А потом уже смотреть вариант с условием.

Но это ответ на заданный вопрос. А от меня: что за дичь с колонками под каждого пользователя?))