Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • phpBB 3.0
  • Другие моды для phpBB3
  • Минимоды и хаки для phpBB3

Удаление дополнительных заголовков сообщений (Re: subj)

автор FladeX

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

6 сообщений
 • Страница 1 из 1
Просмотры: 1511 • 
Аватара пользователя
TFan
Донатор
Сообщения: 201
Зарегистрирован: 05 май 2011, 23:43
Сообщение 30 май 2011, 01:40
У каждого сообщения в phpBB есть свой заголовок, отображаемый перед текстом самого сообщения. Предполагалось, что форумчане смогут указывать тему сообщения в случаях, когда она отклоняется от изначальной темы топика, однако на деле в 98% случаев этот функционал не используется — и все пользователи в итоге видят лишь ненужные повторы заголовка темы с добавлением Re: перед ним. Поэтому опишу несколько способов, как избавиться от этого рудимента.

Удаление Re: из шаблона страниц просмотра темы



Для начала уберём дополнительный заголовок со страниц просмотра тем (так называемый viewtopic). Делается это элементарно — открываем шаблон styles/prosilver/template/viewtopic_body.html и находим там строчку:

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

			<h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>
Упоминаемая здесь переменная {postrow.POST_SUBJECT} и есть тот самый заголовок сообщения. Можно убрать всю строчку, но лучше лишь эту часть:

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

<a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a>
Тогда иконки сообщений сохранятся и будут отображаться, как и раньше.

Для шаблонов, основанных на subsilver2, надо искать строчку вида:

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

					<td class="gensmall" width="100%"><div style="float: {S_CONTENT_FLOW_BEGIN};"> <b>{L_POST_SUBJECT}:</b> {postrow.POST_SUBJECT}</div><div style="float: {S_CONTENT_FLOW_END};"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF --><b>{L_POSTED}:</b> {postrow.POST_DATE} </div></td>
и удалять оттуда такой код:

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

<div style="float: {S_CONTENT_FLOW_BEGIN};"> <b>{L_POST_SUBJECT}:</b> {postrow.POST_SUBJECT}</div>
Разумеется, после произведённых действий не забудьте сохранить изменения в файлах, загрузить их на сервер и обновить в админке соответствующий шаблон.

Но описанный выше способ может показаться слишком уж радикальным, ибо он не будет показывать заголовки сообщений вообще никому. А иногда требуется сохранить отображение для некоторых групп пользователей, например, для администраторов и модераторов. Вспоминаем, что в phpBB есть шаблонные переменные, которые в данном случае подойдут как нельзя кстати.

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

Языковые переменные:

{SITENAME} - выводит название форума, прописанное в админке
{SITE_DESCRIPTION} - описание форума, прописанное в админке
{PAGE_TITLE} - выводит заголовок страницы
Пути:

{T_TEMPLATE_PATH} - заменяется на ./styles/ваш_стиль
{T_THEME_PATH} - заменяется на ./styles/ваш_стиль/theme
{T_STYLESHEET_LINK} - заменяется на ./style.php
{T_IMAGESET_PATH} - заменяется на ./styles/ваш_стиль/imageset
Условные конструкции:

<!-- IF not S_IS_BOT -->
 текст, который не увидят боты
 <!-- ENDIF --> 
<!-- IF S_USER_LOGGED_IN -->
 текст, который увидят только залогиненные пользователи
 <!-- ENDIF -->
Объединение условных конструкций:

<!-- IF not S_IS_BOT and S_USER_LOGGED_IN -->
 текст, который не увидят боты, и увидят только залогиненные пользователи
 <!-- ENDIF -->
Алгоритм действий тот же самый, только вместо удаления части строки нужно вставлять до и после неё шаблонные условия. Условие для администраторов выглядит так:

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

<!-- IF U_ACP --><!-- ENDIF -->
Для модераторов:

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

<!-- IF U_MCP --><!-- ENDIF -->
Для тех и других одновременно (то есть будет показываться и администраторам, и модераторам):

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

<!-- IF U_ACP or U_MCP --><!-- ENDIF -->
Чтобы было совсем понятно, покажу, как надо оформить в условия нужную нам строчку:

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

<!-- IF U_ACP or U_MCP --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a><!-- ENDIF -->
Удаление Re: из шаблона написания сообщений

Для полноты работы теперь удалим текстовое поле для ввода дополнительного заголовка, которое отображается в форме написания ответа в тему:



За этот шаблон отвечает файл posting_editor.htmlprosilver надо редактировать styles/prosilver/template/posting_editor.html, ища в нём строчки:

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

	<dl style="clear: left;">
		<dt><label for="subject">{L_SUBJECT}:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
	</dl>
Однако удалить этот код нельзя, так как тогда пропадёт возможность указывать название для создаваемых тем, без чего ну никак не обойтись. Поэтому нужно условие, которое бы позволило определить, пишем мы новую темы или же просто сообщение в уже созданную тему. Можно специально добавить новое условие, а можно проверять просто наличие заголовка темы — если он есть, то понятно дело, что тема уже создана, а если его нет — значит, нет и темы. Поэтому используем такое условие:

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

<!-- IF not TOPIC_TITLE --><!-- ENDIF -->
В результате получим:

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

<!-- IF not TOPIC_TITLE -->
	<dl style="clear: left;">
		<dt><label for="subject">{L_SUBJECT}:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
	</dl>
<!-- ENDIF -->
Аналогично и для subsilver2-стилей, только открывать надо уже файл styles/subsilver2/template/posting_body.html и искать такие строки:

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

<tr>
	<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
	<td class="row2" width="78%"><input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" /></td>
</tr>
Всё, после этого задача является выполненной.
Небольшая вариация

Отдельно рассмотрим случай, когда заголовок сообщения на странице просмотра темы надо выводить, а вот при редактировании сообщения - наоборот, не надо - но только пользователям, а администраторы и модераторы должны иметь возможность редактировать его. Тогда нужно редактировать лишь файл шаблона, отвечающего за постинг, так, чтобы пользователям не показывалось поле ввода, но при этом не удаляя его совсем. Для этого открываем всё тот же styles/prosilver/template/posting_editor.html, ища в нём строчки:

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

	<dl style="clear: left;">
		<dt><label for="subject">{L_SUBJECT}:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
	</dl>
и заменяем на такой код:

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

<!-- IF U_ACP or U_MCP or not TOPIC_TITLE -->
	<dl style="clear: left;">
		<dt><label for="subject">{L_SUBJECT}:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
	</dl>
<!-- ELSE -->
	<input type="hidden" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" />
<!-- ENDIF -->
Для subsilver2 надо открывать файл styles/subsilver2/template/posting_body.html и искать такие строки:

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

<tr>
	<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
	<td class="row2" width="78%"><input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" /></td>
</tr>
после чего заменять их на такие:

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

<!-- IF U_ACP or U_MCP or not TOPIC_TITLE -->
<tr>
	<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
	<td class="row2" width="78%"><input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" /></td>
</tr>
<!-- ELSE -->
	<input type="hidden" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" value="{SUBJECT}" />
<!-- ENDIF -->
Скопипастил здесь: http://fladex.ru/news/a-145.html
Последний раз редактировалось TFan 30 май 2011, 01:41, всего редактировалось 2 раза.
Адаптирую любой шаблон от phpBB3 под любую версию ppkBB3cker.
TFan
Аватара пользователя
mrm75
Донатор
Сообщения: 61
Зарегистрирован: 13 мар 2011, 05:37
Сообщение 30 май 2011, 07:51
Спасибо, как раз то что нужно!
mrm75
Аватара пользователя
mrm75
Донатор
Сообщения: 61
Зарегистрирован: 13 мар 2011, 05:37
Сообщение 06 июн 2011, 22:07
А вот как убрать это поле с формы быстрого ответа?
mrm75
TyMaH
Благодаривший
Сообщения: 26
Зарегистрирован: 25 авг 2011, 17:06
Сообщение 22 сен 2011, 20:18
Есть метод в 20 раз проще

Открыть: posting.php


Найти:

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

if (($mode == 'reply' || $mode == 'quote') && !$submit && !$preview && !$refresh)
{
    $post_data['post_subject'] = ((strpos($post_data['post_subject'], 'Re: ') !== 0) ? 'Re: ' : '') . censor_text($post_data['post_subject']);
} 
Заменить на:

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

if (($mode == 'reply' || $mode == 'quote') && !$submit && !$preview && !$refresh)
{
    $post_data['post_subject'] = ((strpos($post_data['post_subject'], 'Re: ') !== 0) ? '' : '') . censor_text($post_data['post_subject']);
}
TyMaH
Аватара пользователя
9CaraTT
VIP
Сообщения: 3095
Зарегистрирован: 13 мар 2011, 15:23
Сообщение 05 фев 2013, 20:09
TyMaH писал(а):Есть метод в 20 раз проще
PPK а почему на моде трекера не поставил к примеру мод NV advanced last topic titles там уже нет этих Re: по умолчанию ... на 3.0.11 версии форума проблем не знаю по удалению Re: )
9CaraTT
MagmaMan
Пользователь
Сообщения: 5
Зарегистрирован: 11 июл 2013, 11:04
Сообщение 11 июл 2013, 16:35
TyMaH писал(а):Есть метод в 20 раз проще

Открыть: posting.php
Я попробовал, у меня не сработало. :?:
TFan писал(а):Но описанный выше способ может показаться слишком уж радикальным, ибо он не будет показывать заголовки сообщений вообще никому. А иногда требуется сохранить отображение для некоторых групп пользователей, например, для администраторов и модераторов.
Не пойму, а в чем заключается радикальность? Можно показать на примерах?
MagmaMan
6 сообщений
 • Страница 1 из 1

Вернуться в «Минимоды и хаки для phpBB3»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2025 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Расширения в разработке ↳   База расширений ↳   Стили для phpBB 3.1-3.3 ↳   Переводы расширений для phpBB3.1-3.3 ↳   Поиск и запросы расширений ↳   Запросы расширений, функционала и переводов для подписчиков ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   F.A.Q. ↳   Ваши трекеры ↳   Оффтопик xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение phpBB 3.0 ↳   Другие моды для phpBB3 ↳   Минимоды и хаки для phpBB3 ↳   Вопросы по phpBB3 ↳   phpBB3 ppkBB3cker Edition ↳   Платные услуги, моды, стили ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo