BBCode img, обтекание текстом и alt атрибут в InstantCMS

BBCode img, обтекание текстом и alt атрибут в InstantCMS

13.04.2013

В InstantCMS при редактировании страниц, постов и записей не в административной части сайта используется панель BBкодов, но у нее очень ограниченный функционал. Хотя на самом деле функционал присутствует, но разработчики упустили из виду один момент. 

Вся обработка BBкодов происходит при сохранении материала, в файле bbcode.lib.php, расположенном в директории /includes/bbcode/.

Обработчиком BBкода IMG выступает функция img_2html.

Обтекание текстом задается атрибутом align, то есть для задания изображения с обтеканием используется такая конструкция:

[ IMG align=left ]путь к изображению[ /IMG ]

В функции img_2html есть строки для задания выравнивания:

 if (isset($elem['attrib']['align'])){
       $align       = $this->cleanAttrValue($elem['attrib']['align']);
       $div_style   = "float:".$align.";overflow:hidden;";
       $div_style  .= "margin-" .($align=='left' ? 'right' : 'left'). ":15px; margin-bottom:10px; ";
}

Вся проблема в том, что при изменении размера изображения этот стиль не применяется, а размер изменяется если изображение шириной или высотой больше 340 пикселей.

Итак, как же это исправить? Легко, просто добавить $div_style в строку:

$html = '<div class="forum_zoom" style="width:'.$width.'px;">'."";

Получим:

$html = '<div class="forum_zoom" style="width:'.$width.'px;'.$div_style.'">'."";

Также просто можно добавить и атрибут alt для изображения, сначала заменим:

$attr = 'alt=""';

следующим:

$alt = $this->cleanAttrValue($elem['attrib']['alt']);
   $attr = 'alt="'.$alt.'"';

Далее, для правильного задания атрибута alt нужно заменить строку:

$html .= '<div><a href="'.$src.'""><img src="'.$src.'" '.$this->cleanAttrValue($attr).' width="'.$width.'" height="'.$height.'" border="0"/></a></div>'."";

Меняем на:

$html .= '<div><a href="'.$src.'"" rel="lightbox"><img src="'.$src.'" '.$attr.' width="'.$width.'" height="'.$height.'" border="0"/></a></div>'."
";

Ну и в дополнение там же подключен lightbox (rel="lightbox")

Все довольно просто, также можно и добавить свои примочки другим BBкодам.


Узнал сам - поделись с друзьями!

Возврат к списку