Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Hecc

Работа BB-кодов в дополнительных полях (2.3.6)

Рекомендованные сообщения

Через дополнительные поля, сделал отображение поля в профиле через небольшое всплывающее окно.

 

 

123213.png

 

 

Теперь возникла потребность подключить к этому всплывающему окну ВВ-коды.

Сколько я уже пытался делать, нужного результата я так и не достиг. Подключал и родные ВВ-коды и внешние, а они все равно не хотят отображаться.

 

Собственно, как включить работу BB кодов в этих полях ? Хотя бы тех, которые отвечают за форматирование текста -

Подскажите хотя бы в каком направлении думать. Ни за что же не поверю, что это нельзя реализовать)

 

Сам код дополнительного поля:

 

 

<style type="text/css">

.tp {

background:#2a2a2a;

overflow:hidden;

border: solid 0px;

text-align: center;

}

.tp b{

border:black 2px;

font-weight:normal;

text-align: left;

}

.tp b span {display:none;

text-align: left;}

 

.tp b:hover {

border: solid 0px red;

text-align: left;

position:inherit;

}

.tp b:hover span {

margin-top:-30px;

background:#2a2a2a;

color:#FFF;

display:block;

padding:5px;

width:300px;

margin-left:169px;

position:absolute;

text-decoration: none;

text-align: left;

z-index:1;

border: solid 1px black;

}

<!--[if IE 6]>

<style type="text/css">

.tp b {behavior:url(hover.htc);}

.tp .hover {

border-bottom:red 1px dotted;

color:red;

}

.tp .hover span

background:#212f3a;

color:#7b7b7b;

display:block;

padding:7px;

margin-left:20px;

position:absolute;

text-decoration: none;

text-align: center;

z-index:5;

border: solid 1px black;

}

</style>

<![endif]-->

 

</style>

<div id="123"><span class="tp" style="z-index:0;">

<b><img src="http://roleplay.mandalorians.net.ua/images/skills.png" alt=""><span>{content}

</span></b> </span></div>

 

 

Поделиться сообщением


Ссылка на сообщение

а) CSS уберите оттуда. Вы дублируете этот код на странцие 100500 раз возле каждого вывода поля. Переместите его в глобальный css каждого скина.

 

б) Встроенной такой возможности нет, и через шаблоны такого тоже не сделать, увы. Могу подсказать, где и что на месте подправить, чтобы получить желаемое. Если интересно - го под кат.

 

Открываете на правку файл /admin/sources/classes/customfields/profileRields.php, находите строки:

				if( $current_value || $current_value == '0' )
			{
				/* Get the format */

 

Заменяете на:

				if( $current_value || $current_value == '0' )
			{
				if($field->raw_data['pf_key'] == 'название_нужного_вам_ключа_поля') {
				    IPSText::getTextClass('bbcode')->parse_html 				= 0;
				    IPSText::getTextClass('bbcode')->parse_nl2br				= 1;
				    IPSText::getTextClass('bbcode')->parse_bbcode				= 1;
				    IPSText::getTextClass('bbcode')->parse_smilies			= 1;
				    IPSText::getTextClass('bbcode')->parsing_section		= 'forums';					
				    $current_value	= IPSText::getTextClass('bbcode')->preDisplayParse( $current_value );			              
				}
				/* Get the format */

 

Название нужного вам ключа поля - это "Field Key" в диалоге создания/изменения поля.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Открываете на правку файл /admin/sources/classes/customfields/profileRields.php, находите строки:

Увы. Вопрос про вторую версию форума.

Поделиться сообщением


Ссылка на сообщение

Увы. Вопрос про вторую версию форума.

Тьфу. Вечно попадаю на это :)

 

Ну, как вариант, обновиться и сделать) Ну или, если кто в двойке разбирается, пусть портирует вниз)

Поделиться сообщением


Ссылка на сообщение

Спасибо за помощь, я задумаюсь над переходом на более новую версию форума.

Просто я с 2.3.6 уже 2.5 года работаю, она как родная уже, по этому если это возможно было бы неплохо реализовать это именно на ней.

Поделиться сообщением


Ссылка на сообщение

/sources/ipsclass.php

 

 

 

Найти:

		if ( $this->custom_fields )
		{

 

Ниже добавить:

			require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" );
			$parser                      =  new parse_bbcode();
			$parser->ipsclass            =& $this;
			$parser->allow_update_caches =  0;
			$parser->parse_bbcode		 = 1;
			$parser->parse_smilies		 = 0;
			$parser->parse_html		 	 = 0;

 

Найти:

						$member['custom_fields'] .= "\n".$this->custom_fields->method_format_field_for_topic_view( $i );
					}
				}

 

После добавить:

				$member['custom_fields'] = $parser->pre_display_parse( $member['custom_fields'] );

 

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
06/04/11 17:54 (изменено)

siv1987,

Fatal error: Call to a member function pre_display_parse() on a non-object in /***/****/*****/******/******/*******/sources/ipsclass.php on line 6092

 

Добавил, но выдает вот эту ошибку.

Изменено пользователем Hecc

Поделиться сообщением


Ссылка на сообщение
Добавил, но выдает вот эту ошибку.

 

Ошибки никакой не должно быть, код вполне рабочий.

Но это

$member['custom_fields'] = $parser->pre_display_parse( $member['custom_fields'] );

 

замените на это

$member['custom_fields'] = $parser->pre_display_parse( $parser->pre_db_parse( trim( $member['custom_fields'] ) ) );

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Вроде бы ошибка пропала, но ББ коды так и не работают.

 

 

Вот участок редактируемого кода :

 

		
	//-----------------------------------------
	// Profile fields stuff
	//-----------------------------------------

	$member['custom_fields'] = "";

	if ( $this->vars['custom_profile_topic'] == 1 AND $custom_fields == 1 )
	{
		if( !is_object( $this->custom_fields ) )
		{
			require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );
			$this->custom_fields = new custom_fields( $this->DB );

			$this->custom_fields->member_id  = $this->member['id'];
			$this->custom_fields->cache_data = $this->cache['profilefields'];
			$this->custom_fields->admin      = intval($this->member['g_access_cp']);
			$this->custom_fields->supmod     = intval($this->member['g_is_supmod']);
		}

		if ( $this->custom_fields )
		{   require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" );
                $parser                      =  new parse_bbcode();
                $parser->ipsclass            =& $this;
                $parser->allow_update_caches = 0;
                $parser->parse_bbcode        = 1;
                $parser->parse_smilies       = 0;
                $parser->parse_html          = 0;


			$this->custom_fields->member_data = $member;
	    	$this->custom_fields->admin        = intval($this->member['g_access_cp']);
	    	$this->custom_fields->supmod       = intval($this->member['g_is_supmod']);
	    	$this->custom_fields->member_id	   = $this->member['id'];
			$this->custom_fields->init_data();
			$this->custom_fields->parse_to_view( 1 );

			if ( count( $this->custom_fields->out_fields ) )
			{
				foreach( $this->custom_fields->out_fields as $i => $data )
				{
					if ( $data )
					{
						$member['custom_fields'] .= "\n".$this->custom_fields->method_format_field_for_topic_view( $i );
					}
				}
			    $member['custom_fields'] = $parser->pre_display_parse( $member['custom_fields'] );
			}    
		}
	}

 

 

А вот результат :

 

 

Untitled-1_copy22.jpg

 

 

Поделиться сообщением


Ссылка на сообщение

Заменил мой код на :

$member['custom_fields'] = $parser->pre_display_parse( $parser->pre_db_parse( trim( $member['custom_fields'] ) ) );

 

Коды начали отображаться, это конечно не может не радовать.

Но, отображаются они не совсем так как хотелось бы (скрин под спойлером)

 

 

 

223.jpg

 

 

 

Например тег не отображается вовсе, а тег вылазит за пределы дива.

Где бы их можно было настроить что бы они выглядели должным образом ?

Возможно ли вообще настроить коды которые будут работать в доп. полях ? Потому что многие из кодов, например, спойлер или цитата, там вообще не уместны.

 

 

Еще появились странные "пропуски" между дополнительными полями.

 

 

2234.jpg

 

 

Поделиться сообщением


Ссылка на сообщение

@siv1987, зря вы на все коды вообще вешаете парсер. Неужели в двойке нельзя избирательно распарсить какое-то одно поле? Оттуда и все вышеописанные баги...

Поделиться сообщением


Ссылка на сообщение
06/05/11 19:46 (изменено)

Ritsuka, Возможно у вас есть какие-то предположения, как можно эти баги убрать ?

Или движок 2.*.* настолько сильно отличается от 3.*.* ?

Изменено пользователем Hecc

Поделиться сообщением


Ссылка на сообщение
Возможно ли вообще настроить коды которые будут работать в доп. полях ?

Если только вы напишете свой парсер который будет разбирать нужные вам бб-коды. Встроенный такой возможностью не обладает.

 

siv1987, зря вы на все коды вообще вешаете парсер. Неужели в двойке нельзя избирательно распарсить какое-то одно поле? Оттуда и все вышеописанные баги...

 

Ritsuka, а смысл вешать на каждое по отдельности, если там на сколько я понял во всех доп полях есть ббкоды. Но можно и избирательно, поля идентифицируются по ид. Багов таких особых я здесь не вижу. Лишние бр-ы это от того что из текстареа заносятся переводы строки которые подключенным парсером заменяются на бр. Лечится оно довольно просто - $parser->parse_nl2br = 0; А то что у ТС не отображается какой-то тег (хотя нам еще неизвестно, что он подразумевает под его отображением), или span цвета плывет за пределами его верстки, не считаю за багами парсера.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Всем спасибо за помощь.

Уже все настроил, все работает.

 

123.png

 

Правда, теперь осталось настроить что бы юзерам не приходилось указывать переносы вручную ибо после того как я добавил :

$parser->parse_nl2br = 0;

пропали не только переносы которые появились из-за подключенных парсеров, но и те которые были в контенте дополнительных полей.

Поделиться сообщением


Ссылка на сообщение
Ritsuka, а смысл вешать на каждое по отдельности, если там на сколько я понял во всех доп полях есть ббкоды.

Первое, что пришло бы мне на ум, увидев такое решение - поставить в самом первом поле открывающий spolier, а в последнем - закрывающий, и таким образом здорово испортить админу форума настроение :)

 

Т.е. я веду мысль не к избирательности применения (что, кстати, тоже полезно), а к отдельной обработке полей.

 

Или движок 2.*.* настолько сильно отличается от 3.*.* ?

Тройка переписана почти целиком. И я никогда не работал с двойкой всерьез, увы, поэтому не могу помочь иначе кроме как общими советами)

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...