Календарь - все сообщения темы за выбранную дату

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Hvzh
phpBB 1.0.0
Сообщения: 8
Стаж: 15 лет 7 месяцев
Благодарил (а): 1 раз

Календарь - все сообщения темы за выбранную дату

Сообщение Hvzh »

Скажите, существует ли такой мод? Где-то вроде инфа проскакивала, но я не помню, где. А все календари, которые мне попадались, выдают только события :((
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

На основе календарика от board3 Portal это делается элементарно. Совершенно непонятно, почему его авторы эту возможность в свой календарь не включили.
Hvzh
phpBB 1.0.0
Сообщения: 8
Стаж: 15 лет 7 месяцев
Благодарил (а): 1 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Hvzh »

Sheer писал(а):На основе календарика от board3 Portal это делается элементарно
А не подскажете, как? Я новичок в phpBB...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Файл portal/block/mini_cal.php
Найти

Код: Выделить всё

// get the calendar month  
Перед этим вставить

Код: Выделить всё

define('MINI_CAL_DAY_LINK_CLASS', 'gensmall'); 

Код: Выделить всё

$mini_cal_day = ($mini_cal_today == $d_mini_cal_today) ? '<span style="font-weight: bold; color: ' . $portal_config['portal_minicalendar_today_color'] . ';">' . $mini_cal_this_day . '</span>' : $mini_cal_this_day; 
После вставить

Код: Выделить всё

$mini_cal_day_link = '<a href="' . append_sid($phpbb_root_path . "search.$phpEx?search_id=day&sd=a&st=" . $mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( $mini_cal_today >= $d_mini_cal_today ) ? $mini_cal_day_link : $mini_cal_day;
 
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

Sheer, после добавления предложенного Вами кода в mini_cal.php дни в календаре стали кликабельными, но при нажатии на любую дату выдает:
Подходящих тем или сообщений не найдено
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Мда... хотел как проще...
Замени этот кусок кода

Код: Выделить всё

$mini_cal_day_link = '<a href="' . append_sid($phpbb_root_path . "search.$phpEx?search_id=day&sd=a&st=" . $mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( $mini_cal_today >= $d_mini_cal_today ) ? $mini_cal_day_link : $mini_cal_day; 
На этот

Код: Выделить всё

$nix_mini_cal_today = gmmktime($config['board_timezone'], 0, 0, $mini_cal_this_month, $mini_cal_this_day, $mini_cal_this_year);
$nix_mini_cal_today = $nix_mini_cal_today - ($user->data['user_timezone'] * 3600) - ($config['board_timezone'] * 3600) - ($config['board_dst'] * 3600);
$mini_cal_day_link = '<a href="' . append_sid($phpbb_root_path . "search.$phpEx?search_id=day&sd=a&st=" . $nix_mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( $mini_cal_today >= $d_mini_cal_today ) ? $mini_cal_day_link : $mini_cal_day; 
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

Код поменял, кеш почистил, но ничего не изменилось. по прежнему ничего не находит.
может у меня руки не с того места растут...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Ссылку в студию. Приложи к сообщению файл mini_cal.php
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Простите старика.... Про search.php я забыл совсем...
Найти

Код: Выделить всё

$sort_dir = request_var('sd', 'd'); 
После вставить

Код: Выделить всё

$day = request_var('day', 0);
$time = $sort_days; 
Найти

Код: Выделить всё

// Oh holy Bob, bring us some activity...  
После вставить

Код: Выделить всё

            case 'day' :
                $next_time = ($time + (24*3600))-1;
                $u_sort_param = 'st=';
                $u_sort_param .= $time;
                $u_sort_param .= '&sk=t&sd=a';
                $sql_sort = 'ORDER BY t.post_time';

                $sql = 'SELECT t.post_id
                        FROM ' . POSTS_TABLE . ' t
                        WHERE t.post_time > '.$time.' AND t.post_time < '.$next_time.'
                            ' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                $field = 'post_id';

            break; 
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

Sheer
после изменения search.php при нажатии на дату вылазит такая ошибка:

SQL ERROR [ mysql4 ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND t.post_time < 86399 O' at line 3 [1064]
SQL
SELECT t.post_id FROM phpbb_posts t WHERE t.post_time > AND t.post_time < 86399 ORDER BY t.post_time LIMIT 1001

я Вас, наверное, уже замучил...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Э... да у тебя там search.php модифицированный как-то...
Попробуй так
Вот это

Код: Выделить всё

$day = request_var('day', 0);
$time = $sort_days; 
удали
Замени

Код: Выделить всё

            case 'day' :
                $next_time = ($time + (24*3600))-1;
                $u_sort_param = 'st=';
                $u_sort_param .= $time;
                $u_sort_param .= '&sk=t&sd=a';
                $sql_sort = 'ORDER BY t.post_time';

                $sql = 'SELECT t.post_id
                        FROM ' . POSTS_TABLE . ' t
                        WHERE t.post_time > '.$time.' AND t.post_time < '.$next_time.'
                            ' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . "
                        $sql_sort";
                $field = 'post_id';

            break;  
на

Код: Выделить всё

// Поиск из календаря
            case 'day' :
                $time = request_var('st', 0);
                $next_time = ($time + (24*3600))-1;
                $sql = 'SELECT post_id FROM ' . POSTS_TABLE . ' WHERE post_time > '.$time.' AND post_time < '.$next_time.' ORDER BY post_time';
                $field = 'post_id';
            break; 
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

Sheer
вот теперь Вы меня простите за невнимательность... SQL ошибку выдавало, так как я не вставил в search.php

Код: Выделить всё

$day = request_var('day', 0);
$time = $sort_days;
поиск из календаря работает с обоими вариантами кодов. и последний вопрос - какой из этих вариантов лучше оставить? беспокоюсь о нагрузке на базу :)

Спасибо за поддержку.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Sheer »

Gabriil писал(а):так как я не вставил в search.php
Я так и подумал, ибо у тебя $time было не определено (а вот debug включать надо!).
Второй вариант проще. Но на нагрузку никак не повлияет.

Добавлено спустя 59 минут 7 секунд:
И еще, у тебя почему-то в mini_cal.php не определены значения $portal_config['portal_minicalendar_day_link_color'] и $portal_config['portal_minicalendar_today_color']
Сделай так (это для "косметики")
mini_cal.php
' . $portal_config['portal_minicalendar_day_link_color'] . ' заменить на #006F00

$portal_config['portal_minicalendar_today_color'] заменить на #FF0000
Строку

Код: Выделить всё

$mini_cal_day = ($mini_cal_today == $d_mini_cal_today) ? '<span style="font-weight: bold; color: ' . $portal_config['portal_minicalendar_today_color'] . ';">' . $mini_cal_this_day . '</span>' : $mini_cal_this_day; 
Замени на

Код: Выделить всё

$mini_cal_day = ( $mini_cal_today == $d_mini_cal_today ) ? '<span class="' . MINI_CAL_TODAY_CLASS . '" style="font-weight: bold; border-style: outset; border-width: thin; color: #FF0000;">' . $mini_cal_this_day . '</span>' : $mini_cal_this_day; 
Аватара пользователя
Gabriil
phpBB 1.2.1
Сообщения: 28
Стаж: 16 лет 7 месяцев
Благодарил (а): 6 раз

Re: Календарь - все сообщения темы за выбранную дату

Сообщение Gabriil »

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

Код: Выделить всё

$nix_mini_cal_today = gmmktime($config['board_timezone'], 0, 0, $mini_cal_this_month, $mini_cal_this_day, $mini_cal_this_year);
$nix_mini_cal_today = $nix_mini_cal_today - ($user->data['user_timezone'] * 3600) - ($config['board_timezone'] * 3600) - ($config['board_dst'] * 3600);
$mini_cal_day_link = '<a href="' . append_sid($phpbb_root_path . "search.$phpEx?search_id=day&sd=a&st=" . $nix_mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( $mini_cal_today >= $d_mini_cal_today ) ? $mini_cal_day_link : $mini_cal_day;
строку

Код: Выделить всё

['portal_minicalendar_day_link_color']
заменил на:

Код: Выделить всё

['portal_minicalendar_today_color']
не знаю, правильно ли это, но ошибки при включенном дебаге исчесли и поиск в календаре работает.

Sheer, что Вы скажете по этому поводу?

Вернуться в «Запросы модов для phpBB 3.0.x»