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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

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

Сообщение LavIgor »

Татьяна5, объясни подробнее, что конкретно требуется.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12416
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

LavIgor
В 3.1 ссылки с get-параметрами выглядят так:
thankslist/givens/44631/true
И соответственно в routing.yml

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

gfksx_ThanksForPosts_thankslist_controller_user:
    pattern: /thankslist/{mode}/{author_id}/{give}{tslash}
    defaults: { _controller: gfksx.ThanksForPosts.controller.thankslist:main, top: 0, start: 0, sort_key: "a", sort_dir: "d", topic_id: 0, return_chars: 300 }
    requirements:
        mode: \w+
        author_id: \d+
        give: true|false
        tslash : "/?"
Не пойму, как записать случай, когда параметров много и они используются в разных комбинациях
К примеру, есть:

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

/page?i=6&y=8
/page?u=2&y=3
/page?m=2&mode=json
/page?u=3
(Что нужны разные контроллеры в routing.yml это понятно. Как именно их можно записать, особенно с одинаковыми типами данных, - непонятно)
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

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

Сообщение LavIgor »

Татьяна5, это не GET-параметры. Это параметры маршрута.
И всё же нужно чётко знать, какими они могут быть. Даже GET-параметры не абсолютно произвольны.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12416
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

LavIgor
Более 10 параметров. Используются в разных вариациях.
Так что мне бы пример как это всё организовать...
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

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

Сообщение LavIgor »

Татьяна5, для каждой комбинации по идее можно создать свой маршрут.
Тут всё зависит от конкретной задачи.
Можно обобщать маршруты и задавать значения по умолчанию, система очень гибкая в этом плане.

Отправлено спустя 2 минуты 14 секунд:
Вот здесь документация: http://symfony.com/doc/current/routing.html.
А вот один из примеров реализации в привязке к phpBB: https://github.com/phpbb/customisation- ... 2.x/config.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12416
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

LavIgor писал(а): один из примеров
То есть можно создать нечто вроде

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

/page/i/2/y/8
/page/u/3
/page/u/2/y/3
/page/m/2/mode/json
где только значения переменных могут меняться
То, что надо
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 5 месяцев
Благодарил (а): 257 раз
Поблагодарили: 195 раз

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

Сообщение Sumanai »

Можно ли как-то узнать, есть ли прослушивающие определённое событие ядра расширения?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

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

Сообщение Sheer »

Искать название события в перехватчике
Например

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

    /**
     * Assign functions defined in this class to event listeners in the core
     *
     * @return array
     * @static
     * @access public
     */
    static public function getSubscribedEvents()
    {
        return array(
            'core.user_setup'                                => 'load_language_on_setup',
            'core.viewtopic_assign_template_vars_before'    => 'get_topic_data',
            'core.viewtopic_modify_post_row'                => 'modify_post_row',
            'core.page_header_after'                        => 'page_header_after',
        );
    } 
Отсюда видно, что в расширении используются события
core.user_setup
core.viewtopic_assign_template_vars_before
core.viewtopic_modify_post_row
core.page_header_after
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16356
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 520 раз
Поблагодарили: 1740 раз

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

Сообщение rxu »

Sumanai, есть такой метод как

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

$phpbb_dispatcher->getListeners();
Для конкретного события указывается его имя, например

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

$phpbb_dispatcher->getListeners('core.user_setup');
Но вывод там очень большой - выводятся все элементы объекта класса слушателя и его зависимостей, чтобы получить только имена классов, нужна фильтрация.
Но, думаю, разберетесь.
Изображение
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 5 месяцев
Благодарил (а): 257 раз
Поблагодарили: 195 раз

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

Сообщение Sumanai »

rxu писал(а): Но вывод там очень большой
Да мне только есть/нет, так что подойдёт. Всем спасибо.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16356
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 520 раз
Поблагодарили: 1740 раз

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

Сообщение rxu »

Sumanai писал(а): Да мне только есть/нет
Тогда лучше использовать hasListeners(), чтобы не кушало так много памяти.
Изображение
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 2 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

Привет! :)
Подскажите, какое событие использовать для внесение правок в текст, перед тем, как текст (сообщения) будет сохранен в БД?
И что за переменная отвечает за текст поста?
Спасибо.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

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

Сообщение Sheer »

Event List

Отправлено спустя 1 минуту 35 секунд:
[dev] STK for phpBB 3.1.x & 3.2.x СРЕДСТВА РАЗРАБОТКИ -- События ядра - Здесь перечислены все события ядра и шаблонов с их кратким описанием, которые можно использовать при создании расширений
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 2 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

Что-то я даже с подсказками не могу найти нужное. Ни событие, ни переменную.
LBeaver
phpBB 1.4.4
Сообщения: 153
Стаж: 9 лет 5 месяцев
Благодарил (а): 47 раз
Поблагодарили: 44 раза

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

Сообщение LBeaver »

Slash, как вариант: Re: [release] Быстрый ответ: перезагрузка (QuickReply Reloaded) (подводные камни там же).

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