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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 6 месяцев
Благодарил (а): 257 раз
Поблагодарили: 195 раз

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

Сообщение Sumanai »

А в миграциях нет никакого способа переименовать колонку в таблице БД, кроме как писать голый запрос в БД?
Я посмотрел по файлам, вроде нету, но может чего упустил.
Аватара пользователя
moveton
phpBB 1.0.0
Сообщения: 5
Стаж: 8 лет 3 месяца

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

Сообщение moveton »

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

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

Сообщение Sheer »

Можно.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
moveton
phpBB 1.0.0
Сообщения: 5
Стаж: 8 лет 3 месяца

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

Сообщение moveton »

А при автоматическом обновлении расширения, например [release] Загрузка Расширений (Upload Extensions) 3.1.2 не "снесется" ли добавленный стиль? Или обновление будет касаться только оригинальных файлов автора, не затрагивая добавленные?
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

moveton, если обновляете через загрузчик, то новый стиль придётся заново добавить в обновлённую версию расширения.
Аватара пользователя
moveton
phpBB 1.0.0
Сообщения: 5
Стаж: 8 лет 3 месяца

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

Сообщение moveton »

LavIgor, Спасибо за предупреждение, значит придется бекапить перед обновлениями свой стиль, и проверять каждый раз вдобавок авторский, и как понимаю, лучше его не трогать в своем варианте.
ИМХО Немного не правильно, конечно. Теряется весь смысл упрощенного обновления, так как придется делать много правок. Хотя по Вашему загрузчику уже столкнулся с тем, что все равно нужно ручками править, если хочешь что-то добавить. У меня например, не возможно было через ФТП добавить свой стиль, так как не мог установить права на запись в папке стилей. Автозагрузчиком владелец устанавливается у меня wwwdata, а через ФТП клиент я захожу под созданным у меня для этого пользователем. Приходится танцевать с бубном :)
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

moveton, были мысли добавить возможность восстановления стилей из архива предыдущей версии (который, кстати, делается автоматически при каждом обновлении). Пока что такое возможно только для файлов локализации.
Можно рассмотреть возможность добавления вкладки "Стили" по аналогии с вкладкой "Языки". Но любой функционал требует времени.
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 3 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

Перечитал тему и теперь в голове много каши.

Подскажите, как подключить свой языковой файл расширения, если расширение состоит из нескольких шаблонов (без php)?
Спасибо.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Raisin писал(а): расширение состоит из нескольких шаблонов (без php)
Придётся создать слушатель (listener), подобрать правильное событие и подключить файл в нём с помощью $this->user->add_lang_ext() с подходящими параметрами.
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 3 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

LavIgor писал(а): Придётся создать слушатель (listener), подобрать правильное событие и подключить файл в нём с помощью $this->user->add_lang_ext() с подходящими параметрами.
А можно пример?

Типа того: файл event/listener.php:

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

<?php
namespace Slash\NameExt\event;

$this->user->add_lang_ext('Slash/NameExt', 'name_lang');
Что тут ещё необходимо добавить?
Какое должно быть условие для конкретного события? (Чтоб язык подключался только, там где это надо).

... Пошел перечитывать первый пост ...

Отправлено спустя 42 минуты 46 секунд:
Вот, что пока получилось, но язык не подключается, видимо в функции get_count чего то не хватает.

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

<?php
namespace Slash\CountSymbolsField\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class listener implements EventSubscriberInterface
{

    static public function getSubscribedEvents()
    {
        return array(
            'core.modify_posting_parameters' => 'get_count'
        );
    }
    
    public function get_count($event)
    {
        $this->user->add_lang_ext('Slash/CountSymbolsField', 'count');
    }
}
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16377
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1746 раз

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

Сообщение rxu »

Не хватает конструктора. См. первый пост.
Изображение
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 3 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

Не ужели я такой ... ... Что бы дошло надо прочитать несколько раз...
Спасибо, получилось!

В конструкторе у меня одна переменная:

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

    protected $user;

    public function __construct(\phpbb\user $user)
    {
        $this->user = $user;
    }
Так как в классе используется только она:

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

$this->user->add_lang_ext('Slash/CountSymbolsField', 'count');
И файл: services.yml:

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

services:
    Slash.CountSymbolsField.listener:
        class: Slash\CountSymbolsField\event\listener
        arguments:
            - @user
        tags:
            - { name: event.listener }
Всё это для пару фраз!
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Ответ набрал, но не отправил. :roll:

В общем, по поводу примеров.
Raisin писал(а): Так правильно будет:
Если это вопрос, то ответ на него - почти.
Методы в классе содержатся, в данном случае нужно также правильно конструктор задать.
Примеров создания слушателя много, например этот.
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 3 месяца
Благодарил (а): 62 раза
Поблагодарили: 22 раза

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

Сообщение Slash »

LavIgor писал(а): Если это вопрос, то ответ на него - почти.
Методы в классе содержатся, в данном случае нужно также правильно конструктор задать.
Вот весь файл:

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

<?php
namespace Slash\CountSymbolsField\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class listener implements EventSubscriberInterface
{
    protected $user;

    public function __construct(\phpbb\user $user)
    {
        $this->user = $user;
    }

    static public function getSubscribedEvents()
    {
        return array(
            'core.modify_posting_parameters' => 'get_count'
        );
    }
    
    public function get_count($event)
    {
        $this->user->add_lang_ext('Slash/CountSymbolsField', 'count');
    }
} 
Есть ошибки? Что надо изменить?
Спасибо.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Raisin писал(а): Есть ошибки? Что надо изменить?
Если делаете для себя, то ошибок нет никаких, всё корректно.
Если хотите потом отправлять расширение на валидацию, то очень желательно добавить комментарии PHPDoc и запятую в конце последнего элемента массива.

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