Добавление изображений к модулю «Материалы - Самые читаемые»

Для вывода популярных материалов например, в сайдбаре можно использовать готовое решение в виде модуля (например, BT Content Slider) или воспользоваться модулем, который идет в комплекте с самой CMS Joomla. Модуль называется «Материалы - Самые читаемые» (mod_articles_popular). Он по умолчанию не выводит изображения, а это как-то не так красиво воспринимается. Поэтому у меня возникло желание добавить изображения в стандартный модуль.

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

Сам я не программист. Поэтому извините, если что не так. Рабочий вариант нашел на форуме https://joomlaforum.ru/.

Вот его код:

<ul class="mostread<?php echo $moduleclass_sfx; ?>">
<?php foreach ($list as $item) : ?>
<li>
<?php preg_match_all('#<img[^<]+?>#', $item->introtext, $matches);?>//получаем изображение из вводного текста
<span class="mostread_img"><?php echo $matches[0][0];?></span>//выводим изображение
<span class="time"><?php echo $item->created; ?></span>//выводим дату создания материала
<a href="<?php echo $item->link; ?>">
<?php echo $item->title; ?></a>
</li>
<?php endforeach; ?>
</ul>

Рассмотрим по порядку:

1. Копируем файл default.php из папки: ваш сайт/modules/mod_articles_popular/tmpl в папку ваш сайт/templates/название вашего шаблона/html/mod_articles_popular (если папка в шаблоне отсутствует, то создайте ее).

2. Заменяем код в файле default.php.

Код:

<ul class="mostread<?php echo $moduleclass_sfx; ?> mod-list">
<?php foreach ($list as $item) : ?>
    <li itemscope itemtype="https://schema.org/Article">
        <a href="<?php echo $item->link; ?>" itemprop="url">
            <span itemprop="name">
                <?php echo $item->title; ?>
            </span>
        </a>
    </li>
<?php endforeach; ?>
</ul>

Заменяем на:

<ul class="mostread<?php echo $moduleclass_sfx; ?>">
<?php foreach ($list as $item) : ?>
<li>
<?php preg_match_all('#<img[^<]+?>#', $item->introtext, $matches);?>//получаем изображение из вводного текста
<span class="mostread_img"><?php echo $matches[0][0];?></span>//выводим изображение
<span class="time"><?php echo $item->created; ?></span>//выводим дату создания материала
<a href="<?php echo $item->link; ?>">
<?php echo $item->title; ?></a>
</li>
<?php endforeach; ?>
</ul>

Но я заменил на немного другой:

<ul class="mostread<?php echo $moduleclass_sfx; ?> mod-list">
<?php foreach ($list as $item) : ?>
        <a href="<?php echo $item->link; ?>" itemprop="url">
            <span itemprop="name">
            <span class="time">&#128064 <?php echo $item->hits; ?> </span> <br />
                <?php echo $item->title; ?> <br />
                <?php preg_match_all('#<img[^<]+?>#', $item->introtext, $matches);?>
<span class="mostread_img"><?php echo $matches[0][0];?></span> <br />
            </span>
        </a>
<?php endforeach; ?>
</ul>

Его результат вы можете видеть справа в сайдбаре сайта.

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

Удачи.