Перейти к содержанию
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

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

12 часов назад, Kir KMS сказал:

Пока не могу разобраться где запускается функция update

Ты много чего тут забыл добавить

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

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

в 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">

 

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

  • 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]

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

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...