loading...

Авторизация ...

Имя пользователя :
Пароль :
я всё забыл!

Хаки"Количество новостей с последнего визита"

Написал alwex, 15 июня 2009 | 30 комментариев | рейтинг новости не нравится   +15   нравится Версия для печати
Здраствуйте, сегодня я вам помогу сделать чтобы на вашем сайте показывало сколько новостей добавилось с последнего визита пользователя.

Ну что начнем?

Для начала мы открываем index.php
находим:
$tpl->set ( '{topnews}', $topnews );

и ниже вставляем:
if($is_logged) {
$ti = dle_cache("last_time_news", $member_id['user_id']);
if($ti === FALSE) {
$l = date( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
$th = date ( "Y-m-d H:i:s", $_TIME );
$t = $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
$ti = $t['count'];
create_cache("last_time_news", $ti, $member_id['user_id']);
}
$tpl->set ( '{last_time_news}', $ti );
} else {
$tpl->set ( '{last_time_news}', '' );
}


А потом в шаблоне main.tpl в любом удобном месте вставляем :

{last_time_news} Новостей опубликовано пока вас не было


Автор хака: SOFTER
Автор идеи: arturexp


Отблагодарили: fuzion, ixley, kala, CJ-ScOuT, Silver_UA, cl1326

Комментарии пользователей

  Экспорт комментариев в RSS
 Сортировать по рейтингу, по дате

Написал MasterUA, 15 июня 2009 в 23:48 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 18, Пользователи
Карма:
не пробовал ещё, но мне нравится краткость хака ay

Написал AVET, 15 июня 2009 в 23:50 плохой комментарий   +5   хороший комментарий
Новостей: 17, комментариев: 535, Редактор
Карма: 12±
Оно то всё хорошо, вот только +1 запрос для всех страниц каждый раз

Написал glam, 16 июня 2009 в 02:56 плохой комментарий   0   хороший комментарий
Новостей: 11, комментариев: 306, Пользователи
Карма:
кэширование надо

так этот запрос еще и для гостей выполняется.

Написал CKBAD, 16 июня 2009 в 00:14 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 79, Пользователи
Карма:
Считает еще и неопубликованные новости! Что делать ?

Написал Tweek, 16 июня 2009 в 01:32 плохой комментарий   +1   хороший комментарий
Новостей: 5, комментариев: 344, Пользователи
Карма: 24±
Изменить запрос на


$t = $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");

Написал CKBAD, 16 июня 2009 в 02:43 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 79, Пользователи
Карма:
Вроде норм :)) Thx !

Написал Russky, 16 июня 2009 в 04:40 плохой комментарий   -1   хороший комментарий
Новостей: 0, комментариев: 24, Пользователи
Карма:
А для чего тогда стандартная функция DLE? Вот эта: http://домен.ру/index.php?subaction=newposts

Написал CKBAD, 16 июня 2009 в 09:23 плохой комментарий   -3   хороший комментарий
Новостей: 0, комментариев: 79, Пользователи
Карма:
Да если б я знал :))) И что-то ты извратился Не проще http://домен.ру/newposts/ ? :))

Написал alwex, 16 июня 2009 в 10:37 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
если честно я вчера писал не думая особо. меня попросили и я быстренько написал. кэширование там легко прикрутить. будет время изменю

Написал glam, 16 июня 2009 в 12:53 плохой комментарий   +2   хороший комментарий
Новостей: 11, комментариев: 306, Пользователи
Карма:
проверочку бы еще поставил что бы гостям этот НЕ НУЖНЫЙ для них запрос не выполнялся. 59

Написал alwex, 16 июня 2009 в 14:14 плохой комментарий   +3   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Исправлено!!! пожалуйста модераторы исправьте новость!

Что сделано:
1. Гости этого не видят
2. Показует только новости какие опубликованы
3. Кэшируеться

if($is_logged) {
$ti = dle_cache("last_time_news", $member_id['user_id']);
if($ti === FALSE) {
$l = date( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
$th = date ( "Y-m-d H:i:s", $_TIME );
$t = $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
$ti = $t['count'];
create_cache("last_time_news", $ti, $member_id['user_id']);
}
$tpl->set ( '{last_time_news}', $ti );
} else {
$tpl->set ( '{last_time_news}', '' );
}

Написал MrCent, 16 июня 2009 в 14:56 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 11, Пользователи
Карма:
Последний код работает на ура. Но один вопрос. Зашел на сайт. Мне показывается, что за момент моего отсутствия было 9 новостей. Вот я ушел с сайта на 5 минут. За эти 5 минут никто новости не добавлял. Опять зашел, а мне пишется та же цифра, что и была. Человек сбивается с толку, что мол за 5 минут отсутствия добавилось ЕЩЕ 9 новостей. Что-то не так...

Написал alwex, 16 июня 2009 в 15:03 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
он кэшируеться... когда добавляеться новость то кэш очищаеться(вроде)

Написал Schumacher, 16 июня 2009 в 21:19 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
красота, Автор ты молодец!!!!

Написал Hazar_OFF, 16 июня 2009 в 22:12 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Хоть и старо всё как мир, но всё равно автору респект ay , что то новенькое хоть есть. Буду тестить.

Написал NickolasM, 17 июня 2009 в 10:43 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 34, Пользователи
Карма:
как добавить {last_time_news} в login.tpl?
Что и где еще надо дописать?
Спасибо.

Написал dimanvolkov, 17 июня 2009 в 13:19 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 6, Пользователи
Карма:
найди там строки где ты вписываеш лог\пасс и добовляй :)

Написал NickolasM, 17 июня 2009 в 14:05 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 34, Пользователи
Карма:
Нет, вы не поняли, дело в том, что {last_time_news} не работает в шаблоне login.tpl, на сайте так и выводиться {last_time_news}

Написал spanchbob, 17 июня 2009 в 14:38 плохой комментарий   0   хороший комментарий
Новостей: 2, комментариев: 22, Пользователи
Карма:
Смотри внимательней индекс.пхп возможно пропустил tpl set {last_time_news} или изменял на свое значение.

Написал dj-avtosh, 17 июня 2009 в 15:57 плохой комментарий   0   хороший комментарий
Новостей: 26, комментариев: 187, Пользователи
Карма: 16±
Я не думаю что коунты особо убивают базу :D

 title=

И при том я решил сделать не с последнего визита, а с последней сессии.

P.S. читал тут коммент про кэширование, теперь вопрос: Будут ли правильно показываться такие данные в кэшировании? :D

Написал NickolasM, 17 июня 2009 в 16:05 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 34, Пользователи
Карма:
Да все я поставил правильно :) Насколько я знаю, все что прописывается в index.php работает только в main.tpl, а чтоб тег работал в другом шаблоне надо еще где-то прописать...
Какой файл отвечает за login.tpl?

Написал ixley, 17 июня 2009 в 18:45 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 75, Пользователи
Карма:
поставил на 7.0. пашет:) спасибо друг!

Написал settleers, 18 июня 2009 в 13:07 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 7, Пользователи
Карма:
dj-avtosh,
как такое реализовал распиши тоже охото ag

Написал max88pedro, 18 июня 2009 в 15:52 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 2, Пользователи
Карма:
прошу заценить у меня пустой блок вообще не выводит не чего вот адрес top-sfera.ru

Написал CJ-ScOuT, 30 июня 2009 в 15:59 плохой комментарий   +2   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Цитата: NickolasM
Да все я поставил правильно :) Насколько я знаю, все что прописывается в index.php работает только в main.tpl, а чтоб тег работал в другом шаблоне надо еще где-то прописать...
Какой файл отвечает за login.tpl?

индекс пхп нам не нужен
В /engine/modules/sitelogin.php в конце до ?> (завершающего тега пхп) вставь этот код и будет тебе все гуд :)
if($is_logged) {
$l = date( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
$th = date ( "Y-m-d H:i:s", $_TIME );
$t = $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
$ti = $t['count'];
create_cache("last_time_news", $ti, $member_id['user_id']);
}

в шабе логин тпл вставь в нужное место
{$ti}

Написал JIexaman, 10 июля 2009 в 20:14 плохой комментарий   0   хороший комментарий
Новостей: 1, комментариев: 5, Пользователи
Карма:
Цитата: CJ-ScOuT
индекс пхп нам не нужен
В /engine/modules/sitelogin.php в конце до ?> (завершающего тега пхп) вставь этот код и будет тебе все гуд :)
if($is_logged) {
$l = date( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
$th = date ( "Y-m-d H:i:s", $_TIME );
$t = $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
$ti = $t['count'];
create_cache("last_time_news", $ti, $member_id['user_id']);
}

в шабе логин тпл вставь в нужное место
{$ti}

Спс, очень помог!

Написал viper82, 24 января 2010 в 01:24 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 3, Пользователи
Карма:
Как сделать так, чтоб... Если новых новостей на сайте нет, выводилась надпись... типа "Нового нет"...? или вообще ничего не выводилось...

Написал slavian, 18 апреля 2010 в 17:20 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 4, Пользователи
Карма:
В login.tpl
после
if ($is_logged == TRUE){

Добавляем
if ($ti > 0) {
$ti = <<< HTML
{$ti} Новостей опубликовано пока вас не было
HTML;
} else {
$ti = <<< HTML
Пока вас не было ничего не добавляли
HTML;
}


В нужное место вставляем {$ti}

Пробовал - вроде работает.

Написал Molen, 13 августа 2010 в 01:03 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 1, Пользователи
Карма:
Подскажите, как сделать, чтобы было показано не с последнего визита, а с последней сессии.
В какой переменной записаны дата и время сессии?

Написал SEOshnik, 4 января 2011 в 14:06 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 10, Пользователи
Карма:
На 8.5 всё пашет.... согласно кодам:

В /engine/modules/sitelogin.php в конце до ?> (завершающего тега пхп) вставьте
Внимание! У вас нет прав, для просмотра скрытого текста.


В login.tpl
после
if ($is_logged == TRUE){


Добавляем
Внимание! У вас нет прав, для просмотра скрытого текста.


в login.tpl вставить в нужное место
Внимание! У вас нет прав, для просмотра скрытого текста.

Информация



Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Анализ Тиц и PR сайта

[removed][removed] [removed] (adsbygoogle = window.adsbygoogle || []).push({}); [removed]