Приветствую )
С подачи GPT выбрал phpBB как форумный движок, который можно безболезнено модифицировать через расширения. Начали вроде с простоых задач. Собрав пачку граблей пришли к тому что бы сделать хотя бы что-то. В итоге получилось что есть расширение, которое подхватывается,но как буд-то не подает признаков жизни.
Могу я у знающих людей попросить пример расширения , которое просто при заходе на любую страничку форума будет делать запись в файл "helo world" ?
			
			
									
						[3.3] Hello world
					Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
 ).
		
		
	Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
- 
				er107
 - phpBB 2.0.18
 - Сообщения: 1188
 - Стаж: 14 лет 7 месяцев
 - Благодарил (а): 210 раз
 - Поблагодарили: 77 раз
 
Re: [3.3] Hello world
Где? В теме форума? (Если что я не знающий, просто знающим людям будет непонятен ваш вопрос).
- 
				Татьяна5
														 - Поддержка

 - Сообщения: 12855
 - Стаж: 14 лет 2 месяца
 - Благодарил (а): 160 раз
 - Поблагодарили: 2328 раз
 
Re: [3.3] Hello world
Расширение в студию, посмотрим что не такgamgam писал(а): 31.08.2025 16:21 В итоге получилось что есть расширение, которое подхватывается,но как буд-то не подает признаков жизни.
- 
				gamgam
 - phpBB 1.0.0
 - Сообщения: 3
 - Стаж: 2 месяца
 
Re: [3.3] Hello world
ext/dark/hello/
├── composer.json
├── ext.php
└── event/
└── listener.php
composer.json
ext.php
listener.php
			
			
									
						├── composer.json
├── ext.php
└── event/
└── listener.php
composer.json
Код: Выделить всё
{
  "name": "dark/hello",
  "type": "phpbb-extension",
  "description": "Simple test extension",
  "version": "1.0.0",
  "license": "GPL-2.0-only",
  "authors": [
    {
      "name": "Dark",
      "homepage": "https://example.com"
    }
  ],
  "require": {
    "php": ">=7.1",
    "phpbb/phpbb": ">=3.3.0"
  },
  "extra": {
    "display-name": "Hello Extension",
    "soft-require": {
      "phpbb/phpbb": ">=3.3.0,<4.0.0@dev"
    }
  }
}
ext.php
Код: Выделить всё
<?php
namespace dark\hello;
class ext extends \phpbb\extension\base
{
}
listener.php
Код: Выделить всё
<?php
namespace dark\hello;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
    static public function getSubscribedEvents()
    {
        return [
            'core.page_header' => 'on_page_header',
        ];
    }
    public function on_page_header($event)
    {
        file_put_contents(__DIR__ . '/hello.log', date('Y-m-d H:i:s') . " Hello world\n", FILE_APPEND);
    }
}- 
				Татьяна5
														 - Поддержка

 - Сообщения: 12855
 - Стаж: 14 лет 2 месяца
 - Благодарил (а): 160 раз
 - Поблагодарили: 2328 раз
 
Re: [3.3] Hello world
Не хватает:
И в слушателе добавить бы конструктор, хотя бы сейчас пустой
			
			
									
						config/services.yml (синтаксис невидимых символов - только пробелы)
Код: Выделить всё
services:
    dark.hello.listener:
        class: dark\hello\event\listener
        tags:
            - { name: event.listener }- 
				gamgam
 - phpBB 1.0.0
 - Сообщения: 3
 - Стаж: 2 месяца
 
Re: [3.3] Hello world
Ну да, коварство в деталях. GPT оказывается про этот файл не вкурсе.
Лог, он мне на написал, но сама функция выполняется. Это в общем имеено то, что и было нужно ) Спасибо !
			
			
									
						Лог, он мне на написал, но сама функция выполняется. Это в общем имеено то, что и было нужно ) Спасибо !
Код: Выделить всё
<?php
namespace dark\hello\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
    static public function getSubscribedEvents()
    {
        return [
            'core.page_header' => 'on_page_header',
        ];
    }
    public function on_page_header($event)
    {
        die (__DIR__ . '[it works!]');
    }
}

