Перейти к содержимому
Русский язык для Invision Community 5

IP Links как сделать чтобы ссылки были в верном формате

Гуру подскажите как добится чтобы заработало следующее ...

 

Есть модуль IP Links в котором создаются ссылки, но модуль я уже изменил и теперь вывожу в название ссылки не урл а ее описание которое заполнено вот так

 

post-16112-0-58827500-1305452291_thumb.png

 

Становится понятно что оформленная ссылка не отображается правильно

 

Потом зайдя в саму ссылку видим что все верно

 

post-16112-0-95621200-1305452316_thumb.png

 

Смотрим код шаблона и там в деталях ссылки она формируется так

 

<tr>

<td class='linkrow1' valign='top'>{$this->lang->words[ 'description' ]}</td>

<td class='linkrow2'>{$link[ 'link_description' ]}</td>

</tr>

 

Теперь код как она формируется в списке ссылок

 

<td class='linkrow2'>{$link[ 'link_description' ]}</td>

 

Вроде бы все правильно, но вот не хотит выводить как нада и все.

Скорее всего какая то наследственность от выше объектов но вот понять не могу что влияет и как найти ....

Подскажите куда копать...

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

Подключать парсер BBCode надо. По хорошему - с кешированием.

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

  • Автор

Подскажите как это можно сделать ...

  • Автор

Вот код что выводит правильно

 

{parse js_module="rating"}

{parse js_module="editor"}

<script type="text/javascript">

//<![CDATA[

// Editor JS: Only needs to be done once per page

{parse template="editorJS" group="editors" params=""}

//]]>

</script>

{parse template="linksMessages" group="skin_links" params="$messages"}

 

<tr>

<td>{parse replacement="{$link[ 'statusIcon' ]}"}</a></td>

 

 

<td>{$link[ 'link_description' ]}</td>

 

 

<td class='stats'><ul><li>{$link[ 'link_hits' ]}

<a href='{parse url="showlink={$link[ 'link_id' ]}" template="showlink" seotitle="{$link[ 'link_seo_title' ]}" base="publicWithApp"}'>

{$this->lang->words[ 'hits' ]}</li></ul></a>

 

</td>

<if test="$this->memberData[ 'g_l_mod_links' ] == 1 && $showMulti == 1">

<td class='short'><input type='checkbox' class='input_checkbox topic_mod' id='tmod_{$link[ 'link_id' ]}' /></td>

</if>

</tr>

 

 

Нет ничего такого чтобы заставило отрабатывать вв коды ...

Нет ничего такого чтобы заставило отрабатывать вв коды ...

Совершенно верно. BBCode обрабатываются в скриптах, а не в шаблонах. При этом в общем листинге в коде парсера нет (и это логично - слишком много ресурсов будет есть, да и не нужен, обычно), а при открытии конкретной ссылки - есть.

 

Т.е. в файле /admin/applications_addon/other/links/modules_public/links/links.php есть строки 216-224:

	/* Init for link description */
	IPSText::getTextClass( 'bbcode' )->parse_html				= 0;
	IPSText::getTextClass( 'bbcode' )->parse_nl2br			= 1;
	IPSText::getTextClass( 'bbcode' )->parse_bbcode			= 1;
	IPSText::getTextClass( 'bbcode' )->parse_smilies		= ( $this->settings[ 'l_emo_ldesc' ] == 1 ) ? 1 : 0;
	IPSText::getTextClass( 'bbcode' )->parsing_section	= 'links_ldesc';

	$link[ 'link' ][ 'link_description' ] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $link[ 'link' ][ 'link_description' ] );
	$link[ 'link' ][ 'link_description' ] = IPSText::getTextClass( 'bbcode' )->memberViewImages( $link[ 'link' ][ 'link_description' ] );

 

А в файле /admin/applications_addon/other/links/modules_public/links/categories.php ничего такого нет. Где-то здесь ~338:

	while ( $row = $this->DB->fetch( $fetchLinks ) )
	{
		$row = $this->links->parseLink( $row );

		$links[ $row[ 'link_id' ] ] = $row;		
		$linkIds[] = $row[ 'link_id' ];
	}

 

Сделать что-то вроде этого:

	/* Init for link description */
	IPSText::getTextClass( 'bbcode' )->parse_html				= 0;
	IPSText::getTextClass( 'bbcode' )->parse_nl2br			= 1;
	IPSText::getTextClass( 'bbcode' )->parse_bbcode			= 1;
	IPSText::getTextClass( 'bbcode' )->parse_smilies		= ( $this->settings[ 'l_emo_ldesc' ] == 1 ) ? 1 : 0;
	IPSText::getTextClass( 'bbcode' )->parsing_section	= 'links_ldesc';

	while ( $row = $this->DB->fetch( $fetchLinks ) )
	{
		$row = $this->links->parseLink( $row );

		$links[ $row[ 'link_id' ] ] = $row;		
		$links[ $row[ 'link_id' ] ][ 'link_description' ] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $links[ $row[ 'link_id' ] ][ 'link_description' ] );
		$links[ $row[ 'link_id' ] ][ 'link_description' ] = IPSText::getTextClass( 'bbcode' )->memberViewImages( $links[ $row[ 'link_id' ] ][ 'link_description' ] );

		$linkIds[] = $row[ 'link_id' ];
	}

 

Правда все это будет заметно грузить сервер (почему и не реализовано изначально).

  • Автор

Спасибо большое, все работает ...

  • Автор

А как можно вообще избавится от категорий, чтобы ссылки были сразу как заходишь ????

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

Вы отказались уже почти от всех функций этого модуля. Если убирать еще и категории - может, имеет смысл просто посмотреть в сторону чего-то попроще? Например, (DP31) Custom Pages 1.2.0? Просто оформите и выведите там нужные вам ссылки, и все..)

  • Автор

Мне нужен 2 уровень ссылок ... а так получается все равно будет 3-ий ...

 

И данный модуль уже задействован поэтом у использовать его не получится ...

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.