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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

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

Сообщение rxu »

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

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

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

Уже нашёл!!!
Должно быть в миграции (см ниже), а у меня было qr_version!

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

	public function effectively_installed()
	{
		return isset($this->config['shabbat_version']) && version_compare($this->config['shabbat_version'], '0.1.1', '>=');
	}
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 3 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

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

Пара вопросов.
Что за файл styles\prosilver\template\qr_plupload.html ?
Если просто записать файл htlm в styles\prosilver\template\event\, например overall_header_page_body_before.html, то он должен показываться, или ещё что-то надо?

Добавлено спустя 10 минут 28 секунд:
Ага, ясно. Если что-то изменил, нужно отключить и включить расширение, чтобы заработало!
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12420
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

Борис Бердичевский писал(а):qr_plupload.html
Код для загрузки через plupload вынесла в отдельный файл. Он инклудится в styles/prosilver/events/overall_footer_after.html
Борис Бердичевский писал(а):то он должен показываться, или ещё что-то надо?
Больше ничего, должен отображаться (разве что кеш очистить)

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

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

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

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

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

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

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

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

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

Как передавать, я в общем разобрался (я так думаю). Но возникла другая проблема: конфигурация не запоминается в Настройке расширения...

Добавлено спустя 37 секунд:
Продолжу уже завтра вечером...
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16357
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1740 раз

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

Сообщение rxu »

Борис Бердичевский писал(а):конфигурация не запоминается в Настройке расширения...
У вас там целый кусок кода закомментирован, может, поэтому?
Изображение
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 13 лет 10 месяцев
Откуда: Москва
Благодарил (а): 14 раз
Поблагодарили: 24 раза

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

Сообщение ВладимирТ »

Татьяна5 писал(а):Надо передать его в слушателе, через подходящее событие ядра
А вот с этого места и хотелось бы по подробнее для всеобщего понятия.
Например пользователь Вася Пупкин захотел своими руками немного улучшить форум, создав что то своё.
Немного зная основы (по совету друзей - см. htmlbook :)) он делает на пример всплывающее окно входа.
Весело пишет типа:

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

<!-- Панель входа -->	
	<!-- IF not S_USER_LOGGED_IN and not S_IS_BOT and not S_DISPLAY_FULL_LOGIN -->		
	    <a href="#x" class="overlay" id="login_form"></a>				
        <div class="popup">
            <h2>{L_OF_WELCOM}</h2>
            <p>{L_OF_PAROL_NAME}</p>			
	<form method="post" action="{S_LOGIN_ACTION}" id="login" >		
           Так далее.....
	<!-- ENDIF -->
<!-- /Панель входа -->

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

.overlay {
    background-color: rgba(0, 0, 0, 0.6);
    bottom: 0;
    cursor: default;
    left: 0;
    opacity: 0; 
и так далее}
Далее скачивает расширение и меняет по аналогии файл .travis.yml, пишет описание composer.json, файл инструкции README.md, добавляет лицензию license.txt. Потом добавляет свой код в папку styles/prosilver/template/event/overall_header_page_body_before.html.
Включает в админке и видит что вроде и получилось но не все.

1. Как Васе вставить стилевое оформление.
2. Вася создал новую языковую перемеренную {L_WELCOM_ВАСЯ} а что делать дальше не знает, а шаблона нет и читал он только нтмлбук, а еще боится слово слушатель и ядро.
3. И как Васе изменить через расширение (что занимало раньше 10 сек.) строчку

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

<li class="small-icon icon-logout rightside"  data-skip-responsive="true"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="x" role="menuitem">{L_LOGIN_LOGOUT}</a></li>
на

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

<li class="small-icon icon-logout rightside"  data-skip-responsive="true"><a href="#login_form" id="login_pop" title="{L_LOGIN_LOGOUT}" accesskey="x" role="menuitem">{L_LOGIN_LOGOUT}</a></li>
Как только Пупкин найдет подсказку на эти три вопроса, он напишет хоть маленькое, но свое первое расширение.
На вкус и цвет - разный CSS
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12420
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

ВладимирТ писал(а):1. Как Васе вставить стилевое оформление.
Добавить его в событии стиля overall_header_head_append в <style>, или подключить файл css (в том же событии) через

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

<!-- INCLUDECSS ../theme/my_file.css -->
Файл my_file.css должен быть в папке ext/ ... /styles/prosilver/theme
ВладимирТ писал(а):2. Вася создал новую языковую перемеренную {L_WELCOM_ВАСЯ} а что делать дальше не знает, а шаблона нет и читал он только нтмлбук, а еще боится слово слушатель и ядро.
Без php не обойтись.

Слушатель = listener.php в расширении
Ядро = файлы php движка
Болванка для создания расширений тут

Чтобы языковая переменная была доступна везде:
В слушателе подписываемся на событие core.user_setup

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

	static public function getSubscribedEvents()
	{
		return array(
			'core.user_setup'					=> 'load_language_on_setup',
		);
	}
И в методе load_language_on_setup (его добавить после метода getSubscribedEvents) подключаем языковой файл

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

	public function load_language_on_setup($event) {
		$lang_set_ext = $event['lang_set_ext'];
		$lang_set_ext[] = array(
			'ext_name' => 'nickname/myextension',
			'lang_set' => 'my_language_file',
		);
		$event['lang_set_ext'] = $lang_set_ext;
	}
Слов новых много, но в целом ничего сложного
ВладимирТ писал(а):3. И как Васе изменить через расширение (что занимало раньше 10 сек.) строчку
Вариант 1: Добраться до неё с помощью js/jQuery (в шаблоне много id и неповторяющихся классов) и изменить
Вариант 2: Переопределить значение переменной {U_LOGIN_LOGOUT} в подходящем событии ядра
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 13 лет 10 месяцев
Откуда: Москва
Благодарил (а): 14 раз
Поблагодарили: 24 раза

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

Сообщение ВладимирТ »

Спасибо, Таня!
Более доступного объяснения наверное не придумаешь, теперь народ будет меньше опасаться 3.1 и начнет потихоньку ваять свои форумы.
Не плохо было бы сделать в "Базе знаний" статейку типа "Создание дополнительных (произвольных) страниц в стиле конференции" только по расширениям.
Татьяна5 писал(а):Вариант 1: Добраться до неё с помощью js/jQuery
Еще бы добавить общедоступный пример js типа взять id или класс, найти в нем div, найти в div пятую li, заменить или добавить строчку.
На вкус и цвет - разный CSS
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12420
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

ВладимирТ писал(а):статейку типа "Создание дополнительных (произвольных) страниц в стиле конференции" только по расширениям.
Есть "Hello World!" - Extension, пример страницы
ВладимирТ писал(а):общедоступный пример js
На http://jquery.page2page.ru всё расписано проще некуда
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

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

Сообщение Alecto »

Татьяна5
у вас в БО скрипты вынесены в шаблон-файл футера, js - не используется.

могли бы вы объяснить, в общем случае - по каким принципам скрипты есть смысл оставлять в js-файлах, а в каких -размещать в файлах шаблонов.
вариант с необходимостью использования условий в шаблонах - понятен.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12420
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2473 раза

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

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

Alecto, указаний с phpbb.com про это пока нет, единственное что видела - по объёму кода js (небольшой можно оставить в шаблоне, большой перенести в отдельный файл)
У меня БО в dev-версии, так что пишу как мне удобней править код
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

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

Сообщение Alecto »

в шаблоне не очень удобно, потому как для каждого изменения приходится обновлять кэш (не отключал эту опцию в админке). в JS - сразу видны изменения
некоторые (не все!) скрипты, в том числе и большие, перетащил в шаблон по причине того, что там можно использовать шаблонные условия и включать части скрипта только тогда и там где они нужны, что в общем случае дает оптимизацию кода. т.е. где это требовалось - перетащил в шаблон, остальные - оставил в JS.
может и заблуждаюсь, просветите, если появятся дополнительные аргументы.

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