вопрос
Из-за мультиязычности сайта у меня стоит два движка DLE с одной MySQL и используется два префикса таблиц: префикс "dle" для русскоязычной версии сайта и префикс "bel" для белорусскоязычной версии т.е. новости на русском идут в "dle_post", а новости на белорусском языке в "bel_post". USERPREFIX для обеих движков - "dle_".
В профиле пользователя выводится правильное количество публикаций, но при нажатии на "Просмотреть все публикации" выдаёт ошибку: "Внимание! Обнаружена ошибка По данному адресу публикаций на сайте не найдено." или выводит публикации автора только из "dle_post", хотя у автора есть статьи и в "bel_post"
Как сделать так, чтобы движок делал выборку публикаций автора как из "dle_post" так и из "bel_post" одновременно?
В профиле пользователя выводится правильное количество публикаций, но при нажатии на "Просмотреть все публикации" выдаёт ошибку: "Внимание! Обнаружена ошибка По данному адресу публикаций на сайте не найдено." или выводит публикации автора только из "dle_post", хотя у автора есть статьи и в "bel_post"
Как сделать так, чтобы движок делал выборку публикаций автора как из "dle_post" так и из "bel_post" одновременно?
Надеюсь сэкономлю чьё-то время. Я решил эту задачу так:
(DLE 11.0)
в файле engine/engine.php
Найти:
и заметь на:
* не забудьте заменить "ваш префикс" на ваш префикс таблицы
(DLE 11.0)
в файле engine/engine.php
Найти:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date;
и заметь на:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " UNION SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM ваш префикс_post p LEFT JOIN ваш префикс_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM dle_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date ." UNION SELECT COUNT(*) as count FROM ваш префикс_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date;
* не забудьте заменить "ваш префикс" на ваш префикс таблицы