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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

В viewtopic_body.html есть такой код:

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

		<!-- DEFINE $SHOW_POST_BUTTONS = (postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE) -->
		<!-- EVENT viewtopic_body_post_buttons_list_before -->
		<!-- IF not S_IS_BOT -->
			<!-- IF $SHOW_POST_BUTTONS -->
Видимо, предполагалось что переменную $SHOW_POST_BUTTONS можно изменить из расширения. Вопрос: как это сделать не затронув другие изменения этой же переменной (из других расширений), если знак $ ни <!-- DEFINE -->, ни {% set %} в правой части выражения не обрабатывают?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Видимо, из слушателя события viewtopic_body_post_buttons_list_before можно получить как значение данной переменной, так и изменить его, там же можно отследить значения переменных из правой части равенства.
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

Получить значение можно, изменить независимо от предыдущего значения тоже можно
Невозможно изменить переменную в зависимости от её нынешнего значения. Знак $ мешает

Пишу

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

<!-- DEFINE $SHOW_POST_BUTTONS = ($SHOW_POST_BUTTONS or postrow.U_YMSM_POI) -->
Получаю fatal error. Убираю справа знак $ - ошибка пропадает, но естественно вместе со значением переменной
{% set %} ещё хуже, он вообще знак $ не понимает)

Отправлено спустя 14 минут 41 секунду:
Можно разве что нагородить конструкцию вроде

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

<!-- IF $SHOW_POST_BUTTONS -->
<!-- ELSE -->
    <!-- DEFINE $SHOW_POST_BUTTONS = postrow.U_YMSM_POI -->
<!-- ENDIF -->
not тоже выбивает ошибку)
Но это по-моему некрасиво
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Татьяна5 писал(а): 07.07.2017 17:18С {% set %} ещё хуже, он вообще знак $ не понимает

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

{% DEFINE SHOW_POST_BUTTONS = true %}
{% if definition.SHOW_POST_BUTTONS != true %}
    {{ definition.SHOW_POST_BUTTONS }}
{% endif %}
Изображение
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

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

Сообщение Siava »

А можно настроить cron так, чтобы он выполнялся раз в сутки в одно и то же время? В идеале - в заданное время.
Пишу простенькое расширение.., всё работает, но время запуска задачи постепенно дрейфует. В первый день выполнилось в 0:30, на следующий в 0:30, через день 0:35, ещё через день 0:40 и т.д.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

Крон используется системный? (Обычный форумный ещё и не так дрейфовать может)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

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

Сообщение Siava »

Татьяна5, ага, системный раз в 5 минут.

Отправлено спустя 17 минут 56 секунд:
Хотя вот можно попробовать в интервал вписаться через условие, если с прошлого запуска прошло хотя бы полсуток и текущее время меньше 0:11 и больше 0:00, то запуск задания.
Осталось понять, как это реализовать :mrgreen:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

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

Сообщение Pazh »

Первый раз слышу, чтобы серверный (НЕ форумный) cron запустился не в точно указанное время. Если он стоит "запуск раз в 5 минут", то вполне логично, что выполнился в 0:30, следующий запуск в 0:35, потом 0:40 и т.д. и т.п. с интервалом в 5 мин. Если время запуска Вы логируете по окончанию выполнения задания и за какое-то время нет записи - то возможно что при выполнении задания произошла какая-то ошибка, которая не позволила дойти до момента логирования.
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

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

Сообщение Siava »

Pazh, Суть в другом. Время выполнения задачи в cron относительное и из-за этого происходит дрейф. Но я уже придумал как исправить, осталось подождать ночи)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

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

Сообщение Pazh »

Не сталкивался, но вдруг кому пригодиться:

INCLUDECSS работает только в событии overall_header_head_append.html
INCLUDEJS может использоваться где угодно, кроме события overall_footer_body_after

Источник: https://www.phpbb.com/community/viewtop ... #p13786481
Последний раз редактировалось Pazh 15.01.2018 15:46, всего редактировалось 1 раз.
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

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

Сообщение Pazh »

Для проверки зависимости работы одного расширения от наличия и работы другого (например для addon-ов) необходимо в файл ext.php расширении-аддоне в функцию is_enableable добавить следующий код:

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

	$manager = $this->container->get('ext.manager');
	return $manager->is_enabled('vedor_name/ext_name');
где vedor_name/ext_name соответственно вендор и название расширения-родителя
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

Pazh писал(а): 15.01.2018 15:10INCLUDEJS может использоваться где угодно.
Кроме события overall_footer_body_after. Оно после {$SCRIPTS} расположено
(Дословный перевод с phpbb.com - "почти везде")
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

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

Сообщение Pazh »

Татьяна5, поправил
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Pazh писал(а): 15.01.2018 15:10 INCLUDECSS работает только в событии overall_header_head_append.html
Только в 3.1.
В 3.2 работает везде. https://area51.phpbb.com/docs/dev/3.2.x ... includecss
Изображение
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

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

Сообщение moonrise »

Заранее извиняюсь за глупый вопрос - последний раз имел дело с phpbb лет 15 назад, с тех пор и память другим забилась и концепция модов/расширений поменялась. С событиями шаблонов на примитивном уровне разобрался, а вот для ядра пока не понимаю :(

Пытаюсь заменить отображение имени пользователя (login name) на его имя (nick name).

Есть событие core.modify_username_string, изменяющее возвращаемое значение функции get_username_string() из файла includes/functions_content.php. Есть добавленное поле профиля nick.
Хочется:
  • объявить переменную;
  • проверять на не нулевое значение доп поляnick;
  • если значение не нулевое => присвоить переменной usernameзначение из допполяnick
Ткните в нужном направлении пожалуйста :)
Просто хороший человек
Ответить

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