Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

[Хак] Количество просмотров записи


Рекомендуемые сообщения

Вырезал со сборки  friendes.Вырезал на коленки.

Заходим в базу данных и в таблице _wall добавить новое поле views тип bigint(20)

Зайти в таблицу _communities_wall и добавить поле views тип bigint(20)

Заходим в вайл record.tpl которой в паке wall  в дериетории шаблона.

Ищем там что-то похожее на это 

 <b id="wall_repost_cnt{rec-id}" class="{yes-repost-color}">{reposts}</b>

 

и вставляем ниже код

 <div class="post_views">
  <i class="post_views_icon"></i>
  <span>{views-num}</span>
</div>

 

Сохраняем файл и идём дальше  в папку со стилями и открываем ваш главный стиль style.css

Вставляем в самый конец вот такой код 


.post_views_icon {
    background: url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2214%22%20height%3D%2210%22%20viewBox%3D%221%202%2014%2010%22%20style%3D%22fill%3A%23828a99%3B%22%3E%3Cpath%20d%3D%22M8%2012C3.8%2012%201%208%201%207%201%206%203.8%202%208%202%2012.2%202%2015%206%2015%207%2015%208%2012.2%2012%208%2012ZM8%2010.5C9.9%2010.5%2011.5%208.9%2011.5%207%2011.5%205.1%209.9%203.5%208%203.5%206.1%203.5%204.5%205.1%204.5%207%204.5%208.9%206.1%2010.5%208%2010.5ZM8%208.6C7.1%208.6%206.4%207.9%206.4%207%206.4%206.1%207.1%205.4%208%205.4%208.9%205.4%209.6%206.1%209.6%207%209.6%207.9%208.9%208.6%208%208.6Z%22%2F%3E%3C%2Fsvg%3E) no-repeat 0 0;
    width: 14px;
    height: 10px;
    margin: 3px 5px 0 0;
    opacity: 0.5;
    filter: alpha(opacity=50);
    display: inline-block;
    float: left;
}

.post_views {
    float: right;
    padding: 0 10px;
}

Открываем папку js открываем main.js 

и добавляем где-то сверху или снизу

function WallViews(post_id, type){
if(!type) url = 'AddViews';
else url = 'AddViews2';
$('#wall_record_'+post_id).attr('onMouseOver','');
$.post('/index.php?go=wall&act='+url,{post_id:post_id}, function(d){
$("#wall_record_"+post_id+" .post_views span").html(parseInt($("#wall_record_"+post_id+" .post_views span").text()) + 1);
});
}

Сохраняем и идем дальше в системные файлы.

Заходим в classes и открываем файл wall.php

Находим там строку похожу на эту 

if($row_wall['user_photo'])
				$tpl->set('{ava}', '/uploads/users/'.$row_wall['author_user_id'].'/50_'.$row_wall['user_photo']);
			else
				$tpl->set('{ava}', '{theme}/images/no_ava_50.png');

 

и вставляем ниже 

$tpl->set('{views-num}', $row_wall['views']);

 

Открываем файл wall.public.php

ищем там 

megaDate($row_wall['add_date']);
			
			if($row_wall['photo'])
				$tpl->set('{ava}', '/uploads/groups/'.$row_wall['public_id'].'/50_'.$row_wall['photo']);
			else
				$tpl->set('{ava}', '{theme}/images/no_ava_50.png');

 

И вставляем ниже

$tpl->set('{views-num}', $row_wall['views']);

 

Дальше идём в паку с модулями и открывем файл wall.php 

Сразу после switch($act){

 

вставить

       case 'AddViews':
            $post_id = intval($_POST['post_id']);
            $row = $db->super_query("SELECT id, author_user_id FROM `".PREFIX."_wall` WHERE id = '{$post_id}'");
            if($row && $row['author_user_id'] != $user_info['user_id']) $db->query("UPDATE `".PREFIX."_wall` SET views = views+1 WHERE id = '{$post_id}'");
                echo 1;
            die();
        break;
	
        case 'AddViews2':
            $post_id = intval($_POST['post_id']);
            $row = $db->super_query("SELECT id FROM `".PREFIX."_communities_wall` WHERE id = '{$post_id}'");
            if($row) $db->query("UPDATE `".PREFIX."_communities_wall` SET views = views+1 WHERE id = '{$post_id}'");
                echo 1;
            die();
        break;

Тут и для групп тоже

в classes и открываем файл wall.php и wall.public.php  вместо

$tpl->set('{views-num}', $row_wall['views']);

ставим это.

$tpl->set('{views-num}', $row_wall['views'] ? $row_wall['views'] : '0');

Заходим в файл record.tpl которой в папке wall шаблона

в первой строке 

[record]<div class="wallrecord wall_upage" id="wall_record_{rec-id}" style="margin-top:5px">

Добавляем в любом месте [owner-record]onMouseOver="WallViews({rec-id});"[/owner-record]

[record]<div [owner-record]onMouseOver="WallViews({rec-id});"[/owner-record] class="wallrecord wall_upage" id="wall_record_{rec-id}" style="margin-top:5px">

Вроде бы как всё

Если хотите отблагодарить то жмите кнопку  Upvote

  • Upvote 4
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

Поставил на пустую сборку то что выше посмотрел почему не срабатывает то что нужно добавить ниже.

в classes и открываем файл wall.php и wall.public.php  вместо

$tpl->set('{views-num}', $row_wall['views']);

ставим это.

$tpl->set('{views-num}', $row_wall['views'] ? $row_wall['views'] : '0');

Заходим в файл record.tpl которой в папке wall шаблона

в первой строке 

[record]<div class="wallrecord wall_upage" id="wall_record_{rec-id}" style="margin-top:5px">

Добавляем в любом месте [owner-record]onMouseOver="WallViews({rec-id});"[/owner-record]

[record]<div [owner-record]onMouseOver="WallViews({rec-id});"[/owner-record] class="wallrecord wall_upage" id="wall_record_{rec-id}" style="margin-top:5px">

 

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Все сделал, а просмотры не зачисляются...

 

На всякий случай сделайте бекап! Я еще только начинающий) В wall.public.php ищем похожее на:

Цитата

    $tpl->set('{text}', stripslashes($row_wall['text']));
            $tpl->set('{name}', $row_wall['title']);
            if(strpos($row_wall['views_list'], '|'.$user_info['user_id'].'|') === false){

Ниже ставим:

Цитата

 

 

			if(strpos($row_wall['views_list'], '|'.$user_info['user_id'].'|') === false){
            $tpl->set('[no_views]', '');
            $tpl->set('[/no_views]', '');
            } else $tpl->set_block("'\\[no_views\\](.*?)\\[/no_views\\]'si","");
            $tpl->set('{views-count}', $row_wall['views_count']);

 

 

в news.php: ищем - //Выводим кол-во комментов, мне нравится, и список юзеров кто поставил лайки к записи если это не страница "ответов"

в запрос добавляем views

 

Тут же перед:     //Если есть комменты к записи, то выполняем след. действия, ставим :

Цитата

                        $tpl->set('{views-num}', $rec_info['views']);

 

 

Теперь public.php: ищем - //Если страница вывзана через "к предыдущим записям"

В запрос добавляем views

Я про тот, который с         include ENGINE_DIR.'/classes/wall.public.php';

 

Дальше modules/wall.php: //Если добавлена просто запись, то сразу обновляем все записи на стене добавляем запрос views

 

в обоих!

 

 

//Если приватность "Только друщья" то Проверка естьли запрашиваемый юзер в друзьях у юзера который смотрит стр. В if($user_privacy и else добавляем запрос views

 

в шаблон/news/news.tpl вставить в самую крышу: [record]<div class="wallrecord comm_wr news_comm_wr" id="wall_record_{rec-id}" onMouseOver="WallViews({rec-id}[groups], 1[/groups]);" style="padding-bottom:10px;margin-top:5px;margin-bottom: 10px;">

 

Ищем похожее на:  

Цитата

<input type="hidden" id="update_like{rec-id}" value="0" />
  <div class="fl_r public_wall_like cursor_pointer" onClick="{like-js-function}" onMouseOver="groups.wall_like_users_five('{rec-id}'[wall-func], 'uPages'[/wall-func])" onMouseOut="groups.wall_like_users_five_hide('{rec-id}')" id="wall_like_link{rec-id}">
   <div class="fl_l" id="wall_like_active">Мне нравится</div>
   <div class="public_wall_like_no {yes-like}" id="wall_active_ic{rec-id}"></div>
   <b id="wall_like_cnt{rec-id}" class="{yes-like-color}">{likes}</b>
  </div>

Вставляем ниже:

Цитата

  <div class="post_views">
  <i class="post_views_icon"></i>
  <span>{views-num}</span>
</div>

 

 

 

Изменено пользователем Stark98
  • Like 1
  • Upvote 1
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Stark98 сказал:

 Никто и спасибо не сказал...

дай  базу данных и в таблице  поставит КОЛИЧЕСТВО ПРОСМОТРОВ ЗАПИСИ

Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, vseti1994 сказал:

дай  базу данных и в таблице  поставит КОЛИЧЕСТВО ПРОСМОТРОВ ЗАПИСИ

Заходим в базу данных и в таблице _wall добавить новое поле views тип bigint(20)

Зайти в таблицу _communities_wall и добавить поле views тип bigint(20)

Ссылка на комментарий
Поделиться на другие сайты

Баг с 

$tpl->set('{views-num}', $row_wall['views'] ? $row_wall['views'] : '0');

Так как нолик он и остается на стене если обновить страницу запись в базу вроде как происходит, но вывода нет..

Ссылка на комментарий
Поделиться на другие сайты

Насколько я понял просмотрев код. Она срабатывают только на странице других пользователей, если смотреть свою стену, просмотров не добавиться.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, muller сказал:

Насколько я понял просмотрев код. Она срабатывают только на странице других пользователей, если смотреть свою стену, просмотров не добавиться.

в 

[owner-record]onMouseOver="WallViews({rec-id});"[/owner-record]

ковычки убери)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...