First post on every page for phpBB3

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

First post on every page for phpBB3

Сообщение rxu »

В режиме создания или редактирования первого сообщения темы дает возможность закрепить первое сообщение вверху каждой страницы темы.
first_post_on_every_page_phpbb3_1.2.2.zip
first post on every page phpbb3 1.2.3

------------
Для установки на версию phpBB 3.0.6 :

В этой версии часть кода изменилась.
Поэтому в инструкции вместо

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

			// If the post need approval we will wait a lot longer.
использовать для поиска

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

                  // Check the permissions for post approval. Moderators are not affected.
После установки мода необходимо выполнить также следующую инструкцию (для снижения нагрузки на базу данных):

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

Open:
viewtopic.php

Find:
$post_list[$i] = $topic_data['topic_first_post_id'] ;

Replace to:
$post_list[$i] = (int) $topic_data['topic_first_post_id'] ;
Исправление ошибки с отображением информации о редактировании сообщения при закрепленном первом сообщении находится здесь.

FAQ

1. Кто имеет право закреплять сообщение?
Тот, кто имеет право закрывать тему.
First post on every page for phpBB3

2. Вопросы, собранные из темы, в одном сообщении:
First post on every page for phpBB3
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Татьяна5 21.11.2014 5:43, всего редактировалось 8 раз.
Причина: Добавление ссылки на ответ о правах
Изображение
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: First post on every page for phpBB3

Сообщение HAMMER663 »

Татьяна5 можно, но без $user->data['user_id'] == $post_data['topic_poster'] нельзя
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: First post on every page for phpBB3

Сообщение Татьяна5 »

HAMMER663 писал(а):$user->data['user_id'] == $post_data['topic_poster'
Я так поняла, что это условие проверяет, равны ли ID пользователя и ID автора темы
А если темы еще нет (только создается), ID автора уже известен? Или эта запись в базу данных идет после нажатия кнопки "отправить"? Может, в этом как раз и все дело?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: First post on every page for phpBB3

Сообщение Sheer »

Татьяна5 писал(а):В php я нуль
Ну-ну...
Татьяна5 писал(а):Можно ли такой код ставить на рабочий сайт?
Можно. Давайте разберем. Если $first_post_show_allowed не равно нулю (или false - ложь) то есть разрешено показывать первое сообщение на странице и (&&) $auth->acl_get('m_lock', $forum_id) - в этом форуме установлено модераторское право "Может закрывать темы" или (||) пользователь - зарегистрированный, то объект S_FIRST_POST_SHOW_ALLOWED принимает значение истина (true)
Странное правда. Зачем проверять модераторское право у гостя?
Достаточно

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed && $user->data['is_registered']) ? true : false,
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: First post on every page for phpBB3

Сообщение Пчелкин »

Хм...решил тоже сделать для обычных юзеров автоповторение первого сообщения при создании темы на одном простом форуме...
Запрос сделал...

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

UPDATE phpbb_topics SET topic_first_post_show = 1
Во всех старых темах все первые сообщения стали дублироваться первыми...хорошо...

В файле posting_editor.html строку

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

			<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
заменил на

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

<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" checked="checked" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
чек у простых не появился...это естественно...право-то не дано...
В файле posting.php строку

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed  && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_post', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster']))) ? true : false,
Заменил на

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed && $user->data['is_registered']) ? true : false,
исключив проверку на право всем зареганным...
Адмиины и модераторы создают тему и первое сообщение дублируется автоматом на все страницы темы...хорошо...
Создают новую тему обычным юзером -
0368.jpg
Чек стоит и все нормально.....помечаю первое сообщение словами ПЕРВОЕ СООБЩЕНИЕ...
Делаю следующие сообщения...чека при создании сообщений НЕТ!!! Это хорошо!!!
0370.jpg
Делаю 12 сообщение что б заработала вторая страница темы (по 10)
Дублежа нет!!!
0372.jpg
Возвращаюсь обычным юзеров в правку первого сообщения -
чек там стоит и все вроде нормально...
0373.jpg
Ничего не делая с сообщением, просто давлю на ЕНТЕР...
Первое сообщение становится продублированным...
0374.jpg
Что не так?
В posting.php все выглядит сейчас так - (+-5 строк)

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

	'S_HAS_DRAFTS'				=> ($auth->acl_get('u_savedrafts') && $user->data['is_registered'] && $post_data['drafts']) ? true : false,
	'S_COLOUR' 					=> (($auth->acl_get('f_topic_title_colour', $forum_id) && ($mode == 'post' || $mode == 'edit' && $post_data['post_id'] == $post_data['topic_first_post_id'])) ? true : false), 
	'S_FORM_ENCTYPE'			=> $form_enctype,
	'SSD_FORUM_URL'		     	=> preg_replace("/^(http)s?:/+/i", "", generate_board_url()),
	'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed && $user->data['is_registered']) ? true : false,
	'S_FIRST_POST_SHOW_CHECKED'		=> ($first_post_show_checked) ? ' checked="checked"' : '',
	'S_POST_EXPIRE'			    => ($config['expire_enable']) ? true : false,
	'S_POST_EXPIRE_SELECT'		=> $post_expire_select,
	'S_TOPIC_EXPIRE_TYPE'		=> $topic_expire_type_select,
Повторю - и модеры и админы делают тему и автоповтор сам автоматом появляется...не надо править первое сообщение...
А от обычных юзеров - не появляется...появится, если им-же сделать правку первого сообщения...

Добавлено спустя 5 минут 12 секунд:
Пы...сы...на основном тоже самое....так что не повезло вот для обычных юзеров...можно поиздеваться здесь-

http://fotovideoforum.ru/viewforum.php?f=4

Ник

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

Test_№_01

пароль

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

Test_№_011
Добавлено спустя 8 минут 6 секунд:
При создании темы и в дальнейшем сообщений юзером с админскими или модераторскими правами, дублирование появляется само как надо...без дополнительной правки первого сообщения...воть в доказательство - (меток о правках нет)
0375.jpg
Добавлено спустя 3 минуты 16 секунд:
Там пятая тема осталась без дублирования...не правлю первое сообщение пока..

Добавлено спустя 55 минут 59 секунд:
Даже дав группе обычных юзеров право закрывать свои темы, при создании такой темы первое сообщение не продублировалось на автомате...
Не побороть? Откатываться?
Давать группе Обычные модераторские права закрывать любые темы - не хочется...

Добавлено спустя 7 минут 38 секунд:
Я так понял - надо что-то здесь делать...то есть исключить полностью проверку на модерство и право закрывать свои темы...

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

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;
Добавлено спустя 19 минут 48 секунд:
Ковыряю последнюю строку...ну и ошибки вылазят у дебаггера...ужасы...


мда...не дано...

Щас кто-то напишет - учи матчасть....увы...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: First post on every page for phpBB3

Сообщение Pazh »

Зачем ты это сделал
Пчелкин писал(а): В файле posting_editor.html строку

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

			<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
заменил на

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

<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" checked="checked" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
если в файле posting.php есть для этого переменная S_FIRST_POST_SHOW_CHECKED
Нужно заменить текущее значение:
'S_FIRST_POST_SHOW_CHECKED' => ($first_post_show_checked) ? ' checked="checked"' : '',
на
'S_FIRST_POST_SHOW_CHECKED' => ' checked="checked"',


ИМХО в этой строке

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed  && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster']))) ? true : false,
Проверка прав на "Может закрывать темы" вообще "не в тему" и нужно заменить на права модера на редактирование и для автора поста на редактирование собственных сообщений на

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed  && ($auth->acl_get('m_edit', $forum_id) || $auth->acl_get('f_edit', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false,
и соответственно

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

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;
заменить на

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

$perm_show_unshow = ($auth->acl_get('m_edit', $forum_id) || ($auth->acl_get('f_edit', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: First post on every page for phpBB3

Сообщение Пчелкин »

Полез...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: First post on every page for phpBB3

Сообщение Татьяна5 »

В таком варианте заработало:

posting.php (проверку прав вообще убрала)
Найти

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

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;
Заменить на

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

$perm_show_unshow = ($user->data['is_registered']) ? true : false;
Найти

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed  && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_post', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster']))) ? true : false,
Заменить на

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

'S_FIRST_POST_SHOW_ALLOWED'		=> ($first_post_show_allowed && $user->data['is_registered']) ? true : false,
/styles/prosilver/template/posting_editor.html (плюс - это галочку хоть можно снять, когда не нужна)
Найти

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

<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
Заменить на

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

<!-- IF S_FIRST_POST_SHOW_ALLOWED -->
				<div><label for="topic_first_post_show"><input type="checkbox" name="topic_first_post_show" checked="checked" id="topic_first_post_show"{S_FIRST_POST_SHOW_CHECKED} /> {L_FIRST_POST_SHOW} </label></div>
			<!-- ENDIF -->
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: First post on every page for phpBB3

Сообщение Пчелкин »

Татьяна5 Отлично!
В этом -

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

$perm_show_unshow = ($user->data['is_registered']) ? true : false;
и была загвоздка...

Добавлено спустя 34 секунды:
в варианте Pazh галку надо ставить...плюс давать право на закрытие...а хотелось без раздачи этого права....

Полез править и на других форумах...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: First post on every page for phpBB3

Сообщение Pazh »

Пчелкин писал(а):право на закрытие
проверяется в исходной версии мода от rxu, в моей правке оно заменено на может редактировать (хотя по большому счету и это лишнее - раз юзер уже зашел в редактирование)
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: First post on every page for phpBB3

Сообщение Пчелкин »

Pazh писал(а):может редактировать
Дак ограничено ж ...у меня 30 минутами...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: First post on every page for phpBB3

Сообщение Pazh »

ну и нормально, значит и галочку нефиг ему ставить раз редактировать не может
Помощь в ЛС/email только за WM или ЮMoney
k750
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет 11 месяцев
Благодарил (а): 65 раз
Поблагодарили: 1 раз

Re: First post on every page for phpBB3

Сообщение k750 »

Добрый вечер!Подскажите пжл можна ли этот мод установить с помощью автомода?А то я пробовал его загрузить в автомод и мне выдало ''МОД загружен и
подготовлен к
установке.'' но когда возвращаюсь в автомод там нет модов для установки.
k750
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет 11 месяцев
Благодарил (а): 65 раз
Поблагодарили: 1 раз

Re: First post on every page for phpBB3

Сообщение k750 »

установил мод вручную,всё вроди сделал правильно,строчка Закрепить первое сообщение вверху каждой страницы темы появилась но когда ставлю галочку напротив неё и жму сохранить,а потом редактирую пост то галочки уже нет.Подскажите что не так?Зарание спасибо всем откликнувшимся!
dmtr
phpBB 1.0.0
Сообщения: 2
Стаж: 13 лет 9 месяцев

Re: First post on every page for phpBB3

Сообщение dmtr »

Привет сообществу!

Очень нужен был мод, который бы позволял прикрепить вверху темы не только первое сообщение, а вообще любое из данной темы. Так как в сети ничего кроме мода из первого поста этого топика мне найти не удалось, пришлось написать самому :)
За основу взял мод First post on every page и немного его доработал. Мод обозвал "Stick any post on the top of every page". Результат работы в архиве в прикрепленном файле. Там xml в формате MODX, возможна установка через automod. Я проверял на версии форума 3.0.10, но для 3.0.11 тоже должно подойти.

PS Мод ни на что не претендует. Просто решил поделиться своими наработками, может быть кому-то еще пригодится.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 16 лет 8 месяцев
Откуда: Украина! Харьков
Благодарил (а): 80 раз
Поблагодарили: 292 раза

Re: First post on every page for phpBB3

Сообщение Alecto »

в архиве всего один файл install_mod.xml, который либо не открывается, либо вы что-то недовложили в архив.
так и не смог посмотреть.

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