Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

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

Re: Расширения - это просто!

Сообщение rxu »

UncleAndy
Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

rxu писал(а):Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
Не подумал о таком варианте. Постараюсь в ближайшее время описать что еще нужно. Все-таки хотелось-бы сделать расширение именно для PHPBB.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 11 месяцев
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Расширения - это просто!

Сообщение xisp »

А что запрещает продублировать функции по смене пароля, но без мешающих проверок? Самому изменять значения в БД никто не запрещает же.
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

xisp писал(а):А что запрещает продублировать функции по смене пароля, но без мешающих проверок?
По смене имени юзера. Мешает то, что для этого надо будет лезть в ядро. Или вы знаете как это сделать чисто через расширение?

А! Вы имеете ввиду создать свой контроллер в котором продублировать код нужной страницы (например, страницы профиля где меняется логин) и глобально сменить линк на него?
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 11 месяцев
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Расширения - это просто!

Сообщение xisp »

UncleAndy писал(а):и глобально сменить линк на него?
Даже менять не нужно. Отключить стандартную и сделать свою, отдельной боковой вкладкой в разделе пользователя.
И создавать не контролёр, а модуль пользовательского раздела, чтобы интегрировать в стандартную панель.
Ну и заодно события запросить, чтобы сейчас сделать копипастом, а потом по нормальному.
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

xisp писал(а):Даже менять не нужно. Отключить стандартную и сделать свою, отдельной боковой вкладкой в разделе пользователя.
И создавать не контролёр, а модуль пользовательского раздела, чтобы интегрировать в стандартную панель.
Ну и заодно события запросить, чтобы сейчас сделать копипастом, а потом по нормальному.
Честно говоря, из приведенного почти ничего непонятно. Есть где-то примеры как "отключать стандартную" и "создать модуль пользовательского раздела"?
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 11 месяцев
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Расширения - это просто!

Сообщение xisp »

UncleAndy писал(а):Есть где-то примеры как "отключать стандартную"
Вроде выяснили, что это настраивается в админке, и при установке расширения можно на всякий случай ещё раз установить на выкл. Большинство и не знает про такую возможность, и обратно не включит (да и по моему смена имени и так отключена по умолчанию).
UncleAndy писал(а):и "создать модуль пользовательского раздела"?
Посмотрите в расширении галереи, к примеру.
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

xisp писал(а):Вроде выяснили, что это настраивается в админке
Что-бы включить возможность каждому пользователю править свой ник - это надо включать для каждого пользователя. Или править для конкретной группы и фиксировать группу у пользователя. Так-же обстоит дело и с изменением пароля. Его можно запретить только конкретным правом пользователя. Наверное, его тоже можно прописать через группу.

Мне, все-таки, больше нравится вариант со своим контроллером, наследником от стандартного и подменой линков. Возможно-ли глобально подменить определенные линки в расширении?

Добавлено спустя 1 час 41 минуту 16 секунд:
rxu писал(а):UncleAndy
Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
В общем, смотрите какая логическая нестыковка возникает... В auth провайдере я могу повлиять на процедуру логина. Однако, процедура регистрации почему-то в него не интегрирована. Ведь это-же однотипные действия, которые напрямую связаны друг с другом. Кроме того, хорошо-бы было сделать так, что-бы и дополнительные авторизации, например, при смене регистрационных данных, тоже шли через auth провайдер. Ведь, если я не использую авторизацию по паролю, вполне логично что и внутренняя дополнительная авторизация не может работать с паролем.

Сообщите, если нужно более подробно описать API и необходимые изменения.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16374
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1746 раз

Re: Расширения - это просто!

Сообщение rxu »

UncleAndy писал(а):Сообщите, если нужно более подробно описать API и необходимые изменения.
Было бы неплохо.
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

rxu писал(а):Было бы неплохо.
Ну вот давайте посмотрим...

1. Во-первых, хотелось-бы все-таки в шаблоне login_body иметь шаблонные ивенты, с помощью которых я мог-бы изменить то, что там расположено. Что-бы не было необходимости скрывать ненужные блоки через CSS - это как-то коряво выглядит. А если будут шаблонные ивенты, через которые я могу поставить в шаблоне условие включения данных блоков, это было-бы намного лучше. Здесь я имею ввиду нижеописанный метод блокировки участков html кода с помощью переменных-тригеров.

2. Если рассматривать процедуру регистрации в контексте возможных методов авторизации без пароля... По идее, логин - это стандартное поле, которое нужно при любом способе авторизации. А вот "пароль" - не обязательно. Поэтому, хотелось-бы иметь возможность:
2.1. Скрывать поле "пароль" в форме регистрации и заменять его своими данными. По идее, для этого достаточно, как и в п.1. раскидать по шаблону ивенты в достаточном количестве. Через них тогда можно будет и скрыть ненужные поля (как минимум - поле пароля с его повтором) и добавить нужные.
2.2. В процедуре обработки регистрации необходимо предусмотреть вызов дополнительного метода register из auth провайдера. По идее, он может быть без параметров, пользуясь параметрами конструктора для получения нужных данных (через request) или можно передавать ему хэш со значениями параметров запроса, отдаваемых при регистрации. Возврат можно сделать по аналогии с методом login(). И использовать при регистрации в коде ядра данные из возвращаемого user_row.

3. Для промежуточной дополнительной авторизации, там где сейчас запрашивается только пароль (например, для смены логина), так-же необходимо два действия:
3.1. Во всех местах где идет запрос пароля, поставить до и после поля ввода пароля шаблонные ивенты. Что-бы можно было его заменять на необходимый шаблонный код.
3.2. В auth провайдере нужно добавить метод "для дополнительной проверки логина". Назвать его можно как-то вроде check_login и можно сделать так что-бы работал он полностью аналогично методу login провайдера. Можно было-бы, конечно, использовать один метод login для обеих случаев, но лучше подстраховаться.

4. Есть еще дополнительная авторизация для админа. Здесь нужды те-же, которые относятся к обычной странице логина - нужны огибающие шаблонные ивенты в шаблоне формы запроса дополнительного логина админа (тут нужна возможность полностью заменить поля ввода). Саму авторизацию, думаю, достаточно проверять через стандартный метод login auth-провайдера.

По идее, вот этого должно хватить что-бы сделать полноценное использование авторизации через QR-коды с помощью мобильного.

Добавлено спустя 8 минут 31 секунду:
Кстати, на счет шаблонных ивентов...

Нашел вот такой вариант возможной блокировки кода:

Код в основном шаблоне:

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

<!-- EVENT before_block_event -->

<!-- IF not $TRIGGER_THIS_BLOCK_DISABLE -->
 ... html блок ...
<!-- ENDIF -->

Код в шаблонном ивенте (before_block_event.html), отключающий показ данного блока:
<!-- DEFINE $TRIGGER_THIS_BLOCK_DISABLE= 1 -->
Конечно, как вы понимаете, для использования этого метода надо по всем шаблонам расставить и ивенты в нужных местах и добавить в условие показа придуманные имена тригерных переменных.
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

UncleAndy писал(а):Мне, все-таки, больше нравится вариант со своим контроллером, наследником от стандартного и подменой линков. Возможно-ли глобально подменить определенные линки в расширении?
Мне вроде не ответили на этот вопрос. Возможна-ли подмена стандартных линков на свои URL из роута расширения? По идее, это более универсальный вариант.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16374
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1746 раз

Re: Расширения - это просто!

Сообщение rxu »

UncleAndy писал(а):Возможна-ли подмена стандартных линков на свои URL из роута расширения
Я пока раздумываю, т.к. вариантов реализации несколько.
Касательно подмены URL, подменить можно всё, что угодно, о чем конкретно речь? Вы задаете слишком общие вопросы. В программировании возможно всё, вопрос лишь в затратах.
Изображение
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 4 месяца
Благодарил (а): 20 раз
Поблагодарили: 81 раз

Re: Расширения - это просто!

Сообщение c61 »

UncleAndy писал(а):Возможно-ли глобально подменить определенные линки в расширении?
Да, если они есть, например, в общем шаблоне. См. простейший пример с U_CANONICAL в [BETA] empennage: добавление контента в низ/верх страниц , можно подменить что угодно, имеющееся в зоне видимости (да и вне тоже). Делать можно практически всё то же, что и в слушателе события ядра, который этот код вызывает. Однако, компиляцию своих шаблонов это расширение выполняет до, а не во время и не после компиляции шаблона ядром. При этом есть возможность добавить кучу своих локальных переменных (вроде $TRIGGER_THIS_BLOCK_DISABLE, как в Вашем примере), которые потом (возможно) будут учтены. В текущей версии Empennage явная возможность этого действия отключена.
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 2 месяца
Благодарил (а): 7 раз

Re: Расширения - это просто!

Сообщение UncleAndy »

c61 писал(а):См. простейший пример с U_CANONICAL в [BETA] empennage: добавление контента в низ/
А вы расширение не перепутали? Я в его исходниках вообще ни одного упоминания U_CANONICAL не нашел.

Добавлено спустя 44 минуты 34 секунды:
rxu писал(а):Касательно подмены URL, подменить можно всё, что угодно, о чем конкретно речь?
Ок. Конкретный пример.

Есть страница /ucp.php?i=ucp_profile&mode=reg_details с регистрационными данными. Мне нужно что-бы вместо нее показывался URL на мою страницу.

Правда, вот сейчас я порылся в коде и пришел к выводу, что вариант, основанный на шаблонных ивентах намного проще. :(
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 4 месяца
Благодарил (а): 20 раз
Поблагодарили: 81 раз

Re: Расширения - это просто!

Сообщение c61 »

См. предпоследний пример, а не исходники, rootref доступен для изменений. Это расширение предназначено в том числе для создания своих 'расширений' ))

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