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

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

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

Сообщение Slash »

LavIgor писал(а): Если хотите потом отправлять расширение на валидацию
Да куда мне... Хотя, вдруг пролезет!
Сначала выкладку для "местного" населения, как люди отнесутся к моему "произведению", надо ли это им.
В принципе расширение готово, осталось перевести на английский, там пару слов всего.
Скорее всего завтра днем выложу.

rxu, LavIgor, спасибо Вам большое за помощь!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

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

Сообщение Siava »

Вопрос знатокам.

Пишу сейас расширение для проигрывания музыки из плейлистов через плеер uppod.
Плейлисты генерятся в файле /playlist?id=XXX и имеют вид (см. переменную $text):

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

		$text = '{"playlist":[{"comment":"Some text 1","file":"//siava.ru/path/file1.mp3"},{"comment":"Some text 2","file":"//siava.ru/path/file2.mp3"},{"comment":"Some text 3","file":"//siava.ru/path/file3.mp3"}]}';

		$this->template->assign_vars(array(
			'TEXT'				=> $text,
			)
		);

		return $this->helper->render('body.html');
всё это дело выводится чистым текстом без подключения шапок. Содержимое body.html: В браузере итоговый файл с плейлистами имеет корректный вид. В исходном коде тоже.

В плеер uppod плейлист подключается так:

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

<param name="flashvars" value="st=/path/styles/audioXXX.txt&pl=/playlist?id=XXX" />
Но при подключении в uppod такие плейлисты не читаются и плеер ругается на ошибку в плейлисте.
Однако, если взять текстовый файл и скопировать содержимое вывода из /playlist?id=XXX в него и подключить

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

<param name="flashvars" value="st=/path/styles/audioXXX.txt&pl=/playlist.txt" />
то всё работает зашибись!

Так в чём же дело? Может при выводе через шаблонизатор какие-то символы меняются и они же при копировании в буфер обмена возвращаются в нормальный вид..? Ну мне сложно объяснить понятно.. короче говоря, так данные выводятся криво.
Или можно ли вывести содержимое строки минуя шаблоны напрямую типа как echo $text; ?
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

Siava писал(а): можно ли вывести содержимое строки минуя шаблоны напрямую типа как echo $text; ?
var_dump($text) не помогает?
Вообще, в таких случаях бывает замена символов на html-сущности, например, кавычек. В итоге при передаче в плеер будет каша. Исходный код выведенной страницы как выглядит?
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Siava писал(а): Или можно ли вывести содержимое строки минуя шаблоны напрямую типа как echo $text; ?
У Вас данные в JSON, поэтому нужно отправлять ответ в формате JSON.

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

$json_response = new \phpbb\json_response();
$json_response->send($text);
Отправлено спустя 8 минут 9 секунд:
Не тестировал код выше в контроллере, но если не сработает, то нужно использовать стандартный класс Symfony Symfony\Component\HttpFoundation\JsonResponse.
Т.е. добавить его выше в use (желательно) и вернуть:

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

return new JsonResponse($text, 200, array(), true);
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

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

Сообщение Siava »

rxu писал(а): Исходный код выведенной страницы как выглядит?
Точно как и вывод на экран, без тегов.

LavIgor, спасибо, попробую сейчас так сделать.

Что удивительно, приехал домой, открыл плеер, всё работает!
Очередные чудесатые чудеса.

Отправлено спустя 12 минут 3 секунды:
LavIgor, такой вывод не переваривается плеером.
Все " экранируются в нём на \" и русские символы преобразуются в коды.

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

"{\"playlist\":[{\"comment\":\""DeaDKedbI" - INCorporeted Introduction\",\"file\":\"\/\/......
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Siava писал(а): такой вывод не переваривается плеером.
Такой - это какой?
Первый вариант посмотрел - массив нужен, а не строка. Поэтому экранирование и вытекающие последствия.
Попробуйте второй вариант через JsonResponse - последний параметр как раз отвечает за то, что на вход даётся уже готовый ответ, а не массив.
Аватара пользователя
apollion
phpBB 2.0.22
Сообщения: 1382
Стаж: 10 лет 1 месяц
Откуда: Юг Руси
Благодарил (а): 21 раз
Поблагодарили: 70 раз

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

Сообщение apollion »

Расширения - это сложно.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

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

Сообщение Siava »

LavIgor, да я понял суть, спасибо.

Отправлено спустя 19 минут 53 секунды:
Получилось через JSON и массив :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

Не увидел 4-го параметра в конструкторе JsonResponse, где он?
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

rxu писал(а): где он?
LavIgor писал(а): $text, 200, array(), true
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

LavIgor, в конструкторе его нет.
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

rxu, почему нет?
https://github.com/symfony/symfony/blob ... se.php#L40
@param bool $json If the data is already a JSON string
Отправлено спустя 3 минуты 47 секунд:
Хмм... А в версии 2.3, действительно, нет.
Ну, значит можно только через массив.
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

Продублирую свой вопрос, заданный в другой теме:
Можно ли сделать так, чтобы некоторое расширение для стиля НЕ действовало на конкретный стиль, порождённый из стиля prosilver?
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

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

Сообщение LavIgor »

Борис Бердичевский, можно, если в папке этого конкретного стиля создать свои файлы с теми же именами.
Тогда они будут браться из неё, а не из папки prosilver.

Абсолютно аналогичная ситуация с папкой all.
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

А как отменить работу кода из listener.php?
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!

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