Уважаемые пользователи!
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
Сообщения: 16452
Стаж: 18 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 531 раз
Поблагодарили: 1772 раза

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

Сообщение rxu »

Только @vendor_extname/templatefile.html.
Изображение
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 10 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

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

Сообщение Алг »

Может кто подскажет:
в шаблон кастомной страницы хочу включить posting_buttons.html. Шаблон находится в myExt/styles/all/template
Пишу так

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

<!-- INCLUDE {T_TEMPLATE_PATH}/posting_buttons.html -->
получаю
Unable to find template "./styles/prosilver/template/posting_buttons.html" (looked into: ./ext/alg/myExt/styles/all/template, ./ext/alg/myExt/styles/all/theme, ./styles/prosilver/template, ./styles/prosilver/theme) in "leaderpanel_body.html" at line 157.
, но выдеденный синеньким путь вроде бы и правильный
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16452
Стаж: 18 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 531 раз
Поблагодарили: 1772 раза

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

Сообщение rxu »

А кастомная страница находится вне директории phpBB, или где?
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 4 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

Anvar писал(а):Там же есть события core.login_box_redirect и core.login_box_failed, подключить можно свой шаблон в listener.
...
Разместить в расширении @ext_name/
Сделал по этому примеру.

В config/services.yml (часть):

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

  gplvote.signdoc.listener:
        class: gplvote\signdoc\event\listener
        arguments:
            - @auth
            - @config
            - @dbal.conn
            - @template
            - @user
            - %core.root_path%
            - %core.php_ext%
        tags:
            - { name: event.listener }
В event/listener.php:

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

namespace gplvote\signdoc\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
        protected $auth;
        protected $config;
        protected $db;
        protected $template;
        protected $user;
        protected $phpbb_root_path;
        protected $php_ext;

        public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\db\driver\driver $db, \phpbb\template\template $template, \phpbb\user $user, $phpbb_root_path, $php_ext)
        {
                $this->auth = $auth;
                $this->config = $config;
                $this->db = $db;
                $this->template = $template;
                $this->user = $user;
                $this->phpbb_root_path = $phpbb_root_path;
                $this->php_ext = $php_ext;
        }

	static public function getSubscribedEvents()
	{
		return array(
                      'core.login_box_redirect'         => 'login_box',
                      'core.login_box_failed'           => 'login_box',
		);
	}
	
        public function login_box($event)
        {
                page_header($this->user->lang['LOGIN'], false);
                $this->template->set_filenames(array('body' => '@gplvote_signdoc/login_body.html'));
                page_footer();
                exit();
        }
}
login_body.html (удалил из него поле пароля) пробовал ложить в ext/gplvote/signdoc/styles/prosilver/template и в ext/gplvote/signdoc/template. Включаю расширение, ставлю авторизацию из него, но страница как и прежде показывается старая.

Поставил логирование - в метод login_box исполнение не передается вообще.

Добавлено спустя 1 час 43 минуты 36 секунд:
Через метод get_login_data auth-провайдера мне удалось добиться того, что-бы контент из моего шаблона разместился ниже формы логина. Но этого недостаточно. Мне нужно еще и как-то отключить стандартную форму логина.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

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

Сообщение xisp »

UncleAndy писал(а): Мне нужно еще и как-то отключить стандартную форму логина
Может вот так:

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

#login {
    display: none;
}
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 4 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

xisp писал(а):Может вот так:
Не - так не получится. Вывод шаблона из провайдера производится внутри этой формы. Я так скрою и нужный вывод.

В принципе, можно так сделать для #login .panel .inner .content. Тогда скроется именно нужный блок.

Где в расширении можно разместить этот CSS?
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

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

Сообщение xisp »

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

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

Сообщение UncleAndy »

xisp писал(а):В данном случаи лучше всего включить его в код страницы.
В принципе, получилось. Но как-то этот вариант коряво выглядит. Как костыль. Неужели нет штатного способа в расширении заменить страницу логина целиком?
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет 2 месяца
Благодарил (а): 57 раз
Поблагодарили: 625 раз

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

Сообщение Anvar »

UncleAndy, Как вариант, заменить ссылку для гостей {U_LOGIN_LOGOUT} и сделать свою страницу.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16452
Стаж: 18 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 531 раз
Поблагодарили: 1772 раза

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

Сообщение rxu »

UncleAndy
У вас метод аутентификации реализован отдельным контроллером, или как?
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 4 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

rxu писал(а):У вас метод аутентификации реализован отдельным контроллером, или как?
У этого метода аутентификации две части, которые работают совместно - контроллер, которые обрабатывает роуты для приема данных из мобильного приложения, и auth провайдер, который выдает пользователю QR-код для сканирования мобильным приложением и проверяет полноту имеющихся данных для логина после нажатия пользователем кнопки "Вход".

В принципе, мне уже удалось добиться что-бы метод работал. Остались два вопроса:

1. При возврате из метода login() со статусом LOGIN_SUCCESS_CREATE_PROFILE у меня сейчас происходит повторная выдача формы логина. Возможно-ли сделать так, что-бы и пользователь автоматически создавался и что-бы он сразу-же логинился?

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

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

Сообщение xisp »

UncleAndy писал(а):Ее можно где-то включить?
Администраторский раздел- Функции конференции- Разрешить смену имени пользователя: поставить в да.
Но для вашего метода уместнее сделать другой вариант, с разрешением однократной смены ника. Я бы не хотел, чтобы пользователи сами меняли ники (а вдруг спам или нецензурщина у старого пользователя?), но сменить ник "улогин100500" (или что там у вас) на человеческий хотелось бы.
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 9 лет 4 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

xisp писал(а):Но для вашего метода уместнее сделать другой вариант, с разрешением однократной смены ника.
Согласен. Но как это организовать технически? Если это возможно, было-бы неплохо включать эту опцию прямо из расширения.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16452
Стаж: 18 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 531 раз
Поблагодарили: 1772 раза

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

Сообщение rxu »

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

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

Сообщение UncleAndy »

UncleAndy писал(а):1. При возврате из метода login() со статусом LOGIN_SUCCESS_CREATE_PROFILE у меня сейчас происходит повторная выдача формы логина. Возможно-ли сделать так, что-бы и пользователь автоматически создавался и что-бы он сразу-же логинился?
Поправка по данной ситуации. При этом пользователь в базе создается, но в форму логина возвращается ошибка "Не удалось создать профиль пользователя.". Из-за чего такое может быть?

Добавлено спустя 1 минуту 5 секунд:
rxu писал(а):Кастомный провайдер может быть добавлен расширением
Не совсем понял на какой именно вопрос этот ответ. Я уже написал, что у меня есть и работает свой кастомный провайдер в расширении. Осталось только разобраться с нюансами.

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