Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Портал > Модули и блоки > Модули форумов

Ответ
 
Опции темы Опции просмотра
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #201 11-19-2008, 12:47

Поскольку, как мне показалось, на данном форуме было затишье - разместил пару своих модификаций для форума newbb_plus 0.92 на офф.сайте (вот сама тема). Сделал пока только фиксацию флагов о прочитанном в базе данных и фиксация перехода на последнее/произвольное сообщение темы (при этом даже патч от пользователя 2San не нужен!). Если понадобится - переведу на русский

Последний раз редактировалось ZlydenGL, 01-07-2009 в 01:42


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #202 11-20-2008, 11:06

Не совсем понятно...
На русский можно?


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #203 11-22-2008, 16:43

Можно Сделал 2 хака для форума newbb_plus версии 0.92:
1. Флаги о прочитанном хранятся в БД (вроде не совсем оптимально, но пока хватает). Т.е. для зарегистрированных пользователей информация о прочитанных темах не пропадет никогда - даже если они винты форматнут Для гостей инфа естественно продолжает храниться в кукисах.
2. На предыдущей странице пользователь 2San оставлял патч, чтобы появилась возможность переходить на последнее сообщение темы. На самом деле он НЕ НУЖЕН - необходимо только пофиксить процедуру getPageOffset в модуле class/class.forumposts.php - после чего переход на произвольное сообщение в теме будет производиться АБСОЛЮТНО корректно без патча 2San'а!

Последний раз редактировалось ZlydenGL, 01-07-2009 в 01:42


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #204 11-23-2008, 10:55

ZlydenGL непосредственно хак можно опубликовать здесь?
не весь файл (раз в одном только) а код хака, что на что менять.


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #205 11-23-2008, 11:36

Если разговор идет только про коррекцию переходна на нужное сообщение - то одноименную функцию надо заменить на эту:
PHP код:
function getPageOffset($perPage)
{
global 
$db$bbTable;
$pageOffest 0;
$sql "SELECT p.post_id FROM " $bbTable['posts'] . " p
WHERE
p.topic_id = " 
$this->topic_id "
ORDER BY "
;
if (
substr(trim($this->order),0,1)==",")
{
$sql .= substr(trim($this->order),1);
}
else
{
$sql .= $this->order;
}
 
$result $db->query($sql);
if (
$result) {
$postNum 0;
while (
$row $db->fetch_array($result)) {
$iPost $row[0];
if (
$iPost == $this->post_id)
break;
$postNum++;
}
 
$pageOffest intval($postNum $perPage) * $perPage;
}
return 
$pageOffest;
}


Последний раз редактировалось ZlydenGL, 01-07-2009 в 01:41


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #206 11-23-2008, 17:36

Цитата:
Сообщение от ZlydenGL Посмотреть сообщение
коррекцию переходна на нужное сообщение
что-то я не допонимаю.
В каких случаях неправильно осуществлялся переход.
можно примеры?


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #207 11-23-2008, 18:03

Например на индексе форумов щелчок по последней теме должен переводить на последнее сообщение в данной теме - даже если в теме больше одной страницы. Базовый функционал форума newbb_plus 0.92 (и похоже, 0.94 не лишен этой проблемы) не позволяет совершить переход на последнее сообщение многостраничной темы - из-за ошибки в функции getPageOffset.

Для сравнения: идем на индекс форума http://runcms.org/modules/newbb_plus/index.php и щелкаем по ссылке Can i change MODULES fold... (на момент написания сообщения эта тема - последняя в форуме Core RunCMS modules). Откроется ПЕРВАЯ страница темы (несмотря на то, что последнее сообщение - на второй странице).

Для исправления данной проблемы патч 2San'а добавляет get переменную start и переходит по ссылкам в привязке к этой переменной - что не всегда удобно.

Если же пофиксить функцию getPageOffset, то переход на последнее сообщение любой темы будет происходить корректно. Увидеть это можно на форуме портала моей жены, щелкнув допустим по ссылке Цепочка номер 1 (как видно по адресу ссылки, никаких дополнительных переменных, по отношению к базовым, нет) - переход будет абсолютно корректно произведен на последнее сообщение темы.

Последний раз редактировалось ZlydenGL, 01-07-2009 в 01:39


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #208 11-24-2008, 20:03

ZlydenGL спасибо, у меня не выводит этого на главной, поэтому в ступор и пришел.


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #209 06-06-2009, 21:49

Еще одна модификация, которую Zormax наверняка сделал у себя

Касается она десятка запросов для админов и юзверей, и все по одной и той же тематике. Модифицировать будем класс class/class.forumposts.php.

1. В вышеприведенном классе функция ShowPost вызывает функцию fModsArray, хотя эта функция уже "вызвана" в файле viewtopic.php, а ее результат запомнен в переменную $modsarray. Почему бы не использовать ее же в классе? Берем напильник, поминаем такую-то маму и...
Блок
PHP код:
        if ($xoopsUser) {
            
$modsarray fModsArray($xoopsUser->getvar('uid'));
        } else {
            
$modsarray false;
        } 
комментим или сносим нафиг, а вот в строке объявления глобальных переменных функции ShowPost добавляем переменную $modsarray.

Все, -10 запросов для АДМИНОВ обеспечены Теперь займемся пользователями.

2. В упомянутом же классе и упомянутой же функции ShowPost регулярно вызывается функция
PHP код:
is_moderator($this->forum_id$xoopsUser->uid())) 
Спрашивается, на кой еж? Отвечается - ни на кой Но проблема в том, что эта функция до класса не вызывается. Посему открываем viewtopic.php и после строки
PHP код:
$modsarray = ($xoopsUser) ? fModsArray($xoopsUser->getvar('uid')) : false
добавляем строку
PHP код:
$moderator = ($xoopsUser) ? is_moderator($forum$xoopsUser->uid()) : false
(можно было подсунуть под то же условие проверки хупсЮзера, но попервой решил разделить определение переменных).
После этого в вышеупомянутой функции ShowPost вышеупомянутого класса class/class.forumposts.php строку
PHP код:
                if (($xoopsUser->isAdmin()) || (is_moderator($this->forum_id$xoopsUser->uid()))) { 
заменяем на
PHP код:
                if (($xoopsUser->isAdmin()) || ($moderator)) { 
, а также добавляем переменную $moderator в строку объявления глобальных переменных вышеупомянутой функции.

Все, теперь и пользователи будут требовать на 10 запросов меньше при загрузке страниц форума


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #210 06-06-2009, 22:28

Сегодня меня что-то проперло на форумные правки Еще одна.

Напряг тут меня хостер, что слишком прожорливые поисковики слишком большую нагрузку на форум создаютъ. Нехорошо? Нехорошо! Ведь есть же архивная версия форума, которая в разы меньше запросов требует для генерации своих страничек (индекс, к сожалению, кушает столько же). Но - в роне 1.6.1 архив НЕ РАБОТАЕТ В смысле - не работаЛ Вот что пришлось сделать:
Строку
PHP код:
        $forumpost->setOrder("post_time ASC"); 
Заменил на
PHP код:
        $forumpost->setOrder(""); 
Иначе получается задвоенное условие Order By, которое и приводило к ошибке.

Думаете, на этом все? Шиш! Индекс форума под ГОСТЕМ выкидывает сообщение о нехватке прав на просмотр Лезем опять в archive.php, ВНИМАТЕЛЬНО читаем начало и вместе со мной хором материм авторов. После чего меняем блок
PHP код:
$permissions = new Permissions($forum);

if (
$permissions->can_view == 0)
{
   
redirect_header('archive.php',2,_MD_NORIGHTTOACCESS);
   die();
}

if(
$forum == 0)
{
    
display_archive();
}
else if (
$forum )
{
    if(
$topic_id == 0)
    {
        
display_forum_topics($forum);
    } 
на блок
PHP код:
if($forum == 0)
{
    
display_archive();
}
else if (
$forum )
{
    
$permissions = new Permissions($forum);

    if (
$permissions->can_view == 0)
    {
       
redirect_header('archive.php',2,_MD_NORIGHTTOACCESS);
       die();
    }

    if(
$topic_id == 0)
    {
        
display_forum_topics($forum);
    } 
Т.е. тупо пляску с бубном вокруг разрешений доступа убираем в тот кусок, который отрабатывает при просмотре конкретного форума. Чтобы не гонять проверку, а есть ли у анонимуса доступ к форуму с ID=0

Все, после этих несложных манипуляций архив форума прекрасно заводится - осталось только подсунуть ссылки на него поисковикам


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 106.86 Kb. compressed to 99.27 Kb. by saving 7.59 Kb. (7.11%)
Page generated in 0.08835 seconds with 11 queries