Перейти к контенту

[2.3.x]Top-XX statistics


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

rletfullin, может в функции tt() etc. сделать через $this->ipsclass->DB?

list($a1,$b1)=mysql_fetch_row(mysql_query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$yer'"));

:D

А так будет и дальше подключение рваться.

 

На закуску: Можно пройтись по инструкции replace'ом, ibf_ -> ".SQL_PREFIX." (именно с кавычками), SQL_PREFIX - define префикса в БД.

Изменено пользователем Sannis
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 139
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

В общем, поправил код, возможно более опытные программисты найдут другой подход. Объясняю, в чем были мои модификации:

Как я заметил функции tt и tt2 не подхватывали внутри себя переменную $this, возможно это связано с тем, что эти функции объявлены внутри другой функции. Проблему решил таким путем, я просто вынес функции tt и tt2, поместив их в сам класс, после чего вызывал их через параметр $this. Был и другой вариант, просто передавать переменную $this в эти функции, оба варианта рабочие.

Также обнаружил еще одну проблему, в списках стал показываться только одни результат, эта проблема решилась модификацией кода в трех местах:

 

$res = $this->ipsclass->DB->query("SELECT * FROM ibf_members WHERE `posts` > 0 ORDER BY `posts` DESC LIMIT 0,".$statnum);

$TPosts="";

while($tposts=$this->ipsclass->DB->fetch_row($res)){

 

пришлось добавить параметр $res.

 

Вот весь код после модификации:

 

Функции tt и tt2 необходимо вынести из функции auto_run(), поместив их в сам класс boards:

function tt($yer,$veri){

list($a1,$b1)=$this->ipsclass->DB->fetch_row($this->ipsclass->DB->query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$yer'"));

return "$a1"."$veri"."$b1";

}

 

function tt2($vr2){

list($grp)=$this->ipsclass->DB->fetch_row($this->ipsclass->DB->query("SELECT mgroup FROM ibf_members WHERE name='$vr2'"));

list($a2,$b2)=$this->ipsclass->DB->fetch_row($this->ipsclass->DB->query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$grp'"));

return "$a2".$vr2."$b2";

}

 

Код мода, с уже вынесенными функциями tt и tt2:

$top_data = array();

 

$cids = ','.$this->ipsclass->my_getcookie('collapseprefs').',';

if (strstr($cids, ',top_xx,'))

{

$top_data['fo'] = 'none';

$top_data['fc'] = 'show';

}

else

{

$top_data['fo'] = 'show';

$top_data['fc'] = 'none';

}

 

 

$res = $this->ipsclass->DB->query("SELECT * FROM ibf_members WHERE `posts` > 0 ORDER BY `posts` DESC LIMIT 0,".$statnum);

$TPosts="";

while($tposts=$this->ipsclass->DB->fetch_row($res)){

$TPosts.="<tr><td width='80%'><a href='index.php?showuser={$tposts['id']}'>";

$vm1=$this->tt($tposts[mgroup],$tposts[members_display_name], $this->ipsclass->DB);

$TPosts.="$vm1";

$TPosts.="</a>";

$TPosts.="</td><td align='right' width='20%'>{$tposts['posts']}</td></tr>";

}

 

 

$res = $this->ipsclass->DB->query("SELECT * FROM ibf_topics ORDER BY views DESC LIMIT 0,".$statnum);

$TView="";

while($tview=$this->ipsclass->DB->fetch_row($res)){

$TView.="<tr><td width='50%'><a href='index.php?act=ST&f={$tview['forum_id']}&t={$tview['tid']}&view=getlastpost'>{$tview['title']} ({$tview['views']})</a>";

$TView.="</td><td align='right' width='50%'>";

$vr2=$this->tt2($tview[last_poster_name]);

$TView.="<a href='index.php?showuser={$tview['last_poster_id']}'>$vr2</a>";

$TView.="</td></tr>";

}

 

$res = $this->ipsclass->DB->query( "SELECT * FROM ibf_topics ORDER BY last_post DESC LIMIT 0,".$statnum);

$ToNew="";

while($tonew=$this->ipsclass->DB->fetch_row($res)){

$ToNew.="<tr><td width='50%'><a href='index.php?act=ST&f={$tonew['forum_id']}&t={$tonew['tid']}&view=getlastpost'>{$tonew['title']} ({$tonew['posts']})</a>";

$ToNew.="</td><td align='right' width='50%'>";

$vr2=$this->tt2($tonew[last_poster_name]);

$ToNew.="<a href='index.php?showuser={$tonew['last_poster_id']}'>$vr2</a>";

$ToNew.="</td></tr>";

}

$this->output = str_replace( "<!-- STATPANEL -->" , $this->ipsclass->compiled_templates['skin_boards']->Top_XX_Stats($TPosts,$TView,$ToNew,$top_data) , $this->output );

 

Зеленым отмечены модифицированные места в коде.

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

rletfullin, может в функции tt() etc. сделать через $this->ipsclass->DB?
list($a1,$b1)=mysql_fetch_row(mysql_query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$yer'"));

:D

А так будет и дальше подключение рваться.

 

На закуску: Можно пройтись по инструкции replace'ом, ibf_ -> ".SQL_PREFIX." (именно с кавычками), SQL_PREFIX - define префикса в БД.

Пока можно обойтись тем, что сделал scorpion-ds. А в будущем попробую сделаю глобальный апдейт мода. Вот только разберусь с маркированием новых тем. А то так и не могу въехать в то, что ты мне по личке указал )))

ЗЫ: Эх, быть бы профессиональным php-программером. А то так тяжело мыслить на C++, а реализовывать на php.

 

ЗЫ2: А я так и не понял, почему подключение к БД у кого-то рвётся, а у кого-то работает без сбоев...

Изменено пользователем rletfullin
Ссылка на комментарий
Поделиться на других сайтах

У людей с mysql5 будут вылазить предупреждения всегда.

 

На моем сайте выложили мод, совместимый с mysql5 и который не выводит никаких предупреждений, а также устанавливается раза в три быстрее, автоматически :D

 

Вложил мод туда Я. да мод совместимый с mysql5 и который не выводит никаких предупреждений.

Только есть одна просьба. как сделать, чтоб статистика (мод) был бы ниже форуме а не выще.

спасибо за внимание.

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

У меня вылезла вот такое

Call to undefined function: top_xx_stats() in /home/public_html/forum/sources/action_public/boards.php on line 214

Вот эта строка

$this->output = str_replace( "<!-- STATPANEL -->" , $this->ipsclass->compiled_templates['skin_boards']->top_xx_stats($TPosts,$TView,$ToNew,$top_data) , $this->output );

 

Что не так? Уже всю голову сломал. :D

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

snoop99, варианты:

1. Не выполнили пункт инструкции по добавлению шаблона top_xx_stats в группу skin_boards.

2. Не выполнили пункт 1 этого поста для всех скинов. Если вы хотите чтобы в каком-то скине его не было, то _простейший_ способ - создать шаблон без содержимого.

3. Попробуйте сделать ребилд скинов. Вн.Вид-Утилиты для стилей-перестроить скин "фцвфв".

4. Если не помогает п.3, то в настройках форума(основных) включите "Безопасный режим работы со стилями". И читайте ФАК.

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

Sannis, спасибо огромное!!!!!!!!!! Все получилось.

Помог пункт 3 :D

 

Еще вопросик. Почему TOP 10 всегда свернутая получается? ;)

(Извините,только учусь)

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

snoop99,

1. либо кое-кто напортачил с функцией, которая за это отвечает,

2. либо у кого-то cookies отключены. Ибо эта штука запоминает с помощью cookies, открытой ты её оставлял или закрытой в прошлый раз. :D Если надо, чтобы по умолчанию она была включена, то лезь в шаблон top_xx_stat, найди параметры {$top_data['fo']} и {$top_data['fc']} и попробуй махнуть их местами. ;)

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

Ребят (в частности, deaction), мод обновлён, теперь он может закрываться и открываться так же, как и категории форума. Обновлённый мод выложен, обновлённый скрин тоже выложен. Для тех, кто уже естановил предыдущую версию, сообщаю, что изменилась вот эта часть......

 

пробовал менять как ты выше писал, странная ошибка вылазит при попытке свернуть панель. т.е. открываеца страница http://localhost/forum/java%20script:toggl..._xx',%201);

ну и в браузере пишет:

 

The requested URL /f/java script:togglecategory('top_xx', 1); was not found on this server.

 

что за ошибка, подскажи пожалуйста как исправить ?

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

deaction, обрати внимание, у тебя слово javascript режется пробелом на два слова :D

 

Просто удали пробел в шаблоне

 

А лучше скачай новую версию модификации, которая работает ещё и с cookies...

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

Как сделать чтобы TOP 10 всегда присутствовал а не только на главнойй странице форума?

И маленькое пожелание.

Может сделать чтобы при клике на последнюю обсуждаемую тему выкидывало на первый пост а в конце названия темы поставить для примера стрелочку и сделать ее линком на последний пост :D ( Надеюсь правильно выразился)

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

А нельзя было инструкцию на русском сделать? конечно не проблема ставить, но просто думаю удобнее будет

 

И у меня тоже выскакивают предупреждения вверху форума

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

скажите пжлст, в какой из шаблонов вставлять <!-- STATPANEL --> , чтобы окно статистики было внизу после разделов форума?

 

спсб.

 

и еще вопрос - как исключить определенные форумы от показа?

где прописывать их ID?

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

snoop99, специально для вас постараюсь... ))

 

Vechniy, вечером посмотрю обязательно. С работы не могу поссотреть...

 

ka81, то ли в этой теме, то ли в одной из похожих тем уже рассказывалось такое. В любом случае, посмотрю сегодня вечером...

 

bumer-denis, у меня нет форума 2.1.7, поэтому не могу ответить на этот вопрос.

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

А как сделать так, чтобы из определенных категорий на форуме темы в панель не брались? Просто у меня на форуме есть скрытые разделы и не хочется, чтобы все видели какие темы в них обсуждаются. Изменено пользователем Wandragor
Ссылка на комментарий
Поделиться на других сайтах

ka81, то ли в этой теме, то ли в одной из похожих тем уже рассказывалось такое. В любом случае, посмотрю сегодня вечером...

ну как успехи?

А как сделать так, чтобы из определенных категорий на форуме темы в панель не брались? Просто у меня на форуме есть скрытые разделы и не хочется, чтобы все видели какие темы в них обсуждаются.

аналогично и архи-важно.

практически из-за этого до сих пор не ставлю мод. :D

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

скажите пжлст, в какой из шаблонов вставлять <!-- STATPANEL --> , чтобы окно статистики было внизу после разделов форума?

В начало шаблона skin_boards->stats_header, возможно нужно будет пару <br /> добавить чтоб смотрелось нормально.

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

скажите пжлст, в какой из шаблонов вставлять <!-- STATPANEL --> , чтобы окно статистики было внизу после разделов форума?

В начало шаблона skin_boards->stats_header, возможно нужно будет пару <br /> добавить чтоб смотрелось нормально.

Огромное спасибище!!!!

 

вот бы еще нежелаемые разделы убрать из ТопХХ ... :D

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

Для тех, кто жадный и показывать скрытые топики не хочет )))

 

Открываем /sources/action_public/Boards.php

 

Находим:

$statnum = 10;

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

$exception = "5,8,20";

где 5,8,20 - id форумов, которые вы не хотите показывать...

 

Находим:

$this->ipsclass->DB->query("SELECT * FROM ibf_topics ORDER BY views DESC LIMIT 0,".$statnum);

Изменяем на:

$this->ipsclass->DB->query("SELECT * FROM ibf_topics WHERE forum_id NOT IN (".$exception.") ORDER BY views DESC LIMIT 0,".$statnum);

 

Находим:

$this->ipsclass->DB->query( "SELECT * FROM ibf_topics ORDER BY last_post DESC LIMIT 0,".$statnum);

Изменяем на:

$this->ipsclass->DB->query( "SELECT * FROM ibf_topics WHERE forum_id NOT IN (".$exception.") ORDER BY last_post DESC LIMIT 0,".$statnum);

 

ДЕЛАЮ ВСЛЕПУЮ В ПЕРЕРЫВ НА РАБОТЕ! СИСТЕМЫ ПОД РУКОЙ НЕТ! ТАК ЧТО ПРОВЕРЬТЕ ВСЁ ВНИМАТЕЛЬНО И ОТПИШИТЕ СТАТУС ЗДЕСЬ! ПРОДОЛЖАЕМ СЛЕДИТЬ ЗА ПРЕФИКСАМИ! :D

 

Должно работать...

Изменено пользователем rletfullin
Ссылка на комментарий
Поделиться на других сайтах

ka81, не так выразился. Ну это и есть ФОРУМЫ, которые хотелось бы скрыть... Или вам целую категорию?

не, разделов, все верно.

сделал изменения и:

Ошибка при работе с базой данных
Возникла проблема при работе с базой данных.
Вы можете попробовать обновить эту страницу, нажав сюда

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

не, разделов, все верно.
Что верно? )))
сделал изменения и:

Так-с... Сразбегу не получилось... Тогда подождите до вечера, ибо под рукой системы нет, а работать мне ещё 2 часа.

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


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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.