Перейти к контенту

Модернизируем [img] на обтекание текстом. для v2.3.4


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

Проблема: при публикации текстов надо вставлять картинки. В результате остается куча свободного места, а ведь туда можно разместить текст. Вот это и исправим.

 

Теория: [ img ]url[ /img ] преобразуются в < img src="url">. Для обтекания текстом надо дописать align="сторона".

 

Как использовать: lefturl[/img] или righturl[/img]

 

Как делать:

 

Изменяем файлы:

sources/classes/bbcode/class_bbcode.php

sources/classes/bbcode/class_bbcode_core.php

 

================================================================================

============================================

sources/classes/bbcode/class_bbcode.php

================================================================================

============================================

В функции function pre_db_parse( $txt="" )

Ищем строку:

$txt = preg_replace_callback( "#\[img\](.+?)\[/img\]#i" , array( &$this, 'regex_check_image' ), $txt );

 

 

Меняем на:

$txt = preg_replace_callback( "#\(left|right)\(.+?)\[/img\]#i" , array( &$this, 'regex_check_image' ), $txt );

$txt = preg_replace_callback( "#\[img\](.+?)\[/img\]#i" , array( &$this, 'regex_check_image' ), $txt );

 

(перед тем как сохранить в БД картинка превращается в HTML тег! и сохраняется, так вот эта строка ее и превращает)

================================================================================

============================================

 

Ищем строку:

$txt = preg_replace( "#<img(?:.+?)src=[\"'](\S+?)['\"][^>]+?>#is" , "\[img\]\\1\[/img\]" , $txt );

 

Меняем на:

 

$txt = preg_replace( "#<img align=[\"'](left|right)[\"'](?:.+?)src=[\"'](\S+?)['\"][^>]+?>#is" , "\\\1\\2\[/img\]" , $txt );

$txt = preg_replace( "#<img(?:.+?)src=[\"'](\S+?)['\"][^>]+?>#is" , "\[img\]\\1\[/img\]" , $txt );

 

(эта штука делает обратный процесс. когда бы из БД пытаемся редактировать, то она находит тег img и обратно его возвращает в

BB код. Тут это и делается.)

 

================================================================================

============================================

 

 

================================================================================

============================================

sources/classes/bbcode/class_bbcode_core.php

================================================================================

============================================

Ищем функцию:

function regex_check_image( $matches=array() )

================================================================================

============================================

В её начале ищем строку

 

$url = $matches[1];

 

Заменяем на

if (isset($matches[2]) && (($matches[1]=="left")||(($matches[1]=="right"))))

{

$alt = 'align="'.$matches[1].'" ';

$url = $matches[2];

} else

{

$alt = "";

$url = $matches[1];

};

 

 

================================================================================

============================================

Ищем строку

return "<img src=\"$url\" border=\"0\" class=\"". $_class ."\" />";

Заменяем на

return "<img ".$alt."src=\"$url\" border=\"0\" class=\"". $_class ."\" />";

 

 

Ну и всё.

 

Вобще вещь полезная, рекомендуется ее встраивать в новые версии форума, особенно если адаптировать её ещё и к Прикрепленным файлам.

 

Глюки: Вобщем то при эксплуатации наблюдал тока один глюк, если процитировать это (и если мало текста вместе с картинкой), то рамка цитаты может не обхватить картинку, но это уже глюк html`я.

Ссылка на комментарий
Поделиться на других сайтах

Про тег code вы не знаете?
Ссылка на комментарий
Поделиться на других сайтах

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

Надеюсь понятно описал :D

Ссылка на комментарий
Поделиться на других сайтах

Про тег code вы не знаете?

:) поясни, я в танке :D это мои первые попытки чёнить изобразить.

 

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

Надеюсь понятно описал ;)

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

Ссылка на комментарий
Поделиться на других сайтах

Про тег code вы не знаете?

;) поясни, я в танке :D это мои первые попытки чёнить изобразить.

Своеобразные попытки, раз вы даже со стандартными функциями не разобрались :)

[code ]тут код[/code ]

, кнопка рядом с кнопкой цитаты в редакторе.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • 2 недели спустя...
  • 3 недели спустя...

и еще глюк, при вставке большого изображения, оно автоматически уменшается, так вот если стоит алигн райт, то картинка уплывает от дива, в котором пишется всякая хрень и на которую надо кликать для увеличения +).

В общем делать надо не так, изначально надо обернуть img в div с float: right или left.

Тогда Все корректна отображается.

Есть еще баг. Если пост не наполнен то подпись тоже обтекает текст. В связи с этим необходимо добавить во все используемые шаблоны перед подписью пустой див с style="clear: both;" Что даст нам этого избежать.

На даннный момент этого нет в коде, а просто все воялось прям в браузере.

Честного говоря не могу сказать как поведет себя авторейсазер, правильно ли он изменит код. Да и трудновато будет написать регексп для меня.

 

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

я не силен в этих штучках)

В общем итоге мы получаем это, как теперь это собрать обртано ?

<div style="float: right;"><img border="0" class="linked-image" src="http://main.sky/rip/img/logo.png"/></div>

Пытался так, не фыркает

preg_replace( "#<div style=[\"']float:(left|right)[\"'](?:.+?)><img src=[\"'](\S+?)['\"].+?"."></div>#", "\[IMG=\\1\]\\2\[/IMG\]", $txt );

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Arhar

 

А возможно обтекание текста реализовать в Блогах?

Ссылка на комментарий
Поделиться на других сайтах

Парсер единый, что мешает? :D
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

что то у меня странно как отрабатывает код мода - в опере вроде нормально (текст обтекает картинку) а вот в IE оптекать не хочет

и в опере текст прижимается вплотную к картинке и получается не очень красиво..

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
а они все изобретали и изобретали камень, который потом пытались прикрутить к палке

http://www.ibresource.ru/db/630/

 

Совместимость: 2.1.x

а на 2.3.4 встанет?

Ссылка на комментарий
Поделиться на других сайтах

  • 2 года спустя...

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.