Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Форум-мод ДОКУМЕНТЫ

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

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

Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Здравствуйте
я никогда не имел дело с архитектурой phpBB
подскажите, пожалуйста, правильную "архитектуру" для такого мода
мне нужно на базе форума сделать хранилище документов с возможностью их обсуждения
т.е. я сделал форум ДОКУМЕНТЫ
в нем каждая отдельная тема (phpbb_topics) будет отдельным "документом"
для этого я делаю новую таблицу `MY_phpbb_topics_documents`:
  • id, ai int primary
  • doc_type_id, int, это по сути "тип документа" - например, договор, накладная, доверенность и т.д. (заведомо установленный список в другой таблице, этот список типов буду пополнять вручную через phpmyadmin)
  • doc_num, varchar, номер документа
  • doc_date = дата документа - datetime
  • topic_id, int, для связки с `phpbb_topics`.`topic_id`
Таки образом темы в данном форуме у меня будут строиться по следующему шаблону:
{тип_документа} №{doc_num} от {doc_date}

Предварительно работу делю на несколько основных этапов:
этап 1. форма добавления с учетом новых полей
этап 2. преобразование вывода тем в форуме
этап 3. прочие приятные вещи унификации мода, чтобы можно было пользоваться им универсально, например, добавление раздела настройки для админ-панели.

Список вопросов:

Для этапа 1. Я вижу идеальное решение путем доработки формы добавления темы, а не полной замены. Хотелось бы нажав на кнопку "новая тема" получить "стандартную форму" (http://..../posting.php?mode=post&f=3) с добавленными полями после "заголовок", например как тут:
2016-04-22_2348.png
например так

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

<dl style="clear: left;">
		<dt><label for="subject">Заголовок:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="120" tabindex="2" value="" class="inputbox autowidth" disabled="" placeholder="заголовок ввести нельзя"></dd>
	</dl>

<dl style="clear: left;">
		<dt><label for="subject">Тип документа:</label></dt>
  <dd><select><option>выбрать тип документа</option></select></dd>
	</dl>

<dl style="clear: left;">
		<dt><label for="subject">Номер документа:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="120" tabindex="2" value="" class="inputbox autowidth"></dd>
	</dl>

<dl style="clear: left;">
		<dt><label for="subject">Дата документа:</label></dt>
		<dd><input type="text" name="subject" id="subject" size="45" maxlength="120" tabindex="2" value="" class="inputbox autowidth"></dd>
	</dl>
	
Таким образом у пользователя получится полный функционал "стандартной формы" + новых три поля. Заголовок я запрещаю вводить, а в момент обработки добавления новой темы делаю так что `topic_title` становится путем такого шаблона "{doc_type} №{doc_num} от {doc_date}"

Вопрос. В какую сторону копать, чтобы сделать задуманное через "дополнение" стандартной формы, а не путем ее замены на свою.

Для этапа 2. Хотелось бы сделать таким же путем (путем "дополнения"), а не тотальной заменой вывода шаблона страницы... Подскажите в какую сторону копать, чтобы это сделать. Заранее благодарен.

Почему хочу так... Выходят переодически обновления и не хотелось бы чтобы эти обновления "съели" сделанное и другим кто будет пользоваться модом (я его обязательно выложу в общий доступ) не возникало много проблем в связи с обновлением phpBB на новые версии.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Sheer »

1. В phpBB3.1.x нет модов, есть расширения.
Почитайте Создание страниц в стиле конференции, может это вам поможет.
Возможно вас устроит расширение [beta] Knowledge Base - Библиотека

Отправлено спустя 1 минуту 4 секунды:
Alexx007 писал(а): сделал форум ДОКУМЕНТЫ
в нем каждая отдельная тема (phpbb_topics) будет отдельным "документом"
для этого я делаю новую таблицу `MY_phpbb_topics_documents`:
Так не выйдет точно.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

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

По описанию это похоже на Re: Расширение шаблон запроса
Плюс, для удобства, можно добавить [beta] Topics as articles - Статьи форума
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Sheer писал(а): Так не выйдет точно.
Когда я говорил "отедльным "документом"" я имел ввиду, что топик это "документ":
- сама копия документа хранится ввиде вложения в сообщениии
- добавляется несколько параметров топику, а именно - тип документа, номер документа, дата документа.

Так не получится?..
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Sheer »

Возможно и получится, нужно смотреть есть ли необходимые события, и городить отдельную таблицу БД не нужно, достаточно добавить поля к phpbb_topics
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Sheer писал(а): достаточно добавить поля к phpbb_topics
Понял, согласен, наверное так будет удобнее.

Я создал образец расширения по вашему "howto"... очень удобная инструкция, спасибо!
вот думаю теперь как сделать "добавить в форму добавления топика три новых поля - тип документа, номер и дату".
Можно ли сделать чтото типа такого (названия перемнных использовал условные):

на страницу

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

$htmlxx="
<hr>
  <br>Тип: <Select name='doct_type'><option value='1'>выбрать тип документа</option></select>
  <br>Номер: <input name='num' value='' placeholder='введите номер'>
  <br>Дата: <input name='date' value='' placeholder='введите дату'>
<hr>
";
if($forumd_id==3) { echo $htmlxx; }
в обработчик добавления топика

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

$html="
$sqlxx="
  update `topics`
  set `doc_type`='{$doc_type}', `doc_num`='{$doc_num}', `doc_date`='{$doc_date}' 
  where `topic_id`='{$topic_id}'
  limit 1
";
if($forumd_id==3) { mysql_query($sqlxx,$link); }
?
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Sumanai »

Alexx007 писал(а): на страницу
У вас разметка в коде. Так быть не должно.
Вы должны использовать событие шаблона, события posting_editor_message_before для полного ответа и quickreply_editor_message_before для быстрого в самый раз, и обернуть их в условие шаблона типа

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

<!-- IF FORUM_ID == 3 -->ваш код шаблона <!-- ENDIF -->
В обработчике же нужно добавить данные ваших полей к стандартному запросу на обновление топика, чтобы не делать лишний запрос. Событие поищите в posting.php
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Sumanai писал(а): posting_editor_message_before
Я первый раз буду обращаться к данному событию. Может посоветуете мне раздел мануала где мне почитать о том как работать с такими событиями... пожалуйста? Я пока как в океане среди всех этих данных... со временем все это превратится "в озеро с большим количеством островов.."
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

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

Alexx007 писал(а): как работать с такими событиями
С событиями шаблона - создать в расширении файл styles/название_стиля/template/event/название_события.html
С событиями ядра - подключаться к ним в event/listener.php, пример можно найти чуть ли не в любом расширении
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Татьяна5 писал(а): С событиями шаблона - создать в расширении файл styles/название_стиля/template/event/название_события.html
А чтобы он был доступен для всех стилей

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

...yles/название_стиля/templ...

"название стиля" заменить на "all"?

Пример:

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

...yles/all/templ...
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Татьяна5 писал(а): Да, на all
Я сделал файл в ютф без бом:
2016-04-30_1650.png
но не пойму... появилось что-то... :-)... но что-то не сильно похожее на мое... вот:
2016-04-30_1652.png
может что-то пропустил?...

п.с. расширение активировано:
2016-04-30_16522.png
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Sheer »

Alexx007 писал(а): может что-то пропустил?
Нет, наоборот. <form>...</form> это лишнее. Получается одна форма внутри другой, ибо форма уже инициализирована ранее в posting_layout.html

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

<form id="postform" method="post" action="{S_POST_ACTION}"{S_FORM_ENCTYPE}>
Это для начала.
Далее, приводите код не в виде картинок, а текстом с bb-кодом.
И в просилвере забудьте про верстку таблицами, тем более в том месте - там не прокатит.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Alexx007
phpBB 1.2.1
Сообщения: 23
Стаж: 7 лет 11 месяцев
Благодарил (а): 1 раз

Re: Форум-мод ДОКУМЕНТЫ

Сообщение Alexx007 »

Sheer писал(а): Нет, наоборот. <form>...</form> это лишнее. Получается одна форма внутри другой, ибо форма уже инициализирована ранее в posting_layout.html
понял, убрал, в новинку, пока не сразу понимаю еще что делать....
Sheer писал(а): Далее, приводите код не в виде картинок, а текстом с bb-кодом.
ок, понял
Sheer писал(а): И в просилвере забудьте про верстку таблицами, тем более в том месте - там не прокатит.
ок, понял, это я подгоню... не проблема... в процессе... хотя бы просто понять как это можно вывести... со стилями уже потом буду думать что делать... до стилей еще много... нужно научиться еще постить... красота наводить буду потом...

вот код который я вывожу в итоге:

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

<!-- IF FORUM_ID == 3 -->


<table width='100%' border='0'>
	<tr>
			<td width='150'>Тип документа</td>
			<td>
				<select name='alexx007_doxer_doctype_id'>
					<option value='1'>Выбрать тип документа</option>
					<option value='2'>Договор</option>
					<option value='3'>Реализация товаров и услуг (ТОРГ-12 и Акты)</option>
				</selct>
			</td>
	</tr>
	<tr>
			<td width='150'>Номер документа</td>
			<td>
				<input name='alexx007_doxer_docnum' value='' placeholder='введи номер документа'>
			</td>
	</tr>
	<tr>
			<td width='150'>Дата документа</td>
			<td>
				<input name='alexx007_doxer_docdate' value='' placeholder='введи дату документы'>
			</td>
	</tr>		
</table>


<!-- ENDIF -->
но что-то ничего не изменилось... и пока "аброкадабра" какая-то вместо моего когда...
2016-04-30_1652.png
как в прошлый раз...
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Форум-мод ДОКУМЕНТЫ

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

Alexx007 писал(а): "аброкадабра" какая-то
Для начала кодировка должна быть utf8 без BOM, а потом стоит посмотреть файрбагом куда делись select'ы (вполне возможно, что они оказались скрыты через css)
Ответить

Вернуться в «Для разработчиков»