Расширения - это просто!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
UncleAndy
Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Не подумал о таком варианте. Постараюсь в ближайшее время описать что еще нужно. Все-таки хотелось-бы сделать расширение именно для PHPBB.rxu писал(а):Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
-
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 12 лет 11 месяцев
- Благодарил (а): 97 раз
- Поблагодарили: 91 раз
- Забанен: Бессрочно
Re: Расширения - это просто!
А что запрещает продублировать функции по смене пароля, но без мешающих проверок? Самому изменять значения в БД никто не запрещает же.
phpBBex
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
По смене имени юзера. Мешает то, что для этого надо будет лезть в ядро. Или вы знаете как это сделать чисто через расширение?xisp писал(а):А что запрещает продублировать функции по смене пароля, но без мешающих проверок?
А! Вы имеете ввиду создать свой контроллер в котором продублировать код нужной страницы (например, страницы профиля где меняется логин) и глобально сменить линк на него?
-
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 12 лет 11 месяцев
- Благодарил (а): 97 раз
- Поблагодарили: 91 раз
- Забанен: Бессрочно
Re: Расширения - это просто!
Даже менять не нужно. Отключить стандартную и сделать свою, отдельной боковой вкладкой в разделе пользователя.UncleAndy писал(а):и глобально сменить линк на него?
И создавать не контролёр, а модуль пользовательского раздела, чтобы интегрировать в стандартную панель.
Ну и заодно события запросить, чтобы сейчас сделать копипастом, а потом по нормальному.
phpBBex
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Честно говоря, из приведенного почти ничего непонятно. Есть где-то примеры как "отключать стандартную" и "создать модуль пользовательского раздела"?xisp писал(а):Даже менять не нужно. Отключить стандартную и сделать свою, отдельной боковой вкладкой в разделе пользователя.
И создавать не контролёр, а модуль пользовательского раздела, чтобы интегрировать в стандартную панель.
Ну и заодно события запросить, чтобы сейчас сделать копипастом, а потом по нормальному.
-
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 12 лет 11 месяцев
- Благодарил (а): 97 раз
- Поблагодарили: 91 раз
- Забанен: Бессрочно
Re: Расширения - это просто!
Вроде выяснили, что это настраивается в админке, и при установке расширения можно на всякий случай ещё раз установить на выкл. Большинство и не знает про такую возможность, и обратно не включит (да и по моему смена имени и так отключена по умолчанию).UncleAndy писал(а):Есть где-то примеры как "отключать стандартную"
Посмотрите в расширении галереи, к примеру.UncleAndy писал(а):и "создать модуль пользовательского раздела"?
phpBBex
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Что-бы включить возможность каждому пользователю править свой ник - это надо включать для каждого пользователя. Или править для конкретной группы и фиксировать группу у пользователя. Так-же обстоит дело и с изменением пароля. Его можно запретить только конкретным правом пользователя. Наверное, его тоже можно прописать через группу.xisp писал(а):Вроде выяснили, что это настраивается в админке
Мне, все-таки, больше нравится вариант со своим контроллером, наследником от стандартного и подменой линков. Возможно-ли глобально подменить определенные линки в расширении?
Добавлено спустя 1 час 41 минуту 16 секунд:
В общем, смотрите какая логическая нестыковка возникает... В auth провайдере я могу повлиять на процедуру логина. Однако, процедура регистрации почему-то в него не интегрирована. Ведь это-же однотипные действия, которые напрямую связаны друг с другом. Кроме того, хорошо-бы было сделать так, что-бы и дополнительные авторизации, например, при смене регистрационных данных, тоже шли через auth провайдер. Ведь, если я не использую авторизацию по паролю, вполне логично что и внутренняя дополнительная авторизация не может работать с паролем.rxu писал(а):UncleAndy
Если штатных средств не хватает, их надо дополнить так, чтобы хватило.
Давайте список, попробую сделать пулл реквест(ы) в исзодники ядра.
Сообщите, если нужно более подробно описать API и необходимые изменения.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
Было бы неплохо.UncleAndy писал(а):Сообщите, если нужно более подробно описать API и необходимые изменения.
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Ну вот давайте посмотрим...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 -->
Конечно, как вы понимаете, для использования этого метода надо по всем шаблонам расставить и ивенты в нужных местах и добавить в условие показа придуманные имена тригерных переменных.<!-- DEFINE $TRIGGER_THIS_BLOCK_DISABLE= 1 -->
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Мне вроде не ответили на этот вопрос. Возможна-ли подмена стандартных линков на свои URL из роута расширения? По идее, это более универсальный вариант.UncleAndy писал(а):Мне, все-таки, больше нравится вариант со своим контроллером, наследником от стандартного и подменой линков. Возможно-ли глобально подменить определенные линки в расширении?
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
Я пока раздумываю, т.к. вариантов реализации несколько.UncleAndy писал(а):Возможна-ли подмена стандартных линков на свои URL из роута расширения
Касательно подмены URL, подменить можно всё, что угодно, о чем конкретно речь? Вы задаете слишком общие вопросы. В программировании возможно всё, вопрос лишь в затратах.
Re: Расширения - это просто!
Да, если они есть, например, в общем шаблоне. См. простейший пример с U_CANONICAL в [BETA] empennage: добавление контента в низ/верх страниц , можно подменить что угодно, имеющееся в зоне видимости (да и вне тоже). Делать можно практически всё то же, что и в слушателе события ядра, который этот код вызывает. Однако, компиляцию своих шаблонов это расширение выполняет до, а не во время и не после компиляции шаблона ядром. При этом есть возможность добавить кучу своих локальных переменных (вроде $TRIGGER_THIS_BLOCK_DISABLE, как в Вашем примере), которые потом (возможно) будут учтены. В текущей версии Empennage явная возможность этого действия отключена.UncleAndy писал(а):Возможно-ли глобально подменить определенные линки в расширении?
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
А вы расширение не перепутали? Я в его исходниках вообще ни одного упоминания U_CANONICAL не нашел.c61 писал(а):См. простейший пример с U_CANONICAL в [BETA] empennage: добавление контента в низ/
Добавлено спустя 44 минуты 34 секунды:
Ок. Конкретный пример.rxu писал(а):Касательно подмены URL, подменить можно всё, что угодно, о чем конкретно речь?
Есть страница /ucp.php?i=ucp_profile&mode=reg_details с регистрационными данными. Мне нужно что-бы вместо нее показывался URL на мою страницу.
Правда, вот сейчас я порылся в коде и пришел к выводу, что вариант, основанный на шаблонных ивентах намного проще.

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