[3.2][3.3] BBCode

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

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

[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 указанным выше образом (в случае с данным конкретным примером - для отображения содержимого администраторам и модераторам).
Изображение

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