Отображение картинок в модуле mod_articles_category (в introtext)

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

Для начала откроем файл /modules/mod_articles_category/helper.php

Именно этим файлом думает модуль. Там, в строке 249 (там, где function _cleanIntrotext() ) надо добавить тег <img> к функции strip_tags.

Теперь в наш default.php попадает строка с изображением. Но (О, БОЖЕ!) изображение имеет атрибуты ширины и высоты! Сейчас откроем файл /templates/ШАБЛОН/html/mod_articles_category/default.php

или, если мы не подсуетились с правильным изменением вида модулей и компонентов, открываем этот файл /modules/mod_articles_category/tmpl/default.php

и со строки 118 добавляем код

 

<?php 
  //выдергиваем изображения в массив
  preg_match_all('#<img[^<]+?>#', $item->displayIntrotext, $imageIntro);
  //убираем изображения из строки с интротекстом
  $item->displayIntrotext = strip_tags($item->displayIntrotext, '<a><em><strong>');

  //убираем из атрибутов высоту изображения
  $img = preg_replace('#height="*(.+?)"#si',"",$imageIntro[0][0]);

  //меняем ширину на свою (120px)
  $img = preg_replace('#width="*(.+?)"#si',"width=\"120px\"",$img);

  //выводим картинку эхом
  echo $img;
?>

должно получиться

<?php if ($params->get('show_introtext')) :?>
  <?php 
    //выдергиваем изображения в массив
    preg_match_all('#<img[^<]+?>#', $item->displayIntrotext, $imageIntro);
    //убираем изображения из строки с интротекстом
    $item->displayIntrotext = strip_tags($item->displayIntrotext, '<a><em><strong>');

    $img = preg_replace('#height="*(.+?)"#si',"",$imageIntro[0][0]);
    $img = preg_replace('#width="*(.+?)"#si',"width=\"120px\"",$img);
    echo $img;
  ?>
  <p>
    <?php echo $item->displayIntrotext; ?>
  </p>
<?php endif; ?>

Картинку вывожу эхом, только для примера.

Самое ценное в этом всем добре, пожалуй — это регулярное выражение для поиска атрибута ширины (width) и высоты (height) в теге img. Начинающим, вероятно, будет полезно 🙂

Ну все, наслаждаемся 🙂

lt;img[^

0

Отображение картинок в модуле mod_articles_category (в introtext): 2 комментария

  1. Мария

    Большое спасибо!!
    Я вообще обошлась только первым изменением 🙂
    >>Именно этим файлом думает модуль. Там, в строке 249 (там, где function _cleanIntrotext() ) надо добавить тег к функции strip_tags.

Добавить комментарий