Важное с Sysman.Ru: Включить/Отключить определённый BB тег для какой-либо группы - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Тема закрыта

Важное с Sysman.Ru: Включить/Отключить определённый BB тег для какой-либо группы

#1 Гость RSS-Bot ответил:

 
 
  • Группа: Гости
 

Отправлено 03 Август 2007 - 12:51

Song:
IPB хранит в БД сообщения, добавляемые в форум в HTML структуре.
Перед тем как сообщение попадёт в БД, оно конвертируется (парсится) в html, т.е. например:

жирный = <b>жирный</b>


Выполняет это преобразование парсер. Его класс находится в отдельном файле.

Для версии 1.x - это файл post_parser.php
Для версии 2.x - это файлы class_bbcode.php, class_bbcode_legacy.php (и ещё некоторые).

После преобразования в html отпарсенный текст сохраняется в БД и дальше при выводе сообщений запрашивается из БД и выдаётся в готовом виде прямо на страничку.
0

#2 Гость RSS-Bot ответил:

 
 
  • Группа: Гости
 

Отправлено 03 Август 2007 - 13:12

Song: Сейчас приведу некоторые переменные IPB которые вы можете использовать в парсере для задавания <условия>.

Группа юзера:
Цитата (1.x)
$ibforums->member['mgroup']

Цитата (2.x)
$this->ipsclass->member['mgroup']


id юзера:
Цитата (1.x)
$ibforums->member['id']

Цитата (2.x)
$this->ipsclass->member['id']


Количество постов юзера:
Цитата (1.x)
$ibforums->member['posts']

Цитата (2.x)
$this->ipsclass->member['posts']



В версии 1.x форума вы можете использовать также входяшие переменные фукнции:
  • $in['TEXT'] - текст обрабатываемого сообщения
  • $in['SMILIES'] - обрабатывать ли в сообщении смайлики
  • $in['CODE'] - обрабатывать ли в сообщении BB теги
  • $in['SIGNATURE'] - является ли текущий парсинг обработкой подписи юзера

0

#3 Гость RSS-Bot ответил:

 
 
  • Группа: Гости
 

Отправлено 03 Август 2007 - 13:02

Song: А теперь вернёмся к главному вопросу: как ограничить использование BB тегов в зависимости от определённых условий.


Если вы хотите ограничить вообще т.е. убрать парсинг BB тега, то достаточно просто закомментировать соответствующее регулярное выражение, т.е. например вот так:
// $txt = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $txt );

BB тег перестанет обрабатываться и текст этого тега останется в виде bb тега.


Если вы хотите ограничить использование BB тега по какому-то условию, то нужно прописать условие if для этого тега. Т.е. на примере болда это будет выглядеть так:
if ( условие )
{
   $txt = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $txt );
}}


<условие> - это определённая логическая конструкция. Например
== - равно
!= - не равно
> - больше
< - меньше
и др. (это самые простые)

с участием определённых нужных вам переменных.
0

#4 Гость RSS-Bot ответил:

 
 
  • Группа: Гости
 

Отправлено 03 Август 2007 - 13:00

Song: Парсинг BB тегов вполняется обычными регулярными выражения php, суть работы которых сводится к простому изменению одного текста на другой (см. выше). Отличаются они только сложностью разработки, некоторые теги простые, например вышеупомянутый болд, а некоторые - сложные, требуют различных проверок входящих параметров и вместо непосредственной замены одного текста на другой, вызывают специальную call-back функцию, результат выполнения которой после промежуточных шагов всё-равно сведётся к замене одного текста на другой или без замены онного (например, в случае ошибки в теге).

Но в общем случае в коде форума регулярное выражение BB тега выглядит как одна/две/три строчки и его легко можно найти в тексте:

и т.д.

Например, BB тег болда выглядит так:

$txt = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $txt );

Вам помогут даже англоязычные комментарии создателей форума.

В коде выше я выделил части регулярного выражения, по которым можно понять что это тег .
При поиске других BB тегов вы можете воспользоваться этой частью регулярного выражения.
Например, регулярное выражение тега [CОDE] выглядит как:
$txt = preg_replace( "#\[cоde\](.+?)\[/cоde\]#ies", "\$this->regex_code_tag( '\\1' )", $txt );

Для ссылок чуть сложнее:
$txt = preg_replace( "#(^|\s)((http|https|news|ftp)://\w+[^\s\[\]]+)#ie"  , "\$this->regex_build_url(array('html' => '\\2', 'show' => '\\2', 'st' => '\\1'))", $txt );

Тег [url="http://:&lt;div%20id="]%5bcolor="#048284"%5d$txt%5b/color%5d%20=%20preg_replace(%20"#\%5burl\%5d(\S+?)\%5b/url\%5d#ie",%20"\$this->regex_build_url(array('html'%20=>%20'\\1',%20'show'%20=>%20'\\1'))",%20%5bcolor="#048284"%5d$txt%5b/color%5d%20);

и%20т.д.

%5bcolor="%20gray%20fontsize%2010px%20lineheight%20110"%5d%5bb%5dSong_Bot
:%20К%20посту%20прикреплены%20вложения,%20но%20посмотреть%20Вы%20их%20можете,%20только%20открыв%20статью%20в%20Форуме.%5b/color%5d

%5burl="http://www.sysman.ru/"%5dhttp://www.sysman.ru/" target="_blank">:
$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie", "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );

и т.д.

[b]Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.
0

#5 Гость RSS-Bot ответил:

 
 
  • Группа: Гости
 

Отправлено 13 Август 2007 - 14:27

Song: Пожалуйста имейте ввиду, что изменения, которые вы ожидаете, внося изменения в парсер форума, вступят в силу только для новых постов на форуме.
Для подписи - только при следующем её обновлении через профиль юзера.
0

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Тема закрыта

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2017 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна