Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Как вставить свою php функцию в форум?

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Как вставить свою php функцию в форум?

Сообщение mike2003 »

Хочу написать код для рандомной вставки изображения в фон заголовка. Нашел функцию на php для этого дела.

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

<?php
function RandImg($dir)
{
$images = glob($dir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)];
return $randomImage;
}
$the_image = RandImg('upload_icons/');
echo $the_image;
?>
Она выдает путь к изображению. Как ее правильно подключить в файл overall_header.html или может можно в CSS заменить параметр для заднего фона через php?
Отдельным файлом через что-то подобно include или прям в код форума затолкать как то в какой то из стандартных php?
Подскажите плиз

Отправлено спустя 31 минуту 26 секунд:
например тут говорят, что можно засунуть переменную в CSS
phpBB • [How To] Modify prosilver's header
https://www.phpbb.com/community/viewtop ... 205#random
Изображение
но вот если в html она меняется, то в css так и остается
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

Re: Как вставить свою php функцию в форум?

Сообщение LavIgor »

В phpBB 3.1 стили не генерируются через style.php и использовать переменные шаблонов в них нельзя.
Выход - использовать тег <style>.
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

А есть простая инструкция типа Hello world?
В статье "Расширения это просто" инфа по файлам, но что конкретно делать вообще не описывается. С чего начать так и не понятно осталось.
Попробовал скелетон
phpBB • "Hello World!" - Extension & Skeleton Tool
https://www.phpbb.com/community/viewtop ... &t=2211276
а он не работает и выдает ошибку при отправке
Fatal error: Class 'Symfony\Component\Finder\Finder' not found in C:\xampp\htdocs\phpBB32\ext\phpbb\skeleton\helper\packager.php on line 201
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: Как вставить свою php функцию в форум?

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

mike2003 писал(а): но что конкретно делать вообще не описывается
Подключиться к подходящим событиям и добавить там свой код
Если кратко:

functions.php, функция page_header, искать слова extract (ими задаются события). Нашла событие core.page_header_after, значит к нему и подключаться в listener.php
Вывод результата в html будет вроде

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

$this->template->assign_var('RANDOM_HEADER' => $my_img);
$this->template при этом надо объявить в config/services.yml и в контроллере listener.php

styles/prosilver/template/overall_header.html. По слову EVENT ищу место для вставки кода css. Подходит overall_header_stylesheets_after. Значит в папке расширения styles/all/template/event можно создать файл overall_header_stylesheets_after.html с кодом (примерно):

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

<style>
.headerbar {
    backgound: url('{RANDOM_HEADER}');
}
</style>
Перенесено из форума Поддержка phpBB 3.1.x в форум Для авторов (phpBB 3.1.x) 04.04.2016 13:54 модератором Sheer

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

Я имею ввиду не для модеров 3.0, а для обычных пользователей. Как сделать расширение с нуля.
Вот есть такая на англ.
Extensions — phpBB 3.1.4 documentation
https://area51.phpbb.com/docs/dev/31x/e ... index.html
но там куча неточностей в плане "нам нужен этот код, и мы его пропишем в *yml"
а куда сам код вставлять (какой файл и где) не говорят
про listener забыли, про контролер тоже, а дальше уже можно и не делать, все равно не работает

проще прямо в код пихнуть, чем с этими недо-инструкциями разбираться
Татьяна5 писал(а): к нему и подключаться в listener.php
за одной этой строчкой целая страница текста :( которой нет
как писать листенер, как его включить, какие аргументы передать...

где вы берете инфу то???

Отправлено спустя 15 минут :
1 новые функции php это к чему относится? к листеру или контролеру? она же просто так, ни к чему не привязана, универсальная.
2 где потом назначить переменную надо

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

'SITE_LOGO_RANDOM'      => имя_новой_функции(путь),
она же каким то боком должна в массив глобальный попасть. что бы потом в html вставиться через {имя}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: Как вставить свою php функцию в форум?

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

mike2003 писал(а): где вы берете инфу то???
В основном - из кода готовых расширений

https://github.com/Tatiana5/profile_sid ... stener.php
namespase думаю и так понятно как прописывать
protected чего_то_там и public function __construct - это, в основном, подтягиваются нужные классы движка. Чтобы передать что-то в шаблон нужен $template. Эти классы "подключаются" через https://github.com/Tatiana5/profile_sid ... rvices.yml
static public function getSubscribedEvents() - подключение к событиям. В правой части там придуманные названия функций, которые надо прописать ниже.
mike2003 писал(а): 1 новые функции php это к чему относится? к листеру или контролеру? она же просто так, ни к чему не привязана, универсальная.
listener - "слушает" события движка (и добавляет на их место какой-то заданный код), а контроллеры нужны для новых страниц
mike2003 писал(а):2 где потом назначить переменную надо
В слушателе, listener.php
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Как вставить свою php функцию в форум?

Сообщение Sheer »

mike2003 писал(а): Как сделать расширение с нуля
Так: Создание страниц в стиле конференции
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

Re: Как вставить свою php функцию в форум?

Сообщение LavIgor »

mike2003, в Вашем случае, думаю, будет проще включить PHP в шаблонах и использовать конструкцию <!-- PHP --><!-- ENDPHP -->.
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

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

Отправлено спустя 19 минут 9 секунд:
Sheer писал(а): Так: Создание страниц в стиле конференции
не работает даже приложенное расширение phpbb-ext-mytest-master_v2.rar
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: Как вставить свою php функцию в форум?

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

mike2003 писал(а): _v2
На последней странице есть _v3
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

Татьяна5 писал(а): На последней странице есть _v3
и оно не работает - ссылка то появляется, а по ней ничего
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: Как вставить свою php функцию в форум?

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

mike2003, советую отключить все лишние расширения. На чистом 3.1.8 работает
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

на чистом и правда работает
но на старом из английского урока тоже работало
ну хотя неважно, попытка 3 )
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Стаж: 8 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 7 раз

Re: Как вставить свою php функцию в форум?

Сообщение mike2003 »

Татьяна5 писал(а): Если кратко
я только сейчас стал понимать, как это работает :!: и даже сделал что хотел
Татьяна5 писал(а): В слушателе, listener.php
я могу использовать табуляцию при форматировании? в папке includes\ файлы сделаны именно с ней
и если да, то почему все делают пробелы??
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: Как вставить свою php функцию в форум?

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

mike2003 писал(а): я могу использовать табуляцию при форматировании?
Да. Везде, кроме файлов yml (там табы приведут к ошибке)
mike2003 писал(а): почему все делают пробелы??
Наоборот, в php везде табы. В сообщениях на форуме разве что пробелы, здесь табы не сохраняются

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