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

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

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

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

Сообщение Slash »

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

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

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
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

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

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
Поддержка
Поддержка
Сообщения: 5426
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

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
Стаж: 11 лет
Благодарил (а): 39 раз
Поблагодарили: 792 раза

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

Сообщение LavIgor »

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

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

Сообщение apollion »

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

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

Сообщение Siava »

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

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

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

Сообщение rxu »

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

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

Сообщение LavIgor »

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

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

Сообщение rxu »

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

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
Стаж: 17 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 28 раз
Поблагодарили: 53 раза

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

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

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

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

Сообщение LavIgor »

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

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

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

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

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

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