вопрос
Подскажите какие изменения необходимо выполнить в файле profile.php для вывода вместо количества новостей {news-num} количества просмотров новостей пользователя.
Открываем profile.php
Ищем код отвечающий за вывод количества статей добавленных юзером
Значит, нам нужна первая часть данного условия, где проверяется news_num.
После кода
Найти все статьи где автор == Х и статья == опубликована, при этом объединив таблицы пост и пост_экстра по ид после вывести только поле news_read (количество просмотров поста) при этом суммировать весь столбец из всех полей прошедших условия WHERE и передать всю сумму в новую строку с одной ячейкой sum_total что мы и сделали =)
И теперь спокойно можем получить результат запроса что мы опять и сделали в
В итоги мы имеем для шаблона userinfo.tpl тег {views-sum} который выдаст сумму всех просмотров постов от данного юзера.
Напомню !!! +1 запрос к БД!!!
Ищем код отвечающий за вывод количества статей добавленных юзером
if( $row['news_num'] ) {В этом коде нам нужно сформировать подсчёт количества просмотров статей у данного юзера и что бы запрос-подсчёт, делался только тогда, когда у юзера $row['news_num'] == TRUE
if( $config['allow_alt_url'] == "yes" ) {
$tpl->set( '{news}', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/news/" . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/rss.xml" . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
} else {
$tpl->set( '{news}', "<a href=\"" . $PHP_SELF . "?subaction=allnews&user=" . urlencode( $row['name'] ) . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"engine/rss.php?subaction=allnews&user=" . urlencode( $row['name'] ) . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
}
$tpl->set( '{news-num}', $row['news_num'] );
$tpl->set( '[news-num]', "" );
$tpl->set( '[/news-num]', "" );
$tpl->set_block( "'\\[not-news-num\\](.*?)\\[/not-news-num\\]'si", "" );
} else {
$tpl->set( '{news}', $lang['all_user_news'] );
$tpl->set_block( "'\\[rss\\](.*?)\\[/rss\\]'si", "" );
$tpl->set( '{news-num}', 0 );
$tpl->set_block( "'\\[news-num\\](.*?)\\[/news-num\\]'si", "" );
$tpl->set( '[not-news-num]', "" );
$tpl->set( '[/not-news-num]', "" );
}
Значит, нам нужна первая часть данного условия, где проверяется news_num.
После кода
if( $row['news_num'] ) {дописываем
$rowV = $db->super_query( "SELECT sum(e.news_read) as `sum_total` FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE `autor` = '$user' AND approve=1" );Где у нас
$tpl->set( '{views-sum}', $rowV['sum_total'] );
Найти все статьи где автор == Х и статья == опубликована, при этом объединив таблицы пост и пост_экстра по ид после вывести только поле news_read (количество просмотров поста) при этом суммировать весь столбец из всех полей прошедших условия WHERE и передать всю сумму в новую строку с одной ячейкой sum_total что мы и сделали =)
И теперь спокойно можем получить результат запроса что мы опять и сделали в
$tpl->set( '{views-sum}', $rowV['sum_total'] );
В итоги мы имеем для шаблона userinfo.tpl тег {views-sum} который выдаст сумму всех просмотров постов от данного юзера.
Напомню !!! +1 запрос к БД!!!