Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Изменения в файле profile.php

Изменения в файле profile.php


     13.06.2014    Все вопросы » Общие вопросы    2486

вопрос
Подскажите какие изменения необходимо выполнить в файле profile.php для вывода вместо количества новостей {news-num} количества просмотров новостей пользователя.

Ответил: D0Gmatist


Открываем profile.php
Ищем код отвечающий за вывод количества статей добавленных юзером
    if( $row['news_num'] ) {
        
        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&amp;user=" . urlencode( $row['name'] ) . "\">" . $lang['all_user_news'] . "</a>" );
            $tpl->set( '[rss]', "<a href=\"engine/rss.php?subaction=allnews&amp;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]', "" );
    }
В этом коде нам нужно сформировать подсчёт количества просмотров статей у данного юзера и что бы запрос-подсчёт, делался только тогда, когда у юзера $row['news_num'] == TRUE

Значит, нам нужна первая часть данного условия, где проверяется 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 запрос к БД!!!

2 комментария

gsm-doctor
Юзер

gsm-doctor - 9 сентября 2014 16:37 -

Подскажите пожалуйста как также добавить результат запроса просмотра новостей пользователя за текущий месяц именно в этом измененном коде profile.php?

SX2
Эксперт

SX2 - 9 сентября 2014 17:30 -

$this_date = date( 'Y-m-d H:i:s', $_TIME );
     $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 p.date >= '$this_date' - INTERVAL 1 MONTH AND approve=1" );

Самая сложная часть работы – решиться приступить к ней.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх