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

[3.2][3.3] BBCode

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

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

[3.2][3.3] BBCode

Сообщение rxu »

В используемом парсере текста s9e имеется встроенная возможность контролировать вывод содержимого BBCode в зависимости от параметров шаблона, указанных в его замене HTML. По умолчанию в ядре phpBB для парсера (а точнее - для рендерера) доступны следующие параметры шаблона (имена поясняют и их смысл):

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

S_IS_BOT
S_REGISTERED_USER
S_USER_LOGGED_IN
S_VIEWCENSORS
S_VIEWFLASH
S_VIEWIMG
S_VIEWSMILIES
STYLE_ID
T_SMILIES_PATH

Пример: если обычным способом в админразделе phpBB создать BBCode [noguests]{TEXT}[/noguests] с заменой HTML:

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

<xsl:choose>
	<xsl:when test="$S_USER_LOGGED_IN and not($S_IS_BOT)">
		<div>{TEXT}</div>
	</xsl:when>
	<xsl:otherwise>
		<div>Только зарегистрированные пользователи могут видеть данное содержимое.</div>
	</xsl:otherwise>
</xsl:choose>

то содержимое, помещенное в тегах [noguests], будет доступно только зарегистрированным пользователям, не являющимся ботами. Остальным будет показан текст Только зарегистрированные пользователи могут видеть данное содержимое. Т.е. содержимое будет показано при условии, что значение test является логическим true.

Другие параметры шаблона могут быть добавлены расширениями, например, через слушатель события core.text_formatter_s9e_renderer_setup следующим образом (в слушатель необходимо передать зависимости сервисов @user и @auth):

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

	static public function getSubscribedEvents()
	{
		return array(
			'core.text_formatter_s9e_renderer_setup'	=> 's9e_renderer_add_template_parameters',
		);
	}

	public function s9e_renderer_add_template_parameters($event)
	{
		$renderer = $event['renderer']->get_renderer();

		// Set s9e renderer template parameters
		$renderer->setParameters(array(
			'S_IS_ADMINISTRATOR' => $this->auth->acl_get('a_') && !empty($this->user->data['is_registered']),
			'S_IS_MODERATOR' => $this->auth->acl_get('m_') || $this->auth->acl_getf_global('m_'),
		));
	}

затем данные параметры можно использовать при создании обычных BBCode указанным выше образом (в случае с данным конкретным примером - для отображения содержимого администраторам и модераторам).
Изображение

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