Jump to content
CMSTOOLS.ru - форум поддержки и развития CMS

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


Recommended Posts

Вырезал со сборки  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
Link to comment
Share on other sites

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

в 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
Link to comment
Share on other sites

  • 2 weeks later...

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

 

На всякий случай сделайте бекап! Я еще только начинающий) В 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>

 

 

 

Edited by Stark98
  • Like 1
  • Upvote 1
  • Downvote 1
Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

Баг с 

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

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

Link to comment
Share on other sites

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

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

в 

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...